Skip to content
Snippets Groups Projects
Commit e1bf5ca3 authored by Mathieu Loiseau's avatar Mathieu Loiseau
Browse files

pourri, seules les lignes 762 et 763 valent le coup.

parent 5750b723
No related branches found
No related tags found
No related merge requests found
......@@ -522,10 +522,10 @@ class ParserContext:
class Wikstraktor:
@classmethod
def get_instance(cls, wiki_language, entry_language):
def get_instance(cls, wiki_language, entry_language, existing_entries=None):
try:
m_name = f"{wiki_language}_{entry_language}".capitalize()
instance = getattr(importlib.import_module(f"parsers.{m_name.lower()}"), f"{m_name}_straktor")()
instance = getattr(importlib.import_module(f"parsers.{m_name.lower()}"), f"{m_name}_straktor")(existing_entries)
instance.version = the_version
instance.log = Wikstraklog(the_version, entry_language, wiki_language)
except ModuleNotFoundError:
......@@ -533,8 +533,11 @@ class Wikstraktor:
instance = None
return instance
def __init__(self):
self.entries = []
def __init__(self, existing_entries=None):
if existing_entries = None:
self.entries = []
else:
self.entries = existing_entries
self.pwb = pywikibot
self.wtp = wikitextparser
self.parserContext = None
......@@ -722,14 +725,23 @@ class Wikstraktor:
def __str__(self):
return self.export()
def export(self, id=True, ascii=False, compact=False):
def serialize(self, id=True):
res = []
for e in self.entries:
res.append(e.serializable(id))
return res
def export(self, id=True, ascii=False, compact=False):
if compact:
return json.dumps(res, ensure_ascii=ascii)
return json.dumps(self.serialize(id), ensure_ascii=ascii)
else:
return json.dumps(res, ensure_ascii=ascii, indent=4)
return json.dumps(self.serialize(id), ensure_ascii=ascii, indent=4)
def export_multi_wikt(serialized, ascii=False, compact=False):
if compact:
return json.dumps(serialized, ensure_ascii=ascii)
else:
return json.dumps(serialized, ensure_ascii=ascii, indent=4)
if __name__ == "__main__":
import argparse
......@@ -747,11 +759,17 @@ 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")
args = parser.parse_args()
wiki_languages = args.wiki_language.split("+")
languages = args.language.split("+")
if args.mot != None:
w = Wikstraktor.get_instance(args.wiki_language, args.language)
resp = None
if w.fetch(args.mot) > 0:
resp = w.export(not args.no_id, args.force_ascii, args.compact)
resp = []
for w_l in wiki_languages:
for l in languages :
w = Wikstraktor.get_instance(w_l, l)
if w.fetch(args.mot) > 0:
resp += w.serialize(not args.no_id)
if len(resp) > 0 :
resp = export_multi_wikt(resp, args.force_ascii, args.compact)
if args.destination_file != None:
f = open(args.destination_file, "w")
f.write(resp)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment