about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py')
-rw-r--r--nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py b/nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py
new file mode 100644
index 000000000000..2833a1e05b03
--- /dev/null
+++ b/nixpkgs/pkgs/servers/dict/wiktionary/latest_version.py
@@ -0,0 +1,42 @@
+import subprocess
+
+from html.parser import HTMLParser
+from os.path import abspath, dirname
+from urllib.request import urlopen
+
+class WiktionaryLatestVersionParser(HTMLParser):
+    def __init__(self, current_version, *args, **kwargs):
+        self.latest_version = current_version
+        super().__init__(*args, **kwargs)
+
+
+    def handle_starttag(self, tag, attrs):
+        if tag != 'a':
+            return
+
+        href = dict(attrs)['href'][0:-1]
+        if href == 'latest':
+            return
+
+        self.latest_version = max(self.latest_version, href)
+
+
+def nix_prefetch_url(url, algo='sha256'):
+    """Prefetches the content of the given URL."""
+    print(f'nix-prefetch-url {url}')
+    out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url])
+    return out.decode('utf-8').rstrip()
+
+
+current_version = subprocess.check_output([
+    'nix', 'eval', '--raw',
+    '-f', dirname(abspath(__file__)) + '/../../../..',
+    'dictdDBs.wiktionary.version',
+]).decode('utf-8')
+
+parser = WiktionaryLatestVersionParser(current_version)
+
+with urlopen('https://dumps.wikimedia.org/enwiktionary/') as resp:
+    parser.feed(resp.read().decode('utf-8'))
+
+print(parser.latest_version)