e1ef21233c973ba9ec69532a33152b611f18c08f
[jamaendo] / scripts / query
1 #!/usr/bin/env python
2
3 # debugging hack - add . to path
4 import os, sys
5 local_module_dir = os.path.join(os.path.dirname(sys.argv[0]), '..')
6 if os.path.isdir(local_module_dir):
7     sys.path.append(local_module_dir)
8
9 from jamaendo.api import LocalDB, Queries, refresh_dump
10 import time
11
12 class Refresher(object):
13     def __init__(self):
14         self.done = False
15         self.last_percent = 0
16         print "..."
17     def complete(self):
18         print "Done."
19         self.done = True
20     def progress(self, percent):
21         if percent - self.last_percent >= 5:
22             print "\r%d%%" % (percent),
23             self.last_percent = percent
24
25     def run(self):
26         refresh_dump(self.complete, self.progress, force=False)
27         while not self.done:
28             time.sleep(1)
29
30
31 def pprint(x):
32     import simplejson
33     print simplejson.dumps(x, sort_keys=True, indent=4)
34
35 def main():
36     Refresher().run()
37
38     query = sys.argv[1]
39
40     if query == 'today':
41         result = Queries.albums_today()
42         pprint(result)
43     elif query == 'tracks_this_month':
44         result = Queries.tracks_this_month()
45         pprint(result)
46     elif query == 'artist':
47         q = sys.argv[2]
48         db = LocalDB()
49         db.connect()
50         for artist in db.search_artists(q):
51             pprint(artist)
52     elif query == 'album':
53         q = sys.argv[2]
54         db = LocalDB()
55         db.connect()
56         for album in db.search_albums(q):
57             pprint(album)
58
59 if __name__=="__main__":
60     main()