Попробую совместить svn с git
[uimge.git] / uimgepy / uimge.py
blob3da0ebfe9c2b455ac9ede87b55d6e73e98ae596e
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3 '''
4 Разработчик: apkawa@gmail.com
5 Сайт проекта: http://code.google.com/p/uimge/
6 '''
7 import optparse
8 from sys import argv,exit,stderr,stdout
9 from os import stat
10 from re import sub,search
11 from libuimge import imagehost,lang
12 import inspect
13 VERSION = '0.06.0.2'
15 opt_help,error_mes,messages=lang.check()
16 IMAGEHOSTS = {}
17 for (name,value) in inspect.getmembers(imagehost):
18 if name.startswith('host_'):
19 IMAGEHOSTS[name[len('host_'):]]= value
21 OUTPRINT={
22 'default': lambda url, eva: stdout.write('%s\n'%url[0]),
23 'bt_bb-thumb': lambda url, eva: stdout.write('[url=%s][img]%s[/img][/url] ' %(url[0], url[1])),
24 'bo_bb-orig': lambda url, eva: stdout.write('[img]%s[/img]\n' %(url[0])),
25 'usr_user-output': lambda url, eva: stdout.write(sub('\\\\n','\n',sub('#TMB#',url[1],sub('#URL#',url[0], eva))))
28 class input():
29 '''Usage:
30 > i = input(opt,filename)
31 > i.upload()
32 '''
33 def __init__(self,opt,filenames):
34 '''__init__(self,opt, filenames)
35 Начальная иницилизация'''
36 if opt.filelist:
37 self.read_list(opt.filelist)
38 else:
39 self.filenames = filenames
40 self.count= 0
41 self.mode = False
42 self.name = None
43 self.host = opt.check
44 self.out = opt.out
45 self.out_eval = None
46 if not OUTPRINT.has_key(self.out):
47 self.out_eval=self.out
48 self.out = 'usr_user-output'
49 def upload(self):
50 '''функция заливки изображений или урлов с изображениями'''
51 for file in self.filenames:
52 if not self.check(file):
53 continue
54 send = [file,self.name,self.mode]
55 url = IMAGEHOSTS[self.host](send)
56 OUTPRINT[self.out](url,self.out_eval)
57 stdout.write('\n')
58 def read_list(self,filelist):
59 self.filenames = []
60 f = open(filelist,'r')
61 files = f.readlines()
62 f.close()
63 for file in files: self.filenames.append(sub('\n','',file))
64 def check(self,filename):
65 if search('^http\:\/\/',filename): self.mode = True
66 else: self.mode = False
67 if not self.mode:
68 try:
69 test=stat(filename)
70 except OSError:
71 stderr.write('Not file\n')
72 return False
73 return True
75 def parseopt(arg):
76 '''Функциия парсинга опций и вывод справки'''
77 usage = opt_help['usage']
78 version = 'uimgepy-'+VERSION
79 parser = optparse.OptionParser(usage=usage, version=version)
80 # Major options
81 group_1 = optparse.OptionGroup(parser, opt_help['Major options'])
82 for host in IMAGEHOSTS.keys():
83 sp = host.split('_')
84 group_1.add_option('-'+sp[0],'--'+sp[1],action='store_const', const=host, dest='check', \
85 help=opt_help['--'+sp[1]])
86 parser.add_option_group(group_1)
87 # Additional options
88 group_2 = optparse.OptionGroup(parser, opt_help['Additional options'])
89 group_2.add_option('-f','--file', action='store', default=None, dest='filelist', \
90 help=opt_help['--file'])
91 parser.add_option_group(group_2)
92 group_3 = optparse.OptionGroup(parser, opt_help['Output options'])
93 for key in OUTPRINT.keys():
94 if key != 'default':
95 sp = key.split('_')
96 if key != 'usr_user-output':
97 group_3.add_option('--'+sp[0],'--'+sp[1], const=key, action='store_const', \
98 default='default', dest='out', help=opt_help['--'+sp[1]])
99 else:
100 group_3.add_option('--'+sp[0],'--'+sp[1], action='store_true', \
101 default='default', dest='out', help=opt_help['--'+sp[1]])
102 parser.add_option_group(group_3)
103 opt, arguments = parser.parse_args(args=arg,)
104 if opt.check == None:
105 print error_mes['Enter option']
106 parser.print_help()
107 exit()
108 return opt, arguments
110 if __name__ == '__main__':
111 opt, filenames = parseopt(argv[1:])
112 inp=input(opt, filenames)
113 inp.upload()