diff --git a/README.md b/README.md index 3b52a76f0bedcfb8c7e26c2cf8892c5b3e8c6018..f6916edc0925ffc108586cc8724207c00fde9907 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,14 @@ str(f) #convert content to json #### Bash ``` usage: wikstraktor.py [-h] [-l LANGUAGE] [-w WIKI_LANGUAGE] [-m MOT] - [-f DESTINATION_FILE] [-A] [-C] + [-f DESTINATION_FILE] [-A] [-C] [-n] [-r] [-L LOG_FILE] Interroger un wiktionnaire ex : ‣./wikstraktor.py -m blue - ‣./wikstraktor.py -m blue -f blue.json -A -C - ‣./wikstraktor.py -l en -w fr -m blue -f blue.json -A -C + ‣./wikstraktor.py -m blue -f blue.json -AC + ‣./wikstraktor.py -l en -w fr -m yellow -L /var/log/wikstraktor.sqlite + ‣./wikstraktor.py -l en -w fr -m blue -f blue.json -n -ACr options: -h, --help show this help message and exit @@ -75,6 +76,14 @@ options: le fichier dans lequel stocker le résultat -A, --force_ascii json avec que des caractères ascii -C, --compact json sans indentation + -n, --no_id json sans id + -r, --follow_redirections + pour suivre les redirections (ex: did → do) + -L LOG_FILE, --log_file LOG_FILE + le fichier sqlite où stocker les log + (bien vérifier que l'utilisateur qui lance le script a + accès en écriture à ce fichier + et au dossier qui le contient) ``` ### Wikstraktor Server diff --git a/requirements.txt b/requirements.txt index 9a6b3d4292473c38ba84133651fa862ffb47e31b..89d5182e7e7691cc8c9f3871d3a580ad8d2027ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ #necessary pywikibot>=8.1.2 wikitextparser>=0.51.0 -importlib>=1.0.4 +#importlib>=1.0.4 provided by default #for setup script GitPython==3.1.31 diff --git a/wikstraktor.py b/wikstraktor.py index 35dfe17c83d3e27c88bb4a558b80ee3c63363717..27d43befcf92fa4dd69aa614297828b6e8224d68 100755 --- a/wikstraktor.py +++ b/wikstraktor.py @@ -534,12 +534,12 @@ class ParserContext: class Wikstraktor: @classmethod - def get_instance(cls, wiki_language, entry_language): + def get_instance(cls, wiki_language, entry_language, logfile="wikstraktor.sqlite"): try: m_name = f"{wiki_language}_{entry_language}".capitalize() instance = getattr(importlib.import_module(f"parsers.{m_name.lower()}"), f"{m_name}_straktor")() instance.version = the_version - instance.log = Wikstraklog(the_version, entry_language, wiki_language) + instance.log = Wikstraklog(the_version, entry_language, wiki_language, logfile) except ModuleNotFoundError: print(f"parsers.{m_name.lower()} module not found or {m_name}_straktor not found in module") instance = None @@ -769,7 +769,8 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(formatter_class=RawTextHelpFormatter, description="""Interroger un wiktionnaire \033[1m\033[32mex :\033[0m ‣\033[0m\033[32m./wikstraktor.py -m blue\033[0m - ‣\033[0m\033[32m./wikstraktor.py -m blue -f blue.json -A -C\033[0m + ‣\033[0m\033[32m./wikstraktor.py -m blue -f blue.json -AC\033[0m + ‣\033[0m\033[32m./wikstraktor.py -l en -w fr -m yellow -L /var/log/wikstraktor.sqlite\033[0m ‣\033[0m\033[32m./wikstraktor.py -l en -w fr -m blue -f blue.json -n -ACr\033[0m""") parser.add_argument("-l", "--language", help="la langue du mot", type=str, default = "en") parser.add_argument("-w", "--wiki_language", help="la langue du wiki", type=str, default = "en") @@ -779,10 +780,15 @@ if __name__ == "__main__": parser.add_argument("-C", "--compact", help="json sans indentation", action="store_true") parser.add_argument("-n", "--no_id", help="json sans id", action="store_true") parser.add_argument("-r", "--follow_redirections", help="pour suivre les redirections (ex: did → do)", action="store_true") + parser.add_argument("-L", "--log_file", help="le fichier sqlite où stocker les log\n(bien vérifier que l'utilisateur qui lance le script a\naccès en écriture à ce fichier\net au dossier qui le contient)", type=str, default=None) + args = parser.parse_args() if args.mot != None: - w = Wikstraktor.get_instance(args.wiki_language, args.language) + if args.log_file != None: + w = Wikstraktor.get_instance(args.wiki_language, args.language, args.log_file) + else: + w = Wikstraktor.get_instance(args.wiki_language, args.language) resp = None if w.fetch(args.mot, args.follow_redirections) > 0: resp = w.export(not args.no_id, args.force_ascii, args.compact) diff --git a/wikstraktor.sqlite b/wikstraktor.sqlite index 660ec27727267941a1d46949f21b24669ef6d801..92143d2d1b070c712a39af7d177eb677f90613f7 100644 Binary files a/wikstraktor.sqlite and b/wikstraktor.sqlite differ