Drop python2 support.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
pull/5/head r14.1.0
Slávek Banko 1 year ago
parent b2ccda8be8
commit c800d114bf
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -33,7 +33,7 @@ Update (checked) = %{title}
"""
import sys, os, re, md5, random, string
import urllib, urllib2, time, base64
import urllib.request, urllib.parse, urllib.error, time, base64
import xml.dom.minidom
XML_HEADER = """<?xml version="1.0" encoding="UTF-8"?>"""
@ -86,7 +86,7 @@ class BasicTellicoDOM:
entryNode.setAttribute('id', str(self.__currentId))
titleNode = self.__doc.createElement('title')
titleNode.appendChild(self.__doc.createTextNode(unicode(d['title'], 'latin-1').encode('utf-8')))
titleNode.appendChild(self.__doc.createTextNode(str(d['title'], 'latin-1').encode('utf-8')))
yearNode = self.__doc.createElement('pub_year')
yearNode.appendChild(self.__doc.createTextNode(d['pub_year']))
@ -101,25 +101,25 @@ class BasicTellicoDOM:
writersNode = self.__doc.createElement('writers')
for g in d['writer']:
writerNode = self.__doc.createElement('writer')
writerNode.appendChild(self.__doc.createTextNode(unicode(g, 'latin-1').encode('utf-8')))
writerNode.appendChild(self.__doc.createTextNode(str(g, 'latin-1').encode('utf-8')))
writersNode.appendChild(writerNode)
genresNode = self.__doc.createElement('genres')
for g in d['genre']:
genreNode = self.__doc.createElement('genre')
genreNode.appendChild(self.__doc.createTextNode(unicode(g, 'latin-1').encode('utf-8')))
genreNode.appendChild(self.__doc.createTextNode(str(g, 'latin-1').encode('utf-8')))
genresNode.appendChild(genreNode)
commentsNode = self.__doc.createElement('comments')
#for g in d['comments']:
# commentsNode.appendChild(self.__doc.createTextNode(unicode("%s\n\n" % g, 'latin-1').encode('utf-8')))
commentsData = string.join(d['comments'], '\n\n')
commentsNode.appendChild(self.__doc.createTextNode(unicode(commentsData, 'latin-1').encode('utf-8')))
commentsNode.appendChild(self.__doc.createTextNode(str(commentsData, 'latin-1').encode('utf-8')))
artistsNode = self.__doc.createElement('artists')
for k, v in d['artist'].iteritems():
for k, v in d['artist'].items():
artistNode = self.__doc.createElement('artist')
artistNode.appendChild(self.__doc.createTextNode(unicode(v, 'latin-1').encode('utf-8')))
artistNode.appendChild(self.__doc.createTextNode(str(v, 'latin-1').encode('utf-8')))
artistsNode.appendChild(artistNode)
pagesNode = self.__doc.createElement('pages')
@ -132,7 +132,7 @@ class BasicTellicoDOM:
imageNode = self.__doc.createElement('image')
imageNode.setAttribute('format', 'JPEG')
imageNode.setAttribute('id', d['image'][0])
imageNode.appendChild(self.__doc.createTextNode(unicode(d['image'][1], 'latin-1').encode('utf-8')))
imageNode.appendChild(self.__doc.createTextNode(str(d['image'][1], 'latin-1').encode('utf-8')))
coverNode = self.__doc.createElement('cover')
coverNode.appendChild(self.__doc.createTextNode(d['image'][0]))
@ -156,17 +156,17 @@ class BasicTellicoDOM:
Prints entry's XML content to stdout
"""
try:
print nEntry.toxml()
print(nEntry.toxml())
except:
print sys.stderr, "Error while outputing XML content from entry to Tellico"
print(sys.stderr, "Error while outputing XML content from entry to Tellico")
def printXMLTree(self):
"""
Outputs XML content to stdout
"""
self.__collection.appendChild(self.__images)
print XML_HEADER; print DOCTYPE
print self.__root.toxml()
print(XML_HEADER); print(DOCTYPE)
print(self.__root.toxml())
class DarkHorseParser:
@ -193,7 +193,7 @@ class DarkHorseParser:
# Compile patterns objects
self.__regExpsPO = {}
for k, pattern in self.__regExps.iteritems():
for k, pattern in self.__regExps.items():
self.__regExpsPO[k] = re.compile(pattern)
self.__domTree = BasicTellicoDOM()
@ -211,7 +211,7 @@ class DarkHorseParser:
"""
Fetch HTML data from url
"""
u = urllib2.urlopen(url)
u = urllib.request.urlopen(url)
self.__data = u.read()
u.close()
@ -231,7 +231,7 @@ class DarkHorseParser:
The image is deleted if delete is True
"""
md5 = genMD5()
imObj = urllib2.urlopen(path.strip())
imObj = urllib.request.urlopen(path.strip())
img = imObj.read()
imObj.close()
imgPath = "/tmp/%s.jpeg" % md5
@ -240,7 +240,7 @@ class DarkHorseParser:
f.write(img)
f.close()
except:
print sys.stderr, "Error: could not write image into /tmp"
print(sys.stderr, "Error: could not write image into /tmp")
b64data = (md5 + '.jpeg', base64.encodestring(img))
@ -249,7 +249,7 @@ class DarkHorseParser:
try:
os.remove(imgPath)
except:
print sys.stderr, "Error: could not delete temporary image /tmp/%s.jpeg" % md5
print(sys.stderr, "Error: could not delete temporary image /tmp/%s.jpeg" % md5)
return b64data
@ -286,7 +286,7 @@ class DarkHorseParser:
data['image'] = b64img
data['pub_year'] = NULLSTRING
for name, po in self.__regExpsPO.iteritems():
for name, po in self.__regExpsPO.items():
data[name] = NULLSTRING
if name == 'desc':
matches[name] = re.findall(self.__regExps[name], self.__data, re.S | re.I)
@ -363,7 +363,7 @@ class DarkHorseParser:
if not len(title): return
self.__title = title
self.__getHTMLContent("%s%s" % (self.__baseURL, self.__searchURL % urllib.quote(self.__title)))
self.__getHTMLContent("%s%s" % (self.__baseURL, self.__searchURL % urllib.parse.quote(self.__title)))
# Get all links
links = self.__fetchMovieLinks()
@ -381,11 +381,11 @@ class DarkHorseParser:
return None
def halt():
print "HALT."
print("HALT.")
sys.exit(0)
def showUsage():
print "Usage: %s comic" % sys.argv[0]
print("Usage: %s comic" % sys.argv[0])
sys.exit(1)
def main():

@ -28,7 +28,7 @@
# * Initial release.
import sys, os, re, md5, random
import urllib, urllib2, time, base64
import urllib.request, urllib.parse, urllib.error, time, base64
import xml.dom.minidom
XML_HEADER = """<?xml version="1.0" encoding="UTF-8"?>"""
@ -90,23 +90,23 @@ class BasicTellicoDOM:
entryNode.setAttribute('id', str(self.__currentId))
titleNode = self.__doc.createElement('title')
titleNode.appendChild(self.__doc.createTextNode(unicode(d['title'], 'latin-1').encode('utf-8')))
titleNode.appendChild(self.__doc.createTextNode(str(d['title'], 'latin-1').encode('utf-8')))
otitleNode = self.__doc.createElement('titre-original')
otitleNode.appendChild(self.__doc.createTextNode(unicode(d['otitle'], 'latin-1').encode('utf-8')))
otitleNode.appendChild(self.__doc.createTextNode(str(d['otitle'], 'latin-1').encode('utf-8')))
yearNode = self.__doc.createElement('year')
yearNode.appendChild(self.__doc.createTextNode(unicode(d['year'], 'latin-1').encode('utf-8')))
yearNode.appendChild(self.__doc.createTextNode(str(d['year'], 'latin-1').encode('utf-8')))
genresNode = self.__doc.createElement('genres')
for g in d['genres']:
genreNode = self.__doc.createElement('genre')
genreNode.appendChild(self.__doc.createTextNode(unicode(g, 'latin-1').encode('utf-8')))
genreNode.appendChild(self.__doc.createTextNode(str(g, 'latin-1').encode('utf-8')))
genresNode.appendChild(genreNode)
natsNode = self.__doc.createElement('nationalitys')
natNode = self.__doc.createElement('nat')
natNode.appendChild(self.__doc.createTextNode(unicode(d['nat'], 'latin-1').encode('utf-8')))
natNode.appendChild(self.__doc.createTextNode(str(d['nat'], 'latin-1').encode('utf-8')))
natsNode.appendChild(natNode)
castsNode = self.__doc.createElement('casts')
@ -114,7 +114,7 @@ class BasicTellicoDOM:
castNode = self.__doc.createElement('cast')
col1Node = self.__doc.createElement('column')
col2Node = self.__doc.createElement('column')
col1Node.appendChild(self.__doc.createTextNode(unicode(g, 'latin-1').encode('utf-8')))
col1Node.appendChild(self.__doc.createTextNode(str(g, 'latin-1').encode('utf-8')))
castNode.appendChild(col1Node)
castNode.appendChild(col2Node)
castsNode.appendChild(castNode)
@ -122,17 +122,17 @@ class BasicTellicoDOM:
dirsNode = self.__doc.createElement('directors')
for g in d['dirs']:
dirNode = self.__doc.createElement('director')
dirNode.appendChild(self.__doc.createTextNode(unicode(g, 'latin-1').encode('utf-8')))
dirNode.appendChild(self.__doc.createTextNode(str(g, 'latin-1').encode('utf-8')))
dirsNode.appendChild(dirNode)
timeNode = self.__doc.createElement('running-time')
timeNode.appendChild(self.__doc.createTextNode(unicode(d['time'], 'latin-1').encode('utf-8')))
timeNode.appendChild(self.__doc.createTextNode(str(d['time'], 'latin-1').encode('utf-8')))
allocineNode = self.__doc.createElement(unicode('allociné-link', 'latin-1').encode('utf-8'))
allocineNode.appendChild(self.__doc.createTextNode(unicode(d['allocine'], 'latin-1').encode('utf-8')))
allocineNode = self.__doc.createElement(str('allociné-link', 'latin-1').encode('utf-8'))
allocineNode.appendChild(self.__doc.createTextNode(str(d['allocine'], 'latin-1').encode('utf-8')))
plotNode = self.__doc.createElement('plot')
plotNode.appendChild(self.__doc.createTextNode(unicode(d['plot'], 'latin-1').encode('utf-8')))
plotNode.appendChild(self.__doc.createTextNode(str(d['plot'], 'latin-1').encode('utf-8')))
if d['image']:
imageNode = self.__doc.createElement('image')
@ -140,7 +140,7 @@ class BasicTellicoDOM:
imageNode.setAttribute('id', d['image'][0])
imageNode.setAttribute('width', '120')
imageNode.setAttribute('height', '160')
imageNode.appendChild(self.__doc.createTextNode(unicode(d['image'][1], 'latin-1').encode('utf-8')))
imageNode.appendChild(self.__doc.createTextNode(str(d['image'][1], 'latin-1').encode('utf-8')))
coverNode = self.__doc.createElement('cover')
coverNode.appendChild(self.__doc.createTextNode(d['image'][0]))
@ -162,8 +162,8 @@ class BasicTellicoDOM:
Outputs XML content to stdout
"""
self.__collection.appendChild(self.__images)
print XML_HEADER; print DOCTYPE
print self.__root.toxml()
print(XML_HEADER); print(DOCTYPE)
print(self.__root.toxml())
class AlloCineParser:
@ -203,7 +203,7 @@ class AlloCineParser:
Fetch HTML data from url
"""
u = urllib2.urlopen(url)
u = urllib.request.urlopen(url)
self.__data = u.read()
u.close()
@ -224,7 +224,7 @@ class AlloCineParser:
matches = data = {}
for name, regexp in self.__regExps.iteritems():
for name, regexp in self.__regExps.items():
if name == 'image':
matches[name] = re.findall(self.__regExps[name], self.__data, re.S | re.I)
else:
@ -272,7 +272,7 @@ class AlloCineParser:
elif name == 'image':
# Save image to a temporary folder
md5 = genMD5()
imObj = urllib2.urlopen(matches[name][0].strip())
imObj = urllib.request.urlopen(matches[name][0].strip())
img = imObj.read()
imObj.close()
imgPath = "/tmp/%s.jpeg" % md5
@ -303,7 +303,7 @@ class AlloCineParser:
if not len(title): return
self.__title = title
self.__getHTMLContent(self.__searchURL % urllib.quote(self.__title))
self.__getHTMLContent(self.__searchURL % urllib.parse.quote(self.__title))
# Get all links
links = self.__fetchMovieLinks()
@ -321,7 +321,7 @@ class AlloCineParser:
def showUsage():
print "Usage: %s movietitle" % sys.argv[0]
print("Usage: %s movietitle" % sys.argv[0])
sys.exit(1)
def main():

@ -85,7 +85,7 @@ Version 0.1:
"""
import sys, os, re, md5, random, string
import urllib, urllib2, time, base64
import urllib.request, urllib.parse, urllib.error, time, base64
import xml.dom.minidom, types
import socket
@ -95,7 +95,7 @@ NULLSTRING = ''
VERSION = "0.3.2"
ISBN, AUTHOR, TITLE = range(3)
ISBN, AUTHOR, TITLE = list(range(3))
TRANSLATOR_STR = "tr."
EDLIT_STR = "ed. lit."
@ -153,11 +153,11 @@ class BasicTellicoDOM:
d = movieData
# Convert all strings to UTF-8
for i in d.keys():
if type(d[i]) == types.ListType:
d[i] = [unicode(d[i][j], 'latin-1').encode('utf-8') for j in range(len(d[i]))]
elif type(d[i]) == types.StringType:
d[i] = unicode(d[i], 'latin-1').encode('utf-8')
for i in list(d.keys()):
if type(d[i]) == list:
d[i] = [str(d[i][j], 'latin-1').encode('utf-8') for j in range(len(d[i]))]
elif type(d[i]) == bytes:
d[i] = str(d[i], 'latin-1').encode('utf-8')
entryNode = self.__doc.createElement('entry')
entryNode.setAttribute('id', str(self.__currentId))
@ -228,17 +228,17 @@ class BasicTellicoDOM:
"""
try:
print nEntry.toxml()
print(nEntry.toxml())
except:
print sys.stderr, "Error while outputing XML content from entry to Tellico"
print(sys.stderr, "Error while outputing XML content from entry to Tellico")
def printXMLTree(self):
"""
Outputs XML content to stdout
"""
print XML_HEADER; print DOCTYPE
print self.__root.toxml()
print(XML_HEADER); print(DOCTYPE)
print(self.__root.toxml())
class MinisterioCulturaParser:
@ -268,7 +268,7 @@ class MinisterioCulturaParser:
# Compile patterns objects
self.__regExpsPO = {}
for k, pattern in self.__regExps.iteritems():
for k, pattern in self.__regExps.items():
self.__regExpsPO[k] = re.compile(pattern)
self.__domTree = BasicTellicoDOM()
@ -298,8 +298,8 @@ class MinisterioCulturaParser:
"""
try:
u = urllib2.urlopen(url)
except Exception, e:
u = urllib.request.urlopen(url)
except Exception as e:
u.close()
sys.exit("""
Network error while getting HTML content.
@ -336,7 +336,7 @@ Tellico cannot connect to: http://www.mcu.es/comun/bases/isbn/ISBN.htm webpage:
data['series_num'] = NULLSTRING
data['translator'] = NULLSTRING
for name, po in self.__regExpsPO.iteritems():
for name, po in self.__regExpsPO.items():
data[name] = NULLSTRING
matches[name] = re.search(self.__regExps[name], self.__data, re.S | re.I)
@ -471,11 +471,11 @@ Tellico cannot connect to: http://www.mcu.es/comun/bases/isbn/ISBN.htm webpage:
def __getBook(self, data, kind = ISBN):
if not len(data):
raise EngineError, "No data given. Unable to proceed."
raise EngineError("No data given. Unable to proceed.")
if kind == ISBN:
self.__getHTMLContent("%s%s%s" % (self.__baseURL, self.__searchURL % \
(urllib.quote(data), # ISBN
(urllib.parse.quote(data), # ISBN
NULLSTRING, # AUTHOR
NULLSTRING), # TITLE
self.__suffixURL)
@ -483,7 +483,7 @@ Tellico cannot connect to: http://www.mcu.es/comun/bases/isbn/ISBN.htm webpage:
elif kind == AUTHOR:
self.__getHTMLContent("%s%s%s" % (self.__baseURL, self.__searchURL % \
(NULLSTRING, # ISBN
urllib.quote(data), # AUTHOR
urllib.parse.quote(data), # AUTHOR
NULLSTRING), # TITLE
self.__suffixURL)
)
@ -492,7 +492,7 @@ Tellico cannot connect to: http://www.mcu.es/comun/bases/isbn/ISBN.htm webpage:
self.__getHTMLContent("%s%s%s" % (self.__baseURL, self.__searchURL % \
(NULLSTRING, # ISBN
NULLSTRING, # AUTHOR
urllib.quote(data)), # TITLE
urllib.parse.quote(data)), # TITLE
self.__suffixURL)
)
@ -551,16 +551,16 @@ Tellico cannot connect to: http://www.mcu.es/comun/bases/isbn/ISBN.htm webpage:
return prefix + string.join(translators, '; ')
def halt():
print "HALT."
print("HALT.")
sys.exit(0)
def showUsage():
print """Usage: %s options
print("""Usage: %s options
Where options are:
-t title
-i (ISBN|UPC)
-a author
-m filename (support for multiple ISBN/UPC search)""" % sys.argv[0]
-m filename (support for multiple ISBN/UPC search)""" % sys.argv[0])
sys.exit(1)
def main():
@ -573,7 +573,7 @@ def main():
isbnStringList = NULLSTRING
opts = {'-t' : TITLE, '-i' : ISBN, '-a' : AUTHOR, '-m' : isbnStringList}
if sys.argv[1] not in opts.keys():
if sys.argv[1] not in list(opts.keys()):
showUsage()
if sys.argv[1] == '-m':
@ -584,8 +584,8 @@ def main():
sys.argv[2] = string.join([d[:-1] for d in data], ';')
sys.argv[1] = '-i'
f.close()
except IOError, e:
print "Error: %s" % e
except IOError as e:
print("Error: %s" % e)
sys.exit(1)
parser = MinisterioCulturaParser()

@ -21,7 +21,7 @@ import xml.dom.minidom
try:
import sqlite3
except:
print sys.stderr, "The Python sqlite3 module is required to import Griffith databases."
print(sys.stderr, "The Python sqlite3 module is required to import Griffith databases.")
exit(1)
DB_PATH = os.environ['HOME'] + '/.griffith/griffith.db'
@ -140,11 +140,11 @@ class BasicTellicoDOM:
entryNode = self.__doc.createElement('entry')
entryNode.setAttribute('id', movieData['id'])
for key, values in movieData.iteritems():
for key, values in movieData.items():
if key == 'id':
continue
if self.__fieldsMap.has_key(key):
if key in self.__fieldsMap:
field = self.__fieldsMap[key]
else:
field = key
@ -184,8 +184,8 @@ class BasicTellicoDOM:
Outputs XML content to stdout
"""
self.__collection.appendChild(self.__images)
print XML_HEADER; print DOCTYPE
print self.__root.toxml()
print(XML_HEADER); print(DOCTYPE)
print(self.__root.toxml())
class GriffithParser:

Loading…
Cancel
Save