dictdDBs.wiktionary: add updateScript
This commit is contained in:
parent
c7c77ab029
commit
f6f8170a60
@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
|
|||||||
buildInputs = [ python dict glibcLocales ];
|
buildInputs = [ python dict glibcLocales ];
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
|
passthru.updateScript = ./update.sh;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "DICT version of English Wiktionary";
|
description = "DICT version of English Wiktionary";
|
||||||
homepage = "http://en.wiktionary.org/";
|
homepage = "http://en.wiktionary.org/";
|
||||||
|
42
pkgs/servers/dict/wiktionary/latest_version.py
Normal file
42
pkgs/servers/dict/wiktionary/latest_version.py
Normal file
@ -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)
|
7
pkgs/servers/dict/wiktionary/update.sh
Executable file
7
pkgs/servers/dict/wiktionary/update.sh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i bash -p common-updater-scripts python3
|
||||||
|
|
||||||
|
set -ueo pipefail
|
||||||
|
|
||||||
|
version="$(python "$(dirname "${BASH_SOURCE[0]}")"/latest_version.py)"
|
||||||
|
update-source-version dictdDBs.wiktionary "$version"
|
Loading…
x
Reference in New Issue
Block a user