summaryrefslogtreecommitdiff
path: root/anidb_add
diff options
context:
space:
mode:
Diffstat (limited to 'anidb_add')
-rw-r--r--anidb_add73
1 files changed, 20 insertions, 53 deletions
diff --git a/anidb_add b/anidb_add
index 04dc1df..b0d06bd 100644
--- a/anidb_add
+++ b/anidb_add
@@ -1,40 +1,7 @@
#!/usr/bin/env python
-import pyanidb as anidb
-import ConfigParser, os, sys, thread, time, getpass, multihash
-
-num_threads = 0
-
-def file_hash(name):
- e = multihash.Ed2k()
- f = open(name)
- data = f.read(32768)
- while data:
- e.update(data)
- data = f.read(32768)
- f.close()
- return e.digest()
-
-def hash_file(name):
- if not os.access(name, os.R_OK):
- print 'Invalid file: %s' % (name)
- return
- size = os.stat(name).st_size
- hash = file_hash(name)
- print 'Hashed: ed2k://|file|%s|%d|%s|' % (name, size, hash)
- return name, size, hash
-
-def hash_thread(filelist, hashlist):
- global num_threads
- num_threads += 1
- try:
- while filelist:
- h = hash_file(filelist.pop(0))
- if h:
- hashlist.append(h)
- except IndexError:
- pass
- num_threads -= 1
+import pyanidb, pyanidb.hash
+import ConfigParser, os, sys, getpass, multihash
def auth():
try:
@@ -50,7 +17,7 @@ def auth():
username, password = auth()
try:
- a = anidb.AniDB(username, password)
+ a = pyanidb.AniDB(username, password)
#t = a.ping()
#if t:
# print 'AniDB is reachable, %.3fs' % (t)
@@ -62,35 +29,35 @@ try:
if a.new_version:
print 'New version available.'
- filelist = sys.argv[1:]
- hashlist = []
-
- thread.start_new_thread(hash_thread, (filelist, hashlist))
-
- while hashlist or num_threads or filelist:
- if not hashlist:
- time.sleep(0.1)
- continue
- name, size, hash = hashlist.pop(0)
+ files = []
+ for name in sys.argv[1:]:
+ if os.access(name, os.R_OK):
+ files.append(name)
+ else:
+ print 'Invalid file: %s' % (name)
+ for filename, hash in pyanidb.hash.hash_files(files):
+ hash = hash.ed2k()
+ size = os.stat(filename).st_size
+ print 'Hashed: ed2k://|file|%s|%d|%s|' % (filename, size, hash)
try:
while 1:
try:
a.add_hash(size, hash)
- except anidb.AniDBTimeout:
+ except pyanidb.AniDBTimeout:
print 'Connection timed out, retrying.'
continue
break
- except anidb.AniDBUnknownFile:
- print 'Unknown file: %s' % (name)
+ except pyanidb.AniDBUnknownFile:
+ print 'Unknown file: %s' % (filename)
continue
- print 'Added file: %s' % (name)
+ print 'Added file: %s' % (filename)
print 'All operations finished.'
-except anidb.AniDBUserError:
+except pyanidb.AniDBUserError:
print 'Invalid username/password.'
sys.exit(1)
-except anidb.AniDBTimeout:
+except pyanidb.AniDBTimeout:
print 'Connection timed out.'
sys.exit(1)
-except anidb.AniDBError, e:
+except pyanidb.AniDBError, e:
print 'Fatal error:', e
sys.exit(1)