From 1bb82a6b54e53d683c3041a1576be64ae234abee Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Sat, 2 Oct 2021 17:30:39 +0200 Subject: SearXNG: searxng_extra --- searxng_extra/update/update_firefox_version.py | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 searxng_extra/update/update_firefox_version.py (limited to 'searxng_extra/update/update_firefox_version.py') diff --git a/searxng_extra/update/update_firefox_version.py b/searxng_extra/update/update_firefox_version.py new file mode 100755 index 000000000..6acfe76ce --- /dev/null +++ b/searxng_extra/update/update_firefox_version.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +import json +import requests +import re +from os.path import dirname, join +from urllib.parse import urlparse, urljoin +from distutils.version import LooseVersion, StrictVersion +from lxml import html +from searx import searx_dir + +URL = 'https://ftp.mozilla.org/pub/firefox/releases/' +RELEASE_PATH = '/pub/firefox/releases/' + +NORMAL_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?$') +# BETA_REGEX = re.compile('.*[0-9]b([0-9\-a-z]+)$') +# ESR_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?esr$') + +# +useragents = { + "versions": (), + "os": ('Windows NT 10.0; WOW64', + 'X11; Linux x86_64'), + "ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}" +} + + +def fetch_firefox_versions(): + resp = requests.get(URL, timeout=2.0) + if resp.status_code != 200: + raise Exception("Error fetching firefox versions, HTTP code " + resp.status_code) + else: + dom = html.fromstring(resp.text) + versions = [] + + for link in dom.xpath('//a/@href'): + url = urlparse(urljoin(URL, link)) + path = url.path + if path.startswith(RELEASE_PATH): + version = path[len(RELEASE_PATH):-1] + if NORMAL_REGEX.match(version): + versions.append(LooseVersion(version)) + + list.sort(versions, reverse=True) + return versions + + +def fetch_firefox_last_versions(): + versions = fetch_firefox_versions() + + result = [] + major_last = versions[0].version[0] + major_list = (major_last, major_last - 1) + for version in versions: + major_current = version.version[0] + if major_current in major_list: + result.append(version.vstring) + + return result + + +def get_useragents_filename(): + return join(join(searx_dir, "data"), "useragents.json") + + +useragents["versions"] = fetch_firefox_last_versions() +with open(get_useragents_filename(), "w") as f: + json.dump(useragents, f, indent=4, ensure_ascii=False) -- cgit v1.2.3 From 955eab8240b4dd903e431b85f6daf35c8672d39c Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Sun, 3 Oct 2021 15:12:09 +0200 Subject: [mod] searxng_extras - minor improvements - fix docs/searxng_extra/standalone_searx.py.rst - add SPDX tag - pylint standalone_searx.py and update_wikidata_units.py Signed-off-by: Markus Heiser --- searxng_extra/update/update_firefox_version.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'searxng_extra/update/update_firefox_version.py') diff --git a/searxng_extra/update/update_firefox_version.py b/searxng_extra/update/update_firefox_version.py index 6acfe76ce..6a446947c 100755 --- a/searxng_extra/update/update_firefox_version.py +++ b/searxng_extra/update/update_firefox_version.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# SPDX-License-Identifier: AGPL-3.0-or-later import json import requests @@ -16,7 +17,7 @@ NORMAL_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?$') # BETA_REGEX = re.compile('.*[0-9]b([0-9\-a-z]+)$') # ESR_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?esr$') -# +# useragents = { "versions": (), "os": ('Windows NT 10.0; WOW64', -- cgit v1.2.3