Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
stardict-tools
python3-support.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File python3-support.patch of Package stardict-tools
Index: stardict-tools-3.0.1/src/jm2stardict.py =================================================================== --- stardict-tools-3.0.1.orig/src/jm2stardict.py +++ stardict-tools-3.0.1/src/jm2stardict.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/python3 # # converts XML JMDict to Stardict idx/dict format # JMDict website: http://www.csse.monash.edu.au/~jwb/j_jmdict.html @@ -27,9 +27,8 @@ import struct, sys, string, codecs,os def text(nodes): label = "" - textnodes = filter(lambda x: x.nodeName == "#text", nodes) - for t in textnodes: - label += t.data + for t in [x for x in nodes if x.nodeName == "#text"]: + label += t.data return label def strcasecmp(a, b): @@ -42,7 +41,7 @@ def strcasecmp(a, b): # if result == 0: result = cmp(a[0].lower() , b[0].lower()) - + return result def merge_dup(list): @@ -50,55 +49,55 @@ def merge_dup(list): lastkey = "" for x in list: - if x[0] == lastkey: - newlist[-1] = (newlist[-1][0], newlist[-1][1] + "\n" + x[1]) - else: - newlist.append(x) - lastkey = x[0] + if x[0] == lastkey: + newlist[-1] = (newlist[-1][0], newlist[-1][1] + "\n" + x[1]) + else: + newlist.append(x) + lastkey = x[0] return newlist class JMDictHandler(ContentHandler): def __init__(self): - self.mapping = [] - self.state = "" - self.buffer = "" + self.mapping = [] + self.state = "" + self.buffer = "" def startElement(self, name, attrs): - if name == "entry": - self.kanji = [] - self.chars = [] - self.gloss = [] - self.state = "" - self.buffer = "" - elif name == "keb": - self.state = "keb" - elif name == "reb": - self.state = "reb" - elif name == "gloss" and not attrs: - self.state = "gloss" - elif name == "xref": - self.state = "xref" - + if name == "entry": + self.kanji = [] + self.chars = [] + self.gloss = [] + self.state = "" + self.buffer = "" + elif name == "keb": + self.state = "keb" + elif name == "reb": + self.state = "reb" + elif name == "gloss" and not attrs: + self.state = "gloss" + elif name == "xref": + self.state = "xref" + def endElement(self, name): - if name == "entry": - self.mapping.append((self.kanji, self.chars, self.gloss)) - elif name == "keb": - self.kanji.append(self.buffer) - elif name == "reb": - self.chars.append(self.buffer) - elif name == "gloss" and self.buffer: - self.gloss.append(self.buffer) - elif name == "xref": - self.gloss.append(self.buffer) - - self.buffer = "" - self.state = "" - + if name == "entry": + self.mapping.append((self.kanji, self.chars, self.gloss)) + elif name == "keb": + self.kanji.append(self.buffer) + elif name == "reb": + self.chars.append(self.buffer) + elif name == "gloss" and self.buffer: + self.gloss.append(self.buffer) + elif name == "xref": + self.gloss.append(self.buffer) + + self.buffer = "" + self.state = "" + def characters(self, ch): - if self.state in ["keb", "reb", "gloss", "xref"]: - self.buffer = self.buffer + ch - + if self.state in ["keb", "reb", "gloss", "xref"]: + self.buffer = self.buffer + ch + def map_to_file(dictmap, filename): dict = open(filename + ".dict","wb") @@ -111,59 +110,59 @@ def map_to_file(dictmap, filename): idx.write(struct.pack("!I",len(dictmap))) for k,v in dictmap: - k_utf8 = k.encode("utf-8") - v_utf8 = v.encode("utf-8") - idx.write(k_utf8 + "\0") - idx.write(struct.pack("!I",offset)) - idx.write(struct.pack("!I",len(v_utf8))) - offset += len(v_utf8) - dict.write(v_utf8) + k_utf8 = k.encode("utf-8") + v_utf8 = v.encode("utf-8") + idx.write(k_utf8 + "\0") + idx.write(struct.pack("!I",offset)) + idx.write(struct.pack("!I",len(v_utf8))) + offset += len(v_utf8) + dict.write(v_utf8) dict.close() idx.close() if __name__ == "__main__": - print "opening xml dict .." + print("opening xml dict ..") f = gzip.open("JMdict.gz") #f = open("jmdict_sample.xml") - print "parsing xml file .." + print("parsing xml file ..") parser = xml.sax.make_parser() handler = JMDictHandler() parser.setContentHandler(handler) parser.parse(f) f.close() - print "creating dictionary .." + print("creating dictionary ..") # create a japanese -> english mappings jap_to_eng = [] for kanji,chars,gloss in handler.mapping: - for k in kanji: - key = k - value = string.join(chars + gloss, "\n") - jap_to_eng.append((key,value)) - for c in chars: - key = c - value = string.join(kanji + gloss, "\n") - jap_to_eng.append((key,value)) - + for k in kanji: + key = k + value = string.join(chars + gloss, "\n") + jap_to_eng.append((key,value)) + for c in chars: + key = c + value = string.join(kanji + gloss, "\n") + jap_to_eng.append((key,value)) + eng_to_jap = [] for kanji,chars,gloss in handler.mapping: - for k in gloss: - key = k - value = string.join(kanji + chars, "\n") - eng_to_jap.append((key,value)) - - print "sorting dictionary .." + for k in gloss: + key = k + value = string.join(kanji + chars, "\n") + eng_to_jap.append((key,value)) + + print("sorting dictionary ..") jap_to_eng.sort(strcasecmp) eng_to_jap.sort(strcasecmp) - print "merging and pruning dups.." + print("merging and pruning dups..") jap_to_eng = merge_dup(jap_to_eng) eng_to_jap = merge_dup(eng_to_jap) - print "writing to files.." + print("writing to files..") # create dict and idx file map_to_file(jap_to_eng, "jmdict-ja-en") Index: stardict-tools-3.0.1/src/makevietdict.py =================================================================== --- stardict-tools-3.0.1.orig/src/makevietdict.py +++ stardict-tools-3.0.1/src/makevietdict.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 # WinVNKey Hannom Database to Stardict dictionary source Conversion Tool # coded by wesnoth@ustc on 070804 # http://winvnkey.sourceforge.net @@ -7,7 +7,7 @@ infileencoding = 'utf-16-le' outfileencoding = 'utf-8' def showhelp(): - print "Usage: %s filename" % sys.argv[0] + print("Usage: %s filename" % sys.argv[0]) def ishantu(str): if len(str) > 0 and ord(str[0]) > 0x2e80: @@ -37,15 +37,15 @@ def mysplit(line): return line if __name__ == '__main__': - if len(sys.argv) <> 2: + if len(sys.argv) != 2: showhelp() else: fp = open(sys.argv[1], 'r') - print 'Reading file...' + print('Reading file...') lines = unicode(fp.read(), infileencoding).split(u'\n') lineno = 0 hugedict = {} - print 'Generating Han-Viet dict...' + print('Generating Han-Viet dict...') for line in lines: lineno += 1 if line.endswith(u'\r'): @@ -72,7 +72,7 @@ if __name__ == '__main__': line[1] = filter(None, map(string.strip, line[1].split(u','))) #hugedict[line[0]] = hugedict.get(line[0], []) + line[1] for item in line[1]: - if not hugedict.has_key(line[0]): + if line[0] not in hugedict: hugedict[line[0]] = [item] elif not item in hugedict[line[0]]: hugedict[line[0]] += [item] @@ -83,25 +83,25 @@ if __name__ == '__main__': # print viettu.encode('utf-8'), ',', # print fp.close() - print 'Generating Viet-Han dict...' + print('Generating Viet-Han dict...') dicthuge = {} - for hantu, quocngu in hugedict.iteritems(): + for hantu, quocngu in hugedict.items(): for viettu in quocngu: - if not dicthuge.has_key(viettu): + if viettu not in dicthuge: dicthuge[viettu] = [hantu] elif not hantu in dicthuge[viettu]: dicthuge[viettu] += [hantu] - print 'Writing Han-Viet dict...' + print('Writing Han-Viet dict...') gp = open('hanviet.txt', 'w') - for hantu, quocngu in hugedict.iteritems(): + for hantu, quocngu in hugedict.items(): gp.write(hantu.encode('utf-8')) gp.write('\t') gp.write((u', '.join(quocngu)).encode('utf-8')) gp.write('\n') gp.close() - print 'Writing Viet-Han dict...' + print('Writing Viet-Han dict...') gp = open('viethan.txt', 'w') - for quocngu,hantu in dicthuge.iteritems(): + for quocngu,hantu in dicthuge.items(): gp.write(quocngu.encode('utf-8')) gp.write('\t') gp.write((u' '.join(hantu)).encode('utf-8')) Index: stardict-tools-3.0.1/src/lingea-trd-decoder.py =================================================================== --- stardict-tools-3.0.1.orig/src/lingea-trd-decoder.py +++ stardict-tools-3.0.1/src/lingea-trd-decoder.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # -*- coding: utf-8 -*- # # Script for decoding Lingea Dictionary (.trd) file @@ -49,34 +49,34 @@ VERSION = "0.4" import getopt, sys def usage(): - print "Lingea Dictionary Decoder" - print "-------------------------" - print "Version: %s" % VERSION - print "Copyright (C) 2007 - Klokan Petr Pridal, Petr Dlouhy" - print - print "Usage: python lingea-trd-decoder.py DICTIONARY.trd > DICTIONARY.tab" - print "Result convertion by stardict-tools: /usr/lib/stardict-tools/tabfile" - print - print " -o <num> --out-style : Output style" - print " 0 no tags" - print " 1 \\n tags" - print " 2 html tags" - print " -h --help : Print this message" - print " -d --debug : Degub" - print " -r --debug-header : Degub - print headers" - print " -a --debug-all : Degub - print all records" - print " -l --debug-limit : Degub limit" - print - print "For HTML support in StarDict dictionary .ifo has to contain:" - print "sametypesequence=g" - print "!!! Change the .ifo file after generation by tabfile !!!" - print + print("Lingea Dictionary Decoder") + print("-------------------------") + print("Version: %s" % VERSION) + print("Copyright (C) 2007 - Klokan Petr Pridal, Petr Dlouhy") + print() + print("Usage: python lingea-trd-decoder.py DICTIONARY.trd > DICTIONARY.tab") + print("Result convertion by stardict-tools: /usr/lib/stardict-tools/tabfile") + print() + print(" -o <num> --out-style : Output style") + print(" 0 no tags") + print(" 1 \\n tags") + print(" 2 html tags") + print(" -h --help : Print this message") + print(" -d --debug : Degub") + print(" -r --debug-header : Degub - print headers") + print(" -a --debug-all : Degub - print all records") + print(" -l --debug-limit : Degub limit") + print() + print("For HTML support in StarDict dictionary .ifo has to contain:") + print("sametypesequence=g") + print("!!! Change the .ifo file after generation by tabfile !!!") + print() try: opts, args = getopt.getopt(sys.argv[1:], "hdo:ral:", ["help", "debug", "out-style=", "debug-header", "debug-all", "debug-limit="]) except getopt.GetoptError: usage() - print "ERROR: Bad option" + print("ERROR: Bad option") sys.exit(2) import locale @@ -94,7 +94,7 @@ for o, a in opts: OUTSTYLE = locale.atoi(a) if OUTSTYLE > 2: usage() - print "ERROR: Output style not specified" + print("ERROR: Output style not specified") if o in ("-r", "--debug-header"): # If DEBUG and DEBUGHEADER, then print just all header records DEBUGHEADER = True @@ -113,7 +113,7 @@ if len(args) == 1: FILENAME = args[0] else: usage() - print "ERROR: You have to specify .trd file to decode" + print("ERROR: You have to specify .trd file to decode") sys.exit(2) from struct import * @@ -428,7 +428,7 @@ def out( comment = "", skip = False): comment = comment % s else: comment = comment % bs[pos] - if DEBUG: print "%03d %s %s | %s | %03d" % (pos, toBin(bs[pos]),comment, s, (triple + pos)) + if DEBUG: print("%03d %s %s | %s | %03d" % (pos, toBin(bs[pos]),comment, s, (triple + pos))) if skip: pos += triple + 1 return s.replace('`','') # Remove '`' character from words @@ -671,14 +671,14 @@ if DEBUG: s = decode(getRec(i)) if DEBUGHEADER: # print s.split('\t')[0] - print s + print(s) if DEBUGLIMIT > 0 and not s.endswith('\n'): DEBUG = True - print "-"*80 - print "%s) at address %s" % (i, toBin(index[i])) - print + print("-"*80) + print("%s) at address %s" % (i, toBin(index[i]))) + print() s = decode(getRec(i)) - print s + print(s) DEBUGLIMIT -= 1 DEBUG = True else: @@ -686,10 +686,10 @@ else: for i in range(1,entryCount): s = decode(getRec(i)) if s.endswith('\n'): - print s, + print(s, end=' ') else: - print s - print "!!! RECORD STRUCTURE DECODING ERROR !!!" - print "Please run this script in DEBUG mode and repair DATA BLOCK(S) section in function decode()" - print "If you succeed with whole dictionary send report (name of the dictionary and source code of script) to slovniky@googlegroups.com" + print(s) + print("!!! RECORD STRUCTURE DECODING ERROR !!!") + print("Please run this script in DEBUG mode and repair DATA BLOCK(S) section in function decode()") + print("If you succeed with whole dictionary send report (name of the dictionary and source code of script) to slovniky@googlegroups.com") break Index: stardict-tools-3.0.1/src/extractKangXi.py =================================================================== --- stardict-tools-3.0.1.orig/src/extractKangXi.py +++ stardict-tools-3.0.1/src/extractKangXi.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys, os, string, re, glob import libxml2dom @@ -20,7 +20,7 @@ num = 0 errorfiles = [] for filename in filelist: num += 1 - print >> sys.stderr, filename, num, 'of', filenum + print(filename, num, 'of', filenum, file=sys.stderr) try: fp = open(filename, 'r') doc = libxml2dom.parseString(fp.read(), html=1) @@ -29,7 +29,7 @@ for filename in filelist: style = re.search(r'(?s)\s*\.(\S+)\s*{\s*display:\s*none', style) displaynone = style.group(1) tabpages = doc.getElementsByTagName("div") - tabpages = filter(lambda s: s.getAttribute("class") == "tab-page", tabpages) + tabpages = [s for s in tabpages if s.getAttribute("class") == "tab-page"] for tabpage in tabpages: found = False for node in tabpage.childNodes: @@ -45,16 +45,16 @@ for filename in filelist: paragraphs = tabpage.getElementsByTagName("p") thisitem = character + u'\t' for paragraph in paragraphs: - if paragraph.getAttribute("class") <> displaynone: + if paragraph.getAttribute("class") != displaynone: #print TextInNode(paragraph).encode(fencoding) text = paragraph.textContent #text = filter(lambda s: not s in u' \t\r\n', text) text = re.sub(r'\s+', r' ', text) thisitem += text + u'\\n' - print thisitem.encode(fencoding) + print(thisitem.encode(fencoding)) except: - print >> sys.stderr, 'error occured' + print('error occured', file=sys.stderr) errorfiles += [filename] continue if errorfiles: - print >> sys.stderr, 'Error files:', '\n'.join(errorfiles) + print('Error files:', '\n'.join(errorfiles), file=sys.stderr) Index: stardict-tools-3.0.1/src/stmerge.py =================================================================== --- stardict-tools-3.0.1.orig/src/stmerge.py +++ stardict-tools-3.0.1/src/stmerge.py @@ -1,18 +1,19 @@ -import sys, string -base = {} -for line in sys.stdin.readlines(): - words = string.split(line[:-1], '\t') - if len(words) != 2: - print "Error!" - exit - if base.has_key(words[0]): - base[words[0]] += [words[1]] - else: - base[words[0]] = [words[1]] -keys = base.keys() -keys.sort() -for key in keys: - print key,'\t', - for val in base[key]: - print val,',', - print +#!/usr/bin/python3 +import sys, string +base = {} +for line in sys.stdin.readlines(): + words = string.split(line[:-1], '\t') + if len(words) != 2: + print("Error!") + exit + if words[0] in base: + base[words[0]] += [words[1]] + else: + base[words[0]] = [words[1]] +keys = list(base.keys()) +keys.sort() +for key in keys: + print(key,'\t', end=' ') + for val in base[key]: + print(val,',', end=' ') + print() Index: stardict-tools-3.0.1/src/KangXiZiDian-djvu2tiff.py =================================================================== --- stardict-tools-3.0.1.orig/src/KangXiZiDian-djvu2tiff.py +++ stardict-tools-3.0.1/src/KangXiZiDian-djvu2tiff.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 # This tool convert KangXiZiDian djvu files to tiff files. # Download djvu files: http://bbs.dartmouth.edu/~fangq/KangXi/KangXi.tar # Character page info: http://wenq.org/unihan/Unihan.txt as kIRGKangXi field. Index: stardict-tools-3.0.1/src/hanzim2dict.py =================================================================== --- stardict-tools-3.0.1.orig/src/hanzim2dict.py +++ stardict-tools-3.0.1/src/hanzim2dict.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # # hanzim2dict # @@ -44,7 +44,7 @@ for line in lines: code = toUTF(fromGB(line[0])[0])[0] pinyin = line[2] definition = '<'+pinyin+'> '+line[3]+' ['+line[1]+']' - if wordmap.has_key(code): + if code in wordmap: wordmap[code].add(definition) else: wordmap[code] = Word(code, definition) @@ -55,11 +55,11 @@ for filename in ("cidianf.gb", "sanzicid for line in lines: if len(line) < 2: - print len(line) + print(len(line)) continue code = toUTF(fromGB(line[0][:-2])[0])[0] definition = line[1]+' ['+line[0][-1:]+']' - if wordmap.has_key(code): + if code in wordmap: wordmap[code].add(definition) else: wordmap[code] = Word(code, definition) Index: stardict-tools-3.0.1/src/mkguangyunst.py =================================================================== --- stardict-tools-3.0.1.orig/src/mkguangyunst.py +++ stardict-tools-3.0.1/src/mkguangyunst.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 import sys, string for line in sys.stdin.readlines(): words = string.split(line[:-1], '\t') @@ -15,6 +16,6 @@ for line in sys.stdin.readlines(): pinyin= words[13] psyun = words[22] if beizhu == '': - print "%s\t%s %s%s%s%s%s%s %sQIE PINYIN%s PSYUN%s\\n%s" % (romazi, muci, sheng, yunbu, she, hu, deng, diao, fanqie, pinyin, psyun, chars) + print("%s\t%s %s%s%s%s%s%s %sQIE PINYIN%s PSYUN%s\\n%s" % (romazi, muci, sheng, yunbu, she, hu, deng, diao, fanqie, pinyin, psyun, chars)) else: - print "%s\t%s %s%s%s%s%s%s %sQIE PINYIN%s PSYUN%s\\n%s\\n%s" % (romazi, muci, sheng, yunbu, she, hu, deng, diao, fanqie, pinyin, psyun, chars, beizhu) + print("%s\t%s %s%s%s%s%s%s %sQIE PINYIN%s PSYUN%s\\n%s\\n%s" % (romazi, muci, sheng, yunbu, she, hu, deng, diao, fanqie, pinyin, psyun, chars, beizhu)) Index: stardict-tools-3.0.1/src/uyghur2dict.py =================================================================== --- stardict-tools-3.0.1.orig/src/uyghur2dict.py +++ stardict-tools-3.0.1/src/uyghur2dict.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python3 # # uyghur2dict # By Abdisalam (anatilim@gmail.com), inspired by Michael Robinson's hanzim2dict converter. @@ -41,7 +41,7 @@ lines = map(lambda x: split(x[:-1], '\t\ for line in lines: code = line[0] definition = line[1] - if wordmap.has_key(code): + if code in wordmap: wordmap[code].add(definition) else: wordmap[code] = Word(code, definition) @@ -84,4 +84,4 @@ ifo.write("author=Abdisalam\n") ifo.write("email=anatilim@gmail.com\n") ifo.write("description=感谢新疆维吾尔自治区语委会、新疆青少年出版社为我们提供《汉维词典》的词库\n") ifo.write("sametypesequence=m\n") -ifo.close() \ No newline at end of file +ifo.close()
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor