def open(self, filename, encoding="", substyle=True): from pyglossary.plugin_lib.readmdict import MDX, MDD self._filename = filename self._encoding = encoding self._substyle = substyle self._mdx = MDX(filename, self._encoding, self._substyle) filenameNoExt, ext = splitext(self._filename) mddBase = "".join([filenameNoExt, extsep]) for fname in (f"{mddBase}mdd", f"{mddBase}1.mdd"): if isfile(fname): self._mdd.append(MDD(fname)) mddN = 2 while isfile(f"{mddBase}{mddN}.mdd"): self._mdd.append(MDD(f"{mddBase}{mddN}.mdd")) mddN += 1 log.info(f"Found {len(self._mdd)} mdd files") log.debug("mdx.header = " + pformat(self._mdx.header)) # for key, value in self._mdx.header.items(): # key = key.lower() # self._glos.setInfo(key, value) try: title = self._mdx.header[b"Title"] except KeyError: pass else: self._glos.setInfo("name", title) desc = self._mdx.header.get(b"Description", "") if desc: self._glos.setInfo("description", desc)
def loadLinks(self): from pyglossary.plugin_lib.readmdict import MDX log.info("extracting links...") linksDict = {} word = "" wordCount = 0 for b_word, b_defi in self._mdx.items(): word = b_word.decode("utf-8") defi = b_defi.decode("utf-8").strip() if defi.startswith("@@@LINK="): if not word: log.warn(f"unexpected defi: {defi}") continue mainWord = defi[8:] if mainWord in linksDict: linksDict[mainWord] += "\n" + word else: linksDict[mainWord] = word continue wordCount += 1 log.info( "extracting links done, " f"sizeof(linksDict)={sys.getsizeof(linksDict)}" ) log.info(f"wordCount = {wordCount}") self._linksDict = linksDict self._wordCount = wordCount self._mdx = MDX(self._filename, self._encoding, self._substyle)
def open(self, filename, **options): from pyglossary.plugin_lib.readmdict import MDX, MDD self._filename = filename self._encoding = options.get("encoding", "") self._substyle = options.get("substyle", True) self._mdx = MDX(filename, self._encoding, self._substyle) filenameNoExt, ext = splitext(self._filename) mddFilename = "".join([filenameNoExt, extsep, "mdd"]) if isfile(mddFilename): self._mdd = MDD(mddFilename) self._mddFilename = mddFilename log.pretty(self._mdx.header, "mdx.header=") # for key, value in self._mdx.header.items(): # key = key.lower() # self._glos.setInfo(key, value) try: title = self._mdx.header[b"Title"] except KeyError: pass else: self._glos.setInfo("title", title) self._glos.setInfo( "description", self._mdx.header.get(b"Description", ""), )
def open(self, filename, **options): from pyglossary.plugin_lib.readmdict import MDX, MDD self._filename = filename self._encoding = options.get('encoding', '') self._substyle = options.get('substyle', True) self._mdx = MDX(filename, self._encoding, self._substyle) ### filenameNoExt, ext = splitext(self._filename) self._dataDir = options.get('resPath', filenameNoExt + '_files') mddFilename = ''.join([filenameNoExt, extsep, 'mdd']) if isfile(mddFilename): self._mdd = MDD(mddFilename) self._mddFilename = mddFilename ### log.pretty(self._mdx.header, 'mdx.header=') #for key, value in self._mdx.header.items(): # key = key.lower() # self._glos.setInfo(key, value) try: title = self._mdx.header[b'Title'] except KeyError: pass else: self._glos.setInfo('title', title) self._glos.setInfo('description', self._mdx.header.get(b'Description', '')) ### try: self.writeDataFiles() except: log.exception('error while saving MDict data files')
def open(self, filename): from pyglossary.plugin_lib.readmdict import MDX, MDD self._filename = filename self._mdx = MDX(filename, self._encoding, self._substyle) """ multiple MDD files are supported with this naming schema: FILE.mdx FILE.mdd FILE.1.mdd FILE.2.mdd FILE.3.mdd """ filenameNoExt, ext = splitext(self._filename) mddBase = "".join([filenameNoExt, extsep]) for fname in (f"{mddBase}mdd", f"{mddBase}1.mdd"): if isfile(fname): self._mdd.append(MDD(fname)) mddN = 2 while isfile(f"{mddBase}{mddN}.mdd"): self._mdd.append(MDD(f"{mddBase}{mddN}.mdd")) mddN += 1 dataEntryCount = 0 for mdd in self._mdd: dataEntryCount += len(mdd) self._dataEntryCount = dataEntryCount log.info( f"Found {len(self._mdd)} mdd files with {dataEntryCount} entries") log.debug("mdx.header = " + pformat(self._mdx.header)) # for key, value in self._mdx.header.items(): # key = key.lower() # self._glos.setInfo(key, value) try: title = self._mdx.header[b"Title"] except KeyError: pass else: title = title.strip() if title: self._glos.setInfo("name", title) desc = self._mdx.header.get(b"Description", "") if desc: self._glos.setInfo("description", desc) self.loadLinks()