blob: 30596b57ae8e978bb99522d709dbdb4ef5800985 [file] [log] [blame]
Mike Frysinger587bbd02022-02-28 01:52:16 -05001#!/usr/bin/env python3
Kevin Baileyb53f0de2016-03-22 10:44:59 -07002# Copyright 2015 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""A simple script for downloading latest dictionaries."""
7
8import glob
9import os
Mike Frysinger587bbd02022-02-28 01:52:16 -050010from pathlib import Path
Mike Frysinger1699d072022-03-01 23:42:30 -050011import shutil
Kevin Baileyb53f0de2016-03-22 10:44:59 -070012import sys
Mike Frysinger587bbd02022-02-28 01:52:16 -050013import urllib.request
14import zipfile
Kevin Baileyb53f0de2016-03-22 10:44:59 -070015
16
Mike Frysinger587bbd02022-02-28 01:52:16 -050017DIR = Path(__file__).resolve().parent
Mike Frysinger1699d072022-03-01 23:42:30 -050018CACHE_DIR = DIR / "cache"
Chris Nardia9bac572017-10-14 16:47:23 -040019
Mike Frysinger587bbd02022-02-28 01:52:16 -050020
21DICTIONARIES = (
Mike Frysingerffe62142022-02-28 02:03:44 -050022 "https://sourceforge.net/projects/wordlist/files/speller/2020.12.07/"
23 "hunspell-en_US-2020.12.07.zip",
24 "https://sourceforge.net/projects/wordlist/files/speller/2020.12.07/"
25 "hunspell-en_CA-2020.12.07.zip",
26 "https://sourceforge.net/projects/wordlist/files/speller/2020.12.07/"
27 "hunspell-en_GB-ise-2020.12.07.zip",
28 "https://sourceforge.net/projects/wordlist/files/speller/2020.12.07/"
29 "hunspell-en_GB-ize-2020.12.07.zip",
30 "https://sourceforge.net/projects/wordlist/files/speller/2020.12.07/"
31 "hunspell-en_AU-2020.12.07.zip",
Mike Frysinger587bbd02022-02-28 01:52:16 -050032 "https://github.com/b00f/lilak/releases/latest/download/fa-IR.zip",
33 # NOTE: need to remove IGNORE from uk_UA.aff
Mike Frysinger1699d072022-03-01 23:42:30 -050034 # TODO: This archive no longer exists.
35 # "https://github.com/brown-uk/dict_uk/releases/latest/download/"
36 # "hunspell-uk_UA.zip",
Mike Frysinger587bbd02022-02-28 01:52:16 -050037)
38
39
40def main(argv):
41 if argv:
42 sys.exit(f"{__file__}: script takes no args")
43 os.chdir(DIR)
44
Mike Frysinger1699d072022-03-01 23:42:30 -050045 CACHE_DIR.mkdir(exist_ok=True)
Mike Frysinger587bbd02022-02-28 01:52:16 -050046
Mike Frysinger1699d072022-03-01 23:42:30 -050047 for url in DICTIONARIES:
48 cache = CACHE_DIR / url.rsplit("/", 1)[1]
49 if not cache.exists():
50 print(f"Downloading {url} to cache {cache}")
51 tmp = cache.with_suffix(".tmp")
52 with urllib.request.urlopen(url) as response:
53 tmp.write_bytes(response.read())
54 tmp.rename(cache)
55
56 print(f"Extracting {cache.name}")
57 zipfile.ZipFile(cache).extractall()
58
59 for name in glob.glob("*en_GB-ise*"):
60 os.rename(name, name.replace("-ise", ""))
61 for name in glob.glob("*en_GB-ize*"):
62 os.rename(name, name.replace("-ize", "_oxendict"))
63 for name in glob.glob("fa-IR/*fa-IR.*"):
64 os.rename(name, os.path.basename(name.replace("-", "_")))
65 shutil.rmtree("fa-IR")
Mike Frysinger587bbd02022-02-28 01:52:16 -050066
67 return 0
68
Kevin Baileyb53f0de2016-03-22 10:44:59 -070069
70if __name__ == "__main__":
Mike Frysinger587bbd02022-02-28 01:52:16 -050071 sys.exit(main(sys.argv[1:]))