1f0043c3777b599cd882d4348a336e9591935d9b
[mevemon] / package / src / fetchimg.py
1 import urllib
2 import os.path
3
4 def portrait_filename( char_id, img_size ):
5
6     err_img = '/opt/mevemon/imgs/error.jpg'
7     if not os.path.isfile(err_img):
8         #diablo location
9         err_img = "/usr/share/mevemon/imgs/error.jpg"
10    
11     img_dir = os.path.expanduser("~/.mevemon/imgs/")
12
13
14     # if asked for the large version, save it under a diff name --danny
15     if img_size == 64:
16         filename = os.path.join(img_dir, "%s.jpg" % char_id)
17     elif img_size == 256:
18         filename = os.path.join(img_dir, "%s_lg.jpg" % char_id)
19     else:
20     # we can only accept 64 or 256... I know an exclamation point is not an error message, but I'll come back to this. FIXME --danny
21         return err_img
22
23     if not os.path.exists(img_dir):
24         os.makedirs(img_dir)
25     elif os.path.isfile( filename ):
26         return filename
27
28     # specify size and cid --danny
29     img_url = "http://img.eve.is/serv.asp?s=%s&c=%s" % ( str( img_size ), char_id )
30
31     # fetch it, and hit the road. --danny
32     try:
33         urllib.urlretrieve( img_url, filename, report_handler )
34     except urllib.ContentTooShortError:
35         filename = err_img
36     return filename
37
38 def report_handler( *a ):
39     ( blocks_transferred, block_size, total_size ) = a