comictagger/scripts/test.py
beville@gmail.com ac7a12d18d Experimental script using lib
git-svn-id: http://comictagger.googlecode.com/svn/trunk@475 6c5673fe-1810-88d6-992b-cd32ca31540c
2013-02-09 00:15:42 +00:00

94 lines
2.4 KiB
Python
Executable File

#!/usr/bin/python
"""
An experiment with comictaggerlib
"""
import sys
import os
import platform
import locale
import codecs
sys.path += ".." + os.pathsep
from comictaggerlib.comicarchive import *
from comictaggerlib.settings import *
from comictaggerlib.issuestring import *
#---------------------------------------
def init_output( ):
# try to make stdout encodings happy for unicode printing
if platform.system() == "Darwin":
preferred_encoding = "utf-8"
else:
preferred_encoding = locale.getpreferredencoding()
sys.stdout = codecs.getwriter(preferred_encoding)(sys.stdout)
sys.stderr = codecs.getwriter(preferred_encoding)(sys.stderr)
#--------------------------------------
def get_recursive_filelist( pathlist ):
filelist = []
for p in pathlist:
# if path is a folder, walk it recursivly, and all files underneath
if type(p) == str:
#make sure string is unicode
filename_encoding = sys.getfilesystemencoding()
p = p.decode(filename_encoding, 'replace')
if os.path.isdir( unicode(p)):
for root,dirs,files in os.walk( unicode(p) ):
for f in files:
filelist.append(os.path.join(root,unicode(f)))
else:
filelist.append(unicode(p))
return filelist
#--------------------------------------
def main():
init_output()
settings = ComicTaggerSettings()
filelist = get_recursive_filelist( sys.argv )
#first read in CIX metadata from all files
metadata_list = []
for filename in filelist:
ca = ComicArchive(filename, settings )
metadata_list.append((filename, ca.readCIX()))
# now, figure out column widths
w0 = 4
w1 = 4
for filename,md in metadata_list:
if not md.isEmpty:
w0 = max( len((os.path.split(filename)[1])), w0)
if md.series is not None:
w1 = max( len(md.series), w1)
w0 += 2
# build a format string
fmt_str = "{0:" + str(w0) + "} {1:" + str(w1) + "} #{2:6} ({3})"
# now sort the list by year
metadata_list.sort(key=lambda x: IssueString(x[1].issue).asString(3), reverse=False)
metadata_list.sort(key=lambda x: str(x[1].series)+str(x[1].year), reverse=False)
#metadata_list.sort(key=lambda x: x[1].series, reverse=False)
# now print
for filename,md in metadata_list:
if not md.isEmpty:
print fmt_str.format(os.path.split(filename)[1]+":", md.series, md.issue, md.year)
"""
if len(md.pages) != 0:
for p in md.pages:
if p.has_key('Type') and p['Type'] in [ 'Deleted', 'Advertisment' ]:
print "-------Has pages to remove"
"""
if __name__ == '__main__':
main()