· 8 years ago · Mar 21, 2018, 12:44 AM
1
2
3
4
5
6import os as OO0O0O0OOO0000O00 ,re as O000O0O0O00OO000O ,sys as O0O000O0O0OOOO00O ,hashlib as OOOOOO0O00O0OO0O0 ,urllib as OO0OOOO0OOOOOOO00 ,urlparse as OO0O0OOO0O000OOO0 ,json as OOOOO0OOOOOOOOO00 ,base64 as OOO0O0OOOO0O0O0O0 ,random as O00O00O00OOO0OO0O ,datetime as O0O00O00O00O0O0OO #line:1
7import xbmc as OO0000O00000OO00O #line:2
8try :from sqlite3 import dbapi2 as OO000OOOOOO0OOO0O #line:4
9except :from pysqlite2 import dbapi2 as OO000OOOOOO0OOO0O #line:5
10from resources .lib .modules import cache as OOOOOOO0O0O00OOO0 #line:7
11from resources .lib .modules import metacache as OOO0O0O0O0O0OOO00 #line:8
12from resources .lib .modules import client as O0OOOO000O0O00O0O #line:9
13from resources .lib .modules import control as O0OOOO0OOO00OO0OO #line:10
14from resources .lib .modules import regex as OO0OO0O0000OOO0OO #line:11
15from resources .lib .modules import trailer as O00O0OO0000O0OO0O #line:12
16from resources .lib .modules import workers as O00O0O000O0O00000 #line:13
17from resources .lib .modules import youtube as OO0OOOOO0O000O000 #line:14
18from resources .lib .modules import views as OOO00O0OO0OOOO0OO #line:15
19version =102 #line:18
20class indexer :#line:20
21 def __init__ (O0OO00O0OO0O0OOOO ):#line:21
22 O0OO00O0OO0O0OOOO .list =[];O0OO00O0OO0O0OOOO .hash =[]#line:22
23 def root (OO00O00O0O00000O0 ):#line:25
24 try :#line:26
25 OO0OO0O0000OOO0OO .clear ()#line:27
26 O0000O00000O0OOO0 ='https://goo.gl/ZbNWy9'#line:28
27 OO00O00O0O00000O0 .list =OO00O00O0O00000O0 .TVsupertuga_list (O0000O00000O0OOO0 )#line:29
28 for O0000O0O0OO000000 in OO00O00O0O00000O0 .list :O0000O0O0OO000000 .update ({'content':'addons'})#line:30
29 OO00O00O0O00000O0 .addDirectory (OO00O00O0O00000O0 .list )#line:31
30 return OO00O00O0O00000O0 .list #line:32
31 except :#line:33
32 pass #line:34
33 def get (OOO00O00O00OO0O0O ,OO0O00O0000000OO0 ):#line:37
34 try :#line:38
35 OOO00O00O00OO0O0O .list =OOO00O00O00OO0O0O .TVsupertuga_list (OO0O00O0000000OO0 )#line:39
36 OOO00O00O00OO0O0O .worker ()#line:40
37 OOO00O00O00OO0O0O .addDirectory (OOO00O00O00OO0O0O .list )#line:41
38 return OOO00O00O00OO0O0O .list #line:42
39 except :#line:43
40 pass #line:44
41 def getq (O0O0O0000OO0OOO0O ,O0O00OO0OOO00OO00 ):#line:47
42 try :#line:48
43 O0O0O0000OO0OOO0O .list =O0O0O0000OO0OOO0O .TVsupertuga_list (O0O00OO0OOO00OO00 )#line:49
44 O0O0O0000OO0OOO0O .worker ()#line:50
45 O0O0O0000OO0OOO0O .addDirectory (O0O0O0000OO0OOO0O .list ,queue =True )#line:51
46 return O0O0O0000OO0OOO0O .list #line:52
47 except :#line:53
48 pass #line:54
49 def getx (O0O00O0OO0O00O0OO ,OO00000000OOOOO00 ,worker =False ):#line:57
50 try :#line:58
51 O00O0O00O0O000000 ,OO0OO0OOO00O0OO00 =O000O0O0O00OO000O .findall ('(.+?)\|regex=(.+?)$',OO00000000OOOOO00 )[0 ]#line:59
52 OO0OO0OOO00O0OO00 =OO0OO0O0000OOO0OO .fetch (OO0OO0OOO00O0OO00 )#line:60
53 O00O0O00O0O000000 +=OO0OOOO0OOOOOOO00 .unquote_plus (OO0OO0OOO00O0OO00 )#line:61
54 OO00000000OOOOO00 =OO0OO0O0000OOO0OO .resolve (O00O0O00O0O000000 )#line:62
55 O0O00O0OO0O00O0OO .list =O0O00O0OO0O00O0OO .TVsupertuga_list ('',result =OO00000000OOOOO00 )#line:63
56 O0O00O0OO0O00O0OO .addDirectory (O0O00O0OO0O00O0OO .list )#line:64
57 return O0O00O0OO0O00O0OO .list #line:65
58 except :#line:66
59 pass #line:67
60 def developer (O000OO0000OO0OO0O ):#line:70
61 try :#line:71
62 O00O0OOO000OO00O0 =OO0O0O0OOO0000O00 .path .join (O0OOOO0OOO00OO0OO .dataPath ,'testings.xml')#line:72
63 O0O000O00000O0OOO =O0OOOO0OOO00OO0OO .openFile (O00O0OOO000OO00O0 );OOOO0OO00OOOOO0OO =O0O000O00000O0OOO .read ();O0O000O00000O0OOO .close ()#line:73
64 O000OO0000OO0OO0O .list =O000OO0000OO0OO0O .TVsupertuga_list ('',result =OOOO0OO00OOOOO0OO )#line:74
65 for OOO00O000OO00OOOO in O000OO0000OO0OO0O .list :OOO00O000OO00OOOO .update ({'content':'videos'})#line:75
66 O000OO0000OO0OO0O .addDirectory (O000OO0000OO0OO0O .list )#line:76
67 return O000OO0000OO0OO0O .list #line:77
68 except :#line:78
69 pass #line:79
70 def youtube (O0O0OO0OOOOO0OO0O ,O00OO0O0O0OOO0O0O ,OOOOO0000OOO00OO0 ):#line:82
71 try :#line:83
72 O00OO0O0OO000OO0O =O00O0OO0000O0OO0O .trailer ().key_link .split ('=',1 )[-1 ]#line:84
73 if 'PlaylistTuner'in OOOOO0000OOO00OO0 :#line:86
74 O0O0OO0OOOOO0OO0O .list =OOOOOOO0O0O00OOO0 .get (OO0OOOOO0O000O000 .youtube (key =O00OO0O0OO000OO0O ).playlist ,1 ,O00OO0O0O0OOO0O0O )#line:87
75 elif 'Playlist'in OOOOO0000OOO00OO0 :#line:88
76 O0O0OO0OOOOO0OO0O .list =OOOOOOO0O0O00OOO0 .get (OO0OOOOO0O000O000 .youtube (key =O00OO0O0OO000OO0O ).playlist ,1 ,O00OO0O0O0OOO0O0O ,True )#line:89
77 elif 'ChannelTuner'in OOOOO0000OOO00OO0 :#line:90
78 O0O0OO0OOOOO0OO0O .list =OOOOOOO0O0O00OOO0 .get (OO0OOOOO0O000O000 .youtube (key =O00OO0O0OO000OO0O ).videos ,1 ,O00OO0O0O0OOO0O0O )#line:91
79 elif 'Channel'in OOOOO0000OOO00OO0 :#line:92
80 O0O0OO0OOOOO0OO0O .list =OOOOOOO0O0O00OOO0 .get (OO0OOOOO0O000O000 .youtube (key =O00OO0O0OO000OO0O ).videos ,1 ,O00OO0O0O0OOO0O0O ,True )#line:93
81 if 'Tuner'in OOOOO0000OOO00OO0 :#line:95
82 for OOO0O000OO0O00O00 in O0O0OO0OOOOO0OO0O .list :OOO0O000OO0O00O00 .update ({'name':OOO0O000OO0O00O00 ['title'],'poster':OOO0O000OO0O00O00 ['image'],'action':'plugin','folder':False })#line:96
83 if 'Tuner2'in OOOOO0000OOO00OO0 :O0O0OO0OOOOO0OO0O .list =sorted (O0O0OO0OOOOO0OO0O .list ,key =lambda O0O00OO0OOO0OO00O :O00O00O00OOO0OO0O .random ())#line:97
84 O0O0OO0OOOOO0OO0O .addDirectory (O0O0OO0OOOOO0OO0O .list ,queue =True )#line:98
85 else :#line:99
86 for OOO0O000OO0O00O00 in O0O0OO0OOOOO0OO0O .list :OOO0O000OO0O00O00 .update ({'name':OOO0O000OO0O00O00 ['title'],'poster':OOO0O000OO0O00O00 ['image'],'nextaction':OOOOO0000OOO00OO0 ,'action':'play','folder':False })#line:100
87 O0O0OO0OOOOO0OO0O .addDirectory (O0O0OO0OOOOO0OO0O .list )#line:101
88 return O0O0OO0OOOOO0OO0O .list #line:103
89 except :#line:104
90 pass #line:105
91 def tvtuner (OOOOO0O000OOO0O0O ,O0OOO000OO0O00OOO ):#line:108
92 try :#line:109
93 OO0OO00OO00O00000 =O000O0O0O00OO000O .findall ('<preset>(.+?)</preset>',O0OOO000OO0O00OOO )[0 ]#line:110
94 OOO00OOO000O0000O =((O0O00O00O00O0O0OO .datetime .utcnow ()-O0O00O00O00O0O0OO .timedelta (hours =5 ))).strftime ('%Y-%m-%d')#line:112
95 OOO00OOO000O0000O =int (O000O0O0O00OO000O .sub ('[^0-9]','',str (OOO00OOO000O0000O )))#line:113
96 O0OOO000OO0O00OOO ,OO00OOO0O0OO0OO0O ,O0OOO000OOO00OO00 ,OOOO000O0OO0O0OOO ,O00OO0OO0OO000OOO ,OOOOO0OOOO00OO00O ,O0O00OO000OOOOO0O =O000O0O0O00OO000O .findall ('<url>(.+?)</url>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<imdb>(.+?)</imdb>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<tvdb>(.+?)</tvdb>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<tvshowtitle>(.+?)</tvshowtitle>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<year>(.+?)</year>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<thumbnail>(.+?)</thumbnail>',O0OOO000OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<fanart>(.+?)</fanart>',O0OOO000OO0O00OOO )[0 ]#line:115
97 OO0O00000O0OO0O00 =O0OOOO000O0O00O0O .request ('http://api.tvmaze.com/lookup/shows?thetvdb=%s'%O0OOO000OOO00OO00 )#line:117
98 if OO0O00000O0OO0O00 ==None :OO0O00000O0OO0O00 =O0OOOO000O0O00O0O .request ('http://api.tvmaze.com/lookup/shows?imdb=%s'%OO00OOO0O0OO0OO0O )#line:118
99 OO0O00000O0OO0O00 ='http://api.tvmaze.com/shows/%s/episodes'%str (OOOOO0OOOOOOOOO00 .loads (OO0O00000O0OO0O00 ).get ('id'))#line:119
100 OOOOOO00O0OOOOO00 =OOOOO0OOOOOOOOO00 .loads (O0OOOO000O0O00O0O .request (OO0O00000O0OO0O00 ))#line:120
101 OOOOOO00O0OOOOO00 =[(str (O0OO0O0OO0000O00O .get ('season')),str (O0OO0O0OO0000O00O .get ('number')),O0OO0O0OO0000O00O .get ('name').strip (),O0OO0O0OO0000O00O .get ('airdate'))for O0OO0O0OO0000O00O in OOOOOO00O0OOOOO00 ]#line:121
102 if OO0OO00OO00O00000 =='tvtuner':#line:123
103 OO0OOO0O0OOO0O00O =O00O00O00OOO0OO0O .choice (OOOOOO00O0OOOOO00 )#line:124
104 OOOOOO00O0OOOOO00 =OOOOOO00O0OOOOO00 [OOOOOO00O0OOOOO00 .index (OO0OOO0O0OOO0O00O ):]+OOOOOO00O0OOOOO00 [:OOOOOO00O0OOOOO00 .index (OO0OOO0O0OOO0O00O )]#line:125
105 OOOOOO00O0OOOOO00 =OOOOOO00O0OOOOO00 [:100 ]#line:126
106 OOO0O0O0O0OO00OOO =''#line:128
107 for OO0O0O00O00OOO00O in OOOOOO00O0OOOOO00 :#line:130
108 try :#line:131
109 if int (O000O0O0O00OO000O .sub ('[^0-9]','',str (OO0O0O00O00OOO00O [3 ])))>OOO00OOO000O0000O :raise Exception ()#line:132
110 OOO0O0O0O0OO00OOO +='<item><title> %01dx%02d . %s</title><meta><content>episode</content><imdb>%s</imdb><tvdb>%s</tvdb><tvshowtitle>%s</tvshowtitle><year>%s</year><title>%s</title><premiered>%s</premiered><season>%01d</season><episode>%01d</episode></meta><link><sublink>search</sublink><sublink>searchsd</sublink></link><thumbnail>%s</thumbnail><fanart>%s</fanart></item>'%(int (OO0O0O00O00OOO00O [0 ]),int (OO0O0O00O00OOO00O [1 ]),OO0O0O00O00OOO00O [2 ],OO00OOO0O0OO0OO0O ,O0OOO000OOO00OO00 ,OOOO000O0OO0O0OOO ,O00OO0OO0OO000OOO ,OO0O0O00O00OOO00O [2 ],OO0O0O00O00OOO00O [3 ],int (OO0O0O00O00OOO00O [0 ]),int (OO0O0O00O00OOO00O [1 ]),OOOOO0OOOO00OO00O ,O0O00OO000OOOOO0O )#line:133
111 except :#line:134
112 pass #line:135
113 OOO0O0O0O0OO00OOO =O000O0O0O00OO000O .sub (r'[^\x00-\x7F]+',' ',OOO0O0O0O0OO00OOO )#line:137
114 if OO0OO00OO00O00000 =='tvtuner':#line:139
115 OOO0O0O0O0OO00OOO =OOO0O0O0O0OO00OOO .replace ('<sublink>searchsd</sublink>','')#line:140
116 OOOOO0O000OOO0O0O .list =OOOOO0O000OOO0O0O .TVsupertuga_list ('',result =OOO0O0O0O0OO00OOO )#line:142
117 if OO0OO00OO00O00000 =='tvtuner':#line:144
118 OOOOO0O000OOO0O0O .addDirectory (OOOOO0O000OOO0O0O .list ,queue =True )#line:145
119 else :#line:146
120 OOOOO0O000OOO0O0O .worker ()#line:147
121 OOOOO0O000OOO0O0O .addDirectory (OOOOO0O000OOO0O0O .list )#line:148
122 except :#line:149
123 pass #line:150
124 def search (O0O0O00O00O0000O0 ):#line:153
125 try :#line:154
126 O0O0O00O00O0000O0 .list =[{'name':30702 ,'action':'addSearch'}]#line:155
127 O0O0O00O00O0000O0 .list +=[{'name':30703 ,'action':'delSearch'}]#line:156
128 try :#line:158
129 def O00OO0O00000OO0OO ():return #line:159
130 OOOOOO0000OO00000 =OOOOOOO0O0O00OOO0 .get (O00OO0O00000OO0OO ,600000000 ,table ='rel_srch')#line:160
131 for OOO0O00000OO0OO0O in OOOOOO0000OO00000 :#line:162
132 try :O0O0O00O00O0000O0 .list +=[{'name':'%s...'%OOO0O00000OO0OO0O ,'url':OOO0O00000OO0OO0O ,'action':'addSearch'}]#line:163
133 except :pass #line:164
134 except :#line:165
135 pass #line:166
136 O0O0O00O00O0000O0 .addDirectory (O0O0O00O00O0000O0 .list )#line:168
137 return O0O0O00O00O0000O0 .list #line:169
138 except :#line:170
139 pass #line:171
140 def delSearch (OO0OOOOO00OO000OO ):#line:174
141 try :#line:175
142 OOOOOOO0O0O00OOO0 .clear ('rel_srch')#line:176
143 O0OOOO0OOO00OO0OO .refresh ()#line:177
144 except :#line:178
145 pass #line:179
146 def addSearch (O000O0O0O0000O0OO ,url =None ):#line:182
147 try :#line:183
148 OO00O00O0000000OO ='https://goo.gl/oxdKiu'#line:184
149 if (url ==None or url ==''):#line:186
150 OOO0O00O0OOO000OO =O0OOOO0OOO00OO0OO .keyboard ('',O0OOOO0OOO00OO0OO .lang (30702 ).encode ('utf-8'))#line:187
151 OOO0O00O0OOO000OO .doModal ()#line:188
152 if not (OOO0O00O0OOO000OO .isConfirmed ()):return #line:189
153 url =OOO0O00O0OOO000OO .getText ()#line:190
154 if (url ==None or url ==''):return #line:192
155 def O0OOOOO0000OO0OOO ():return [url ]#line:194
156 O0O00OO00O00OOOOO =OOOOOOO0O0O00OOO0 .get (O0OOOOO0000OO0OOO ,600000000 ,table ='rel_srch')#line:195
157 def O0OOOOO0000OO0OOO ():return [O0O0OO0O0O0OO0OOO for O00OOO0O00O0000O0 ,O0O0OO0O0O0OO0OOO in enumerate ((O0O00OO00O00OOOOO +[url ]))if O0O0OO0O0O0OO0OOO not in (O0O00OO00O00OOOOO +[url ])[:O00OOO0O00O0000O0 ]]#line:196
158 OOOOOOO0O0O00OOO0 .get (O0OOOOO0000OO0OOO ,0 ,table ='rel_srch')#line:197
159 O00O0O0OOOOO0OO00 =O0OOOO000O0O00O0O .request (OO00O00O0000000OO )#line:199
160 O00O0O0OOOOO0OO00 =O000O0O0O00OO000O .findall ('<link>(.+?)</link>',O00O0O0OOOOO0OO00 )#line:200
161 O00O0O0OOOOO0OO00 =[OO0OOO0O0O0OO00O0 for OO0OOO0O0O0OO00O0 in O00O0O0OOOOO0OO00 if str (OO0OOO0O0O0OO00O0 ).startswith ('http')]#line:201
162 O000O0O0O0000O0OO .list =[];OOO00000OOO00OO0O =[]#line:203
163 for OO00O00O0000000OO in O00O0O0OOOOO0OO00 :OOO00000OOO00OO0O .append (O00O0O000O0O00000 .Thread (O000O0O0O0000O0OO .TVsupertuga_list ,OO00O00O0000000OO ))#line:204
164 [OOOOO000O0OO00OOO .start ()for OOOOO000O0OO00OOO in OOO00000OOO00OO0O ];[O0OO0O00O0O00OO00 .join ()for O0OO0O00O0O00OO00 in OOO00000OOO00OO0O ]#line:205
165 O000O0O0O0000O0OO .list =[O00OOO0O00000O00O for O00OOO0O00000O00O in O000O0O0O0000O0OO .list if url .lower ()in O00OOO0O00000O00O ['name'].lower ()]#line:207
166 for OOO0OOOO0O0OOOO0O in O000O0O0O0000O0OO .list :#line:209
167 try :#line:210
168 OOOOOOOOO0OOO00OO =''#line:211
169 if not OOO0OOOO0O0OOOO0O ['vip']in ['wolfpack TV']:OOOOOOOOO0OOO00OO +='[B]%s[/B] | '%OOO0OOOO0O0OOOO0O ['vip'].upper ()#line:212
170 OOOOOOOOO0OOO00OO +=OOO0OOOO0O0OOOO0O ['name']#line:213
171 OOO0OOOO0O0OOOO0O .update ({'name':OOOOOOOOO0OOO00OO })#line:214
172 except :#line:215
173 pass #line:216
174 for OOO0OOOO0O0OOOO0O in O000O0O0O0000O0OO .list :OOO0OOOO0O0OOOO0O .update ({'content':'videos'})#line:218
175 O000O0O0O0000O0OO .addDirectory (O000O0O0O0000O0OO .list )#line:219
176 except :#line:220
177 pass #line:221
178 def TVsupertuga_list (OO0OOO00000OO0O0O ,O0OOOO0OOOO0OO00O ,result =None ):#line:224
179 try :#line:225
180 if result ==None :result =OOOOOOO0O0O00OOO0 .get (O0OOOO000O0O00O0O .request ,0 ,O0OOOO0OOOO0OO00O )#line:226
181 if result .strip ().startswith ('#EXTM3U')and '#EXTINF'in result :#line:228
182 result =O000O0O0O00OO000O .compile ('#EXTINF:.+?\,(.+?)\n(.+?)\n',O000O0O0O00OO000O .MULTILINE |O000O0O0O00OO000O .DOTALL ).findall (result )#line:229
183 result =['<item><title>%s</title><link>%s</link></item>'%(OO00000O0OOOO000O [0 ],OO00000O0OOOO000O [1 ])for OO00000O0OOOO000O in result ]#line:230
184 result =''.join (result )#line:231
185 try :O0O00OO000O0OOO00 =OOO0O0OOOO0O0O0O0 .b64decode (result )#line:233
186 except :O0O00OO000O0OOO00 =''#line:234
187 if '</link>'in O0O00OO000O0OOO00 :result =O0O00OO000O0OOO00 #line:235
188 result =str (result )#line:237
189 result =OO0OOO00000OO0O0O .account_filter (result )#line:239
190 OO0O00OOO0OOO0OO0 =result .split ('<item>')[0 ].split ('<dir>')[0 ]#line:241
191 try :O00OOO0OO0O0OO0O0 =O000O0O0O00OO000O .findall ('<poster>(.+?)</poster>',OO0O00OOO0OOO0OO0 )[0 ]#line:243
192 except :O00OOO0OO0O0OO0O0 ='0'#line:244
193 try :OO0000O00O00OO0OO =O000O0O0O00OO000O .findall ('<thumbnail>(.+?)</thumbnail>',OO0O00OOO0OOO0OO0 )[0 ]#line:246
194 except :OO0000O00O00OO0OO ='0'#line:247
195 try :OOO00O0O00O00O00O =O000O0O0O00OO000O .findall ('<fanart>(.+?)</fanart>',OO0O00OOO0OOO0OO0 )[0 ]#line:249
196 except :OOO00O0O00O00O00O ='0'#line:250
197 OO00OOOOO00O0O0OO =O000O0O0O00OO000O .compile ('((?:<item>.+?</item>|<dir>.+?</dir>|<plugin>.+?</plugin>|<info>.+?</info>|<name>[^<]+</name><link>[^<]+</link><thumbnail>[^<]+</thumbnail><mode>[^<]+</mode>|<name>[^<]+</name><link>[^<]+</link><thumbnail>[^<]+</thumbnail><date>[^<]+</date>))',O000O0O0O00OO000O .MULTILINE |O000O0O0O00OO000O .DOTALL ).findall (result )#line:252
198 except :#line:253
199 return #line:254
200 for OOOOOO00OOOOOO000 in OO00OOOOO00O0O0OO :#line:256
201 try :#line:257
202 O0OOO000O00O00000 =O000O0O0O00OO000O .compile ('(<regex>.+?</regex>)',O000O0O0O00OO000O .MULTILINE |O000O0O0O00OO000O .DOTALL ).findall (OOOOOO00OOOOOO000 )#line:258
203 O0OOO000O00O00000 =''.join (O0OOO000O00O00000 )#line:259
204 O0O00OO0OO0OO0O00 =O000O0O0O00OO000O .compile ('(<listrepeat>.+?</listrepeat>)',O000O0O0O00OO000O .MULTILINE |O000O0O0O00OO000O .DOTALL ).findall (O0OOO000O00O00000 )#line:260
205 O0OOO000O00O00000 =OO0OOOO0OOOOOOO00 .quote_plus (O0OOO000O00O00000 )#line:261
206 OOOOOOOOOO00OOO00 =OOOOOO0O00O0OO0O0 .md5 ()#line:263
207 for OO0OOO0O00O0O0000 in O0OOO000O00O00000 :OOOOOOOOOO00OOO00 .update (str (OO0OOO0O00O0O0000 ))#line:264
208 OOOOOOOOOO00OOO00 =str (OOOOOOOOOO00OOO00 .hexdigest ())#line:265
209 OOOOOO00OOOOOO000 =OOOOOO00OOOOOO000 .replace ('\r','').replace ('\n','').replace ('\t','').replace (' ','')#line:267
210 OOOOOO00OOOOOO000 =O000O0O0O00OO000O .sub ('<regex>.+?</regex>','',OOOOOO00OOOOOO000 )#line:268
211 OOOOOO00OOOOOO000 =O000O0O0O00OO000O .sub ('<sublink></sublink>|<sublink\s+name=(?:\'|\").*?(?:\'|\")></sublink>','',OOOOOO00OOOOOO000 )#line:269
212 OOOOOO00OOOOOO000 =O000O0O0O00OO000O .sub ('<link></link>','',OOOOOO00OOOOOO000 )#line:270
213 OO0OO0OOO0OO0O000 =O000O0O0O00OO000O .sub ('<meta>.+?</meta>','',OOOOOO00OOOOOO000 )#line:272
214 try :OO0OO0OOO0OO0O000 =O000O0O0O00OO000O .findall ('<title>(.+?)</title>',OO0OO0OOO0OO0O000 )[0 ]#line:273
215 except :OO0OO0OOO0OO0O000 =O000O0O0O00OO000O .findall ('<name>(.+?)</name>',OO0OO0OOO0OO0O000 )[0 ]#line:274
216 try :O0O00000O00O0OO00 =O000O0O0O00OO000O .findall ('<date>(.+?)</date>',OOOOOO00OOOOOO000 )[0 ]#line:276
217 except :O0O00000O00O0OO00 =''#line:277
218 if O000O0O0O00OO000O .search (r'\d+',O0O00000O00O0OO00 ):OO0OO0OOO0OO0O000 +=' [COLOR red] Updated %s[/COLOR]'%O0O00000O00O0OO00 #line:278
219 try :OOO00O0OOO0OOOO00 =O000O0O0O00OO000O .findall ('<thumbnail>(.+?)</thumbnail>',OOOOOO00OOOOOO000 )[0 ]#line:280
220 except :OOO00O0OOO0OOOO00 =OO0000O00O00OO0OO #line:281
221 try :O0OO0O0O00O0OO0OO =O000O0O0O00OO000O .findall ('<fanart>(.+?)</fanart>',OOOOOO00OOOOOO000 )[0 ]#line:283
222 except :O0OO0O0O00O0OO0OO =OOO00O0O00O00O00O #line:284
223 try :OO0OOOOOOOO00O000 =O000O0O0O00OO000O .findall ('<meta>(.+?)</meta>',OOOOOO00OOOOOO000 )[0 ]#line:286
224 except :OO0OOOOOOOO00O000 ='0'#line:287
225 try :O0OOOO0OOOO0OO00O =O000O0O0O00OO000O .findall ('<link>(.+?)</link>',OOOOOO00OOOOOO000 )[0 ]#line:289
226 except :O0OOOO0OOOO0OO00O ='0'#line:290
227 O0OOOO0OOOO0OO00O =O0OOOO0OOOO0OO00O .replace ('>search<','><preset>search</preset>%s<'%OO0OOOOOOOO00O000 )#line:291
228 O0OOOO0OOOO0OO00O ='<preset>search</preset>%s'%OO0OOOOOOOO00O000 if O0OOOO0OOOO0OO00O =='search'else O0OOOO0OOOO0OO00O #line:292
229 O0OOOO0OOOO0OO00O =O0OOOO0OOOO0OO00O .replace ('>searchsd<','><preset>searchsd</preset>%s<'%OO0OOOOOOOO00O000 )#line:293
230 O0OOOO0OOOO0OO00O ='<preset>searchsd</preset>%s'%OO0OOOOOOOO00O000 if O0OOOO0OOOO0OO00O =='searchsd'else O0OOOO0OOOO0OO00O #line:294
231 O0OOOO0OOOO0OO00O =O000O0O0O00OO000O .sub ('<sublink></sublink>|<sublink\s+name=(?:\'|\").*?(?:\'|\")></sublink>','',O0OOOO0OOOO0OO00O )#line:295
232 if OOOOOO00OOOOOO000 .startswith ('<item>'):O0OOOO0000000O00O ='play'#line:297
233 elif OOOOOO00OOOOOO000 .startswith ('<plugin>'):O0OOOO0000000O00O ='plugin'#line:298
234 elif OOOOOO00OOOOOO000 .startswith ('<info>')or O0OOOO0OOOO0OO00O =='0':O0OOOO0000000O00O ='0'#line:299
235 else :O0OOOO0000000O00O ='directory'#line:300
236 if O0OOOO0000000O00O =='play'and O0O00OO0OO0OO0O00 :O0OOOO0000000O00O ='xdirectory'#line:301
237 if not O0OOO000O00O00000 =='':#line:303
238 OO0OOO00000OO0O0O .hash .append ({'regex':OOOOOOOOOO00OOO00 ,'response':O0OOO000O00O00000 })#line:304
239 O0OOOO0OOOO0OO00O +='|regex=%s'%OOOOOOOOOO00OOO00 #line:305
240 if O0OOOO0000000O00O in ['directory','xdirectory','plugin']:#line:307
241 O00000OO000OO0O0O =True #line:308
242 else :#line:309
243 O00000OO000OO0O0O =False #line:310
244 try :OOO0O00O0OO000000 =O000O0O0O00OO000O .findall ('<content>(.+?)</content>',OO0OOOOOOOO00O000 )[0 ]#line:312
245 except :OOO0O00O0OO000000 ='0'#line:313
246 if OOO0O00O0OO000000 =='0':#line:314
247 try :OOO0O00O0OO000000 =O000O0O0O00OO000O .findall ('<content>(.+?)</content>',OOOOOO00OOOOOO000 )[0 ]#line:315
248 except :OOO0O00O0OO000000 ='0'#line:316
249 if not OOO0O00O0OO000000 =='0':OOO0O00O0OO000000 +='s'#line:317
250 if 'tvshow'in OOO0O00O0OO000000 and not O0OOOO0OOOO0OO00O .strip ().endswith ('.xml'):#line:319
251 O0OOOO0OOOO0OO00O ='<preset>tvindexer</preset><url>%s</url><thumbnail>%s</thumbnail><fanart>%s</fanart>%s'%(O0OOOO0OOOO0OO00O ,OOO00O0OOO0OOOO00 ,O0OO0O0O00O0OO0OO ,OO0OOOOOOOO00O000 )#line:320
252 O0OOOO0000000O00O ='tvtuner'#line:321
253 if 'tvtuner'in OOO0O00O0OO000000 and not O0OOOO0OOOO0OO00O .strip ().endswith ('.xml'):#line:323
254 O0OOOO0OOOO0OO00O ='<preset>tvtuner</preset><url>%s</url><thumbnail>%s</thumbnail><fanart>%s</fanart>%s'%(O0OOOO0OOOO0OO00O ,OOO00O0OOO0OOOO00 ,O0OO0O0O00O0OO0OO ,OO0OOOOOOOO00O000 )#line:324
255 O0OOOO0000000O00O ='tvtuner'#line:325
256 try :O0OO0O0O000O0O0OO =O000O0O0O00OO000O .findall ('<imdb>(.+?)</imdb>',OO0OOOOOOOO00O000 )[0 ]#line:327
257 except :O0OO0O0O000O0O0OO ='0'#line:328
258 try :OOOO0O00000OOO000 =O000O0O0O00OO000O .findall ('<tvdb>(.+?)</tvdb>',OO0OOOOOOOO00O000 )[0 ]#line:330
259 except :OOOO0O00000OOO000 ='0'#line:331
260 try :O00000OO0000O0OO0 =O000O0O0O00OO000O .findall ('<tvshowtitle>(.+?)</tvshowtitle>',OO0OOOOOOOO00O000 )[0 ]#line:333
261 except :O00000OO0000O0OO0 ='0'#line:334
262 try :O00OOO0OO000O0000 =O000O0O0O00OO000O .findall ('<title>(.+?)</title>',OO0OOOOOOOO00O000 )[0 ]#line:336
263 except :O00OOO0OO000O0000 ='0'#line:337
264 if O00OOO0OO000O0000 =='0'and not O00000OO0000O0OO0 =='0':O00OOO0OO000O0000 =O00000OO0000O0OO0 #line:339
265 try :OO00000OO00O0O0OO =O000O0O0O00OO000O .findall ('<year>(.+?)</year>',OO0OOOOOOOO00O000 )[0 ]#line:341
266 except :OO00000OO00O0O0OO ='0'#line:342
267 try :O00OO0O0OO0O00000 =O000O0O0O00OO000O .findall ('<premiered>(.+?)</premiered>',OO0OOOOOOOO00O000 )[0 ]#line:344
268 except :O00OO0O0OO0O00000 ='0'#line:345
269 try :O0OOO0OO0OO0O0O00 =O000O0O0O00OO000O .findall ('<season>(.+?)</season>',OO0OOOOOOOO00O000 )[0 ]#line:347
270 except :O0OOO0OO0OO0O0O00 ='0'#line:348
271 try :O000OOOOOOO00O0O0 =O000O0O0O00OO000O .findall ('<episode>(.+?)</episode>',OO0OOOOOOOO00O000 )[0 ]#line:350
272 except :O000OOOOOOO00O0O0 ='0'#line:351
273 OO0OOO00000OO0O0O .list .append ({'name':OO0OO0OOO0OO0O000 ,'vip':O00OOO0OO0O0OO0O0 ,'url':O0OOOO0OOOO0OO00O ,'action':O0OOOO0000000O00O ,'folder':O00000OO000OO0O0O ,'poster':OOO00O0OOO0OOOO00 ,'banner':'0','fanart':O0OO0O0O00O0OO0OO ,'content':OOO0O00O0OO000000 ,'imdb':O0OO0O0O000O0O0OO ,'tvdb':OOOO0O00000OOO000 ,'tmdb':'0','title':O00OOO0OO000O0000 ,'originaltitle':O00OOO0OO000O0000 ,'tvshowtitle':O00000OO0000O0OO0 ,'year':OO00000OO00O0O0OO ,'premiered':O00OO0O0OO0O00000 ,'season':O0OOO0OO0OO0O0O00 ,'episode':O000OOOOOOO00O0O0 })#line:353
274 except :#line:354
275 pass #line:355
276 OO0OO0O0000OOO0OO .insert (OO0OOO00000OO0O0O .hash )#line:357
277 return OO0OOO00000OO0O0O .list #line:359
278 def account_filter (OOO00O0OO00OO00O0 ,OOOO00O0OO0O00O00 ):#line:362
279 if (O0OOOO0OOO00OO0OO .setting ('ustvnow_email')==''or O0OOOO0OOO00OO0OO .setting ('ustvnow_pass')==''):#line:363
280 OOOO00O0OO0O00O00 =O000O0O0O00OO000O .sub ('http(?:s|)://(?:www\.|)ustvnow\.com/.+?<','<',OOOO00O0OO0O00O00 )#line:364
281 if (O0OOOO0OOO00OO0OO .setting ('streamlive_user')==''or O0OOOO0OOO00OO0OO .setting ('streamlive_pass')==''):#line:366
282 OOOO00O0OO0O00O00 =O000O0O0O00OO000O .sub ('http(?:s|)://(?:www\.|)streamlive\.to/.+?<','<',OOOO00O0OO0O00O00 )#line:367
283 return OOOO00O0OO0O00O00 #line:369
284 def worker (O0O0OOOOO0OOO0O00 ):#line:372
285 if not O0OOOO0OOO00OO0OO .setting ('metadata')=='true':return #line:373
286 O0O0OOOOO0OOO0O00 .imdb_info_link ='http://www.omdbapi.com/?i=%s&plot=full&r=json'#line:375
287 O0O0OOOOO0OOO0O00 .tvmaze_info_link ='http://api.tvmaze.com/lookup/shows?thetvdb=%s'#line:376
288 O0O0OOOOO0OOO0O00 .lang ='en'#line:377
289 O0O0OOOOO0OOO0O00 .meta =[]#line:379
290 OOOO00O0O000OO0O0 =len (O0O0OOOOO0OOO0O00 .list )#line:380
291 if OOOO00O0O000OO0O0 ==0 :return #line:381
292 for O0OOO00OOO00O00O0 in range (0 ,OOOO00O0O000OO0O0 ):O0O0OOOOO0OOO0O00 .list [O0OOO00OOO00O00O0 ].update ({'metacache':False })#line:383
293 O0O0OOOOO0OOO0O00 .list =OOO0O0O0O0O0OOO00 .fetch (O0O0OOOOO0OOO0O00 .list ,O0O0OOOOO0OOO0O00 .lang )#line:384
294 OOOO0OO0O000O00O0 =[O0O0O0O0O0OO00O0O ['imdb']for O0O0O0O0O0OO00O0O in O0O0OOOOO0OOO0O00 .list ]#line:386
295 OOOO0OO0O000O00O0 =[O0OO00O0000OOOOOO for O00OO0000O0O0000O ,O0OO00O0000OOOOOO in enumerate (OOOO0OO0O000O00O0 )if O0OO00O0000OOOOOO not in OOOO0OO0O000O00O0 [:O00OO0000O0O0000O ]]#line:387
296 if len (OOOO0OO0O000O00O0 )==1 :#line:388
297 O0O0OOOOO0OOO0O00 .movie_info (0 );O0O0OOOOO0OOO0O00 .tv_info (0 )#line:389
298 if O0O0OOOOO0OOO0O00 .meta :OOO0O0O0O0O0OOO00 .insert (O0O0OOOOO0OOO0O00 .meta )#line:390
299 for O0OOO00OOO00O00O0 in range (0 ,OOOO00O0O000OO0O0 ):O0O0OOOOO0OOO0O00 .list [O0OOO00OOO00O00O0 ].update ({'metacache':False })#line:392
300 O0O0OOOOO0OOO0O00 .list =OOO0O0O0O0O0OOO00 .fetch (O0O0OOOOO0OOO0O00 .list ,O0O0OOOOO0OOO0O00 .lang )#line:393
301 for O0O0O00O00OOOO00O in range (0 ,OOOO00O0O000OO0O0 ,50 ):#line:395
302 O00OO0OOO00O0OO0O =[]#line:396
303 for O0OOO00OOO00O00O0 in range (O0O0O00O00OOOO00O ,O0O0O00O00OOOO00O +50 ):#line:397
304 if O0OOO00OOO00O00O0 <=OOOO00O0O000OO0O0 :O00OO0OOO00O0OO0O .append (O00O0O000O0O00000 .Thread (O0O0OOOOO0OOO0O00 .movie_info ,O0OOO00OOO00O00O0 ))#line:398
305 if O0OOO00OOO00O00O0 <=OOOO00O0O000OO0O0 :O00OO0OOO00O0OO0O .append (O00O0O000O0O00000 .Thread (O0O0OOOOO0OOO0O00 .tv_info ,O0OOO00OOO00O00O0 ))#line:399
306 [OO0O0O0000O0OOO0O .start ()for OO0O0O0000O0OOO0O in O00OO0OOO00O0OO0O ]#line:400
307 [O00OO00O00O0000OO .join ()for O00OO00O00O0000OO in O00OO0OOO00O0OO0O ]#line:401
308 if O0O0OOOOO0OOO0O00 .meta :OOO0O0O0O0O0OOO00 .insert (O0O0OOOOO0OOO0O00 .meta )#line:403
309 def movie_info (OOO00O000O000O0OO ,O0000O0OOO000O0OO ):#line:406
310 try :#line:407
311 if OOO00O000O000O0OO .list [O0000O0OOO000O0OO ]['metacache']==True :raise Exception ()#line:408
312 if not OOO00O000O000O0OO .list [O0000O0OOO000O0OO ]['content']=='movies':raise Exception ()#line:410
313 O0O0OOOO0OOO0OOO0 =OOO00O000O000O0OO .list [O0000O0OOO000O0OO ]['imdb']#line:412
314 if O0O0OOOO0OOO0OOO0 =='0':raise Exception ()#line:413
315 OO000O00OO000O0O0 =OOO00O000O000O0OO .imdb_info_link %O0O0OOOO0OOO0OOO0 #line:415
316 O00O000O00000000O =O0OOOO000O0O00O0O .request (OO000O00OO000O0O0 ,timeout ='10')#line:417
317 O00O000O00000000O =OOOOO0OOOOOOOOO00 .loads (O00O000O00000000O )#line:418
318 if 'Error'in O00O000O00000000O and 'incorrect imdb'in O00O000O00000000O ['Error'].lower ():#line:420
319 return OOO00O000O000O0OO .meta .append ({'imdb':O0O0OOOO0OOO0OOO0 ,'tmdb':'0','tvdb':'0','lang':OOO00O000O000O0OO .lang ,'item':{'code':'0'}})#line:421
320 OOO00OO0OO0000OO0 =O00O000O00000000O ['Title']#line:423
321 OOO00OO0OO0000OO0 =OOO00OO0OO0000OO0 .encode ('utf-8')#line:424
322 if not OOO00OO0OO0000OO0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'title':OOO00OO0OO0000OO0 })#line:425
323 O00OO00OOOOO00OOO =O00O000O00000000O ['Year']#line:427
324 O00OO00OOOOO00OOO =O00OO00OOOOO00OOO .encode ('utf-8')#line:428
325 if not O00OO00OOOOO00OOO =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'year':O00OO00OOOOO00OOO })#line:429
326 O0O0OOOO0OOO0OOO0 =O00O000O00000000O ['imdbID']#line:431
327 if O0O0OOOO0OOO0OOO0 ==None or O0O0OOOO0OOO0OOO0 ==''or O0O0OOOO0OOO0OOO0 =='N/A':O0O0OOOO0OOO0OOO0 ='0'#line:432
328 O0O0OOOO0OOO0OOO0 =O0O0OOOO0OOO0OOO0 .encode ('utf-8')#line:433
329 if not O0O0OOOO0OOO0OOO0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'imdb':O0O0OOOO0OOO0OOO0 ,'code':O0O0OOOO0OOO0OOO0 })#line:434
330 O000OOOOOO00O00O0 =O00O000O00000000O ['Released']#line:436
331 if O000OOOOOO00O00O0 ==None or O000OOOOOO00O00O0 ==''or O000OOOOOO00O00O0 =='N/A':O000OOOOOO00O00O0 ='0'#line:437
332 O000OOOOOO00O00O0 =O000O0O0O00OO000O .findall ('(\d*) (.+?) (\d*)',O000OOOOOO00O00O0 )#line:438
333 try :O000OOOOOO00O00O0 ='%s-%s-%s'%(O000OOOOOO00O00O0 [0 ][2 ],{'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'}[O000OOOOOO00O00O0 [0 ][1 ]],O000OOOOOO00O00O0 [0 ][0 ])#line:439
334 except :O000OOOOOO00O00O0 ='0'#line:440
335 O000OOOOOO00O00O0 =O000OOOOOO00O00O0 .encode ('utf-8')#line:441
336 if not O000OOOOOO00O00O0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'premiered':O000OOOOOO00O00O0 })#line:442
337 O000O0OOOO0OOOO0O =O00O000O00000000O ['Genre']#line:444
338 if O000O0OOOO0OOOO0O ==None or O000O0OOOO0OOOO0O ==''or O000O0OOOO0OOOO0O =='N/A':O000O0OOOO0OOOO0O ='0'#line:445
339 O000O0OOOO0OOOO0O =O000O0OOOO0OOOO0O .replace (', ',' / ')#line:446
340 O000O0OOOO0OOOO0O =O000O0OOOO0OOOO0O .encode ('utf-8')#line:447
341 if not O000O0OOOO0OOOO0O =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'genre':O000O0OOOO0OOOO0O })#line:448
342 O0000O0OOO0000O00 =O00O000O00000000O ['Runtime']#line:450
343 if O0000O0OOO0000O00 ==None or O0000O0OOO0000O00 ==''or O0000O0OOO0000O00 =='N/A':O0000O0OOO0000O00 ='0'#line:451
344 O0000O0OOO0000O00 =O000O0O0O00OO000O .sub ('[^0-9]','',str (O0000O0OOO0000O00 ))#line:452
345 try :O0000O0OOO0000O00 =str (int (O0000O0OOO0000O00 )*60 )#line:453
346 except :pass #line:454
347 O0000O0OOO0000O00 =O0000O0OOO0000O00 .encode ('utf-8')#line:455
348 if not O0000O0OOO0000O00 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'duration':O0000O0OOO0000O00 })#line:456
349 OO0O0OO00OOOOO0O0 =O00O000O00000000O ['imdbRating']#line:458
350 if OO0O0OO00OOOOO0O0 ==None or OO0O0OO00OOOOO0O0 ==''or OO0O0OO00OOOOO0O0 =='N/A'or OO0O0OO00OOOOO0O0 =='0.0':OO0O0OO00OOOOO0O0 ='0'#line:459
351 OO0O0OO00OOOOO0O0 =OO0O0OO00OOOOO0O0 .encode ('utf-8')#line:460
352 if not OO0O0OO00OOOOO0O0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'rating':OO0O0OO00OOOOO0O0 })#line:461
353 OO0OO00OO0000000O =O00O000O00000000O ['imdbVotes']#line:463
354 try :OO0OO00OO0000000O =str (format (int (OO0OO00OO0000000O ),',d'))#line:464
355 except :pass #line:465
356 if OO0OO00OO0000000O ==None or OO0OO00OO0000000O ==''or OO0OO00OO0000000O =='N/A':OO0OO00OO0000000O ='0'#line:466
357 OO0OO00OO0000000O =OO0OO00OO0000000O .encode ('utf-8')#line:467
358 if not OO0OO00OO0000000O =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'votes':OO0OO00OO0000000O })#line:468
359 OO0O0OOOOOOOOOOOO =O00O000O00000000O ['Rated']#line:470
360 if OO0O0OOOOOOOOOOOO ==None or OO0O0OOOOOOOOOOOO ==''or OO0O0OOOOOOOOOOOO =='N/A':OO0O0OOOOOOOOOOOO ='0'#line:471
361 OO0O0OOOOOOOOOOOO =OO0O0OOOOOOOOOOOO .encode ('utf-8')#line:472
362 if not OO0O0OOOOOOOOOOOO =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'mpaa':OO0O0OOOOOOOOOOOO })#line:473
363 OO00O00OO0OO0OOOO =O00O000O00000000O ['Director']#line:475
364 if OO00O00OO0OO0OOOO ==None or OO00O00OO0OO0OOOO ==''or OO00O00OO0OO0OOOO =='N/A':OO00O00OO0OO0OOOO ='0'#line:476
365 OO00O00OO0OO0OOOO =OO00O00OO0OO0OOOO .replace (', ',' / ')#line:477
366 OO00O00OO0OO0OOOO =O000O0O0O00OO000O .sub (r'\(.*?\)','',OO00O00OO0OO0OOOO )#line:478
367 OO00O00OO0OO0OOOO =' '.join (OO00O00OO0OO0OOOO .split ())#line:479
368 OO00O00OO0OO0OOOO =OO00O00OO0OO0OOOO .encode ('utf-8')#line:480
369 if not OO00O00OO0OO0OOOO =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'director':OO00O00OO0OO0OOOO })#line:481
370 O0OO00O0OOOOOOOOO =O00O000O00000000O ['Writer']#line:483
371 if O0OO00O0OOOOOOOOO ==None or O0OO00O0OOOOOOOOO ==''or O0OO00O0OOOOOOOOO =='N/A':O0OO00O0OOOOOOOOO ='0'#line:484
372 O0OO00O0OOOOOOOOO =O0OO00O0OOOOOOOOO .replace (', ',' / ')#line:485
373 O0OO00O0OOOOOOOOO =O000O0O0O00OO000O .sub (r'\(.*?\)','',O0OO00O0OOOOOOOOO )#line:486
374 O0OO00O0OOOOOOOOO =' '.join (O0OO00O0OOOOOOOOO .split ())#line:487
375 O0OO00O0OOOOOOOOO =O0OO00O0OOOOOOOOO .encode ('utf-8')#line:488
376 if not O0OO00O0OOOOOOOOO =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'writer':O0OO00O0OOOOOOOOO })#line:489
377 O00O0000000OO0OO0 =O00O000O00000000O ['Actors']#line:491
378 if O00O0000000OO0OO0 ==None or O00O0000000OO0OO0 ==''or O00O0000000OO0OO0 =='N/A':O00O0000000OO0OO0 ='0'#line:492
379 O00O0000000OO0OO0 =[O00OOO0OO00O00000 .strip ()for O00OOO0OO00O00000 in O00O0000000OO0OO0 .split (',')if not O00OOO0OO00O00000 =='']#line:493
380 try :O00O0000000OO0OO0 =[(O0O000O00O0O00OOO .encode ('utf-8'),'')for O0O000O00O0O00OOO in O00O0000000OO0OO0 ]#line:494
381 except :O00O0000000OO0OO0 =[]#line:495
382 if O00O0000000OO0OO0 ==[]:O00O0000000OO0OO0 ='0'#line:496
383 if not O00O0000000OO0OO0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'cast':O00O0000000OO0OO0 })#line:497
384 OO0000OOOO00000O0 =O00O000O00000000O ['Plot']#line:499
385 if OO0000OOOO00000O0 ==None or OO0000OOOO00000O0 ==''or OO0000OOOO00000O0 =='N/A':OO0000OOOO00000O0 ='0'#line:500
386 OO0000OOOO00000O0 =O0OOOO000O0O00O0O .replaceHTMLCodes (OO0000OOOO00000O0 )#line:501
387 OO0000OOOO00000O0 =OO0000OOOO00000O0 .encode ('utf-8')#line:502
388 if not OO0000OOOO00000O0 =='0':OOO00O000O000O0OO .list [O0000O0OOO000O0OO ].update ({'plot':OO0000OOOO00000O0 })#line:503
389 OOO00O000O000O0OO .meta .append ({'imdb':O0O0OOOO0OOO0OOO0 ,'tmdb':'0','tvdb':'0','lang':OOO00O000O000O0OO .lang ,'item':{'title':OOO00OO0OO0000OO0 ,'year':O00OO00OOOOO00OOO ,'code':O0O0OOOO0OOO0OOO0 ,'imdb':O0O0OOOO0OOO0OOO0 ,'premiered':O000OOOOOO00O00O0 ,'genre':O000O0OOOO0OOOO0O ,'duration':O0000O0OOO0000O00 ,'rating':OO0O0OO00OOOOO0O0 ,'votes':OO0OO00OO0000000O ,'mpaa':OO0O0OOOOOOOOOOOO ,'director':OO00O00OO0OO0OOOO ,'writer':O0OO00O0OOOOOOOOO ,'cast':O00O0000000OO0OO0 ,'plot':OO0000OOOO00000O0 }})#line:505
390 except :#line:506
391 pass #line:507
392 def tv_info (OOOOO00OOOO0O0OOO ,O000O0OOOO00O0O0O ):#line:510
393 try :#line:511
394 if OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ]['metacache']==True :raise Exception ()#line:512
395 if not OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ]['content']in ['tvshows','seasons','episodes']:raise Exception ()#line:514
396 OOO000OOOO00OOOOO =OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ]['tvdb']#line:516
397 if OOO000OOOO00OOOOO =='0':raise Exception ()#line:517
398 OOO00000000OOOOO0 =OOOOO00OOOO0O0OOO .tvmaze_info_link %OOO000OOOO00OOOOO #line:519
399 OOO0O0OO0O00OOOOO =O0OOOO000O0O00O0O .request (OOO00000000OOOOO0 ,output ='extended',error =True ,timeout ='10')#line:521
400 if OOO0O0OO0O00OOOOO [1 ]=='404':#line:523
401 return OOOOO00OOOO0O0OOO .meta .append ({'imdb':'0','tmdb':'0','tvdb':OOO000OOOO00OOOOO ,'lang':OOOOO00OOOO0O0OOO .lang ,'item':{'code':'0'}})#line:524
402 OOO0O0OO0O00OOOOO =OOOOO0OOOOOOOOO00 .loads (OOO0O0OO0O00OOOOO [0 ])#line:526
403 OO0O000OOOOO0O0OO =OOO0O0OO0O00OOOOO ['name']#line:528
404 OO0O000OOOOO0O0OO =OO0O000OOOOO0O0OO .encode ('utf-8')#line:529
405 if not OO0O000OOOOO0O0OO =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'tvshowtitle':OO0O000OOOOO0O0OO })#line:530
406 O000OOO0OO000000O =OOO0O0OO0O00OOOOO ['premiered']#line:532
407 O000OOO0OO000000O =O000O0O0O00OO000O .findall ('(\d{4})',O000OOO0OO000000O )[0 ]#line:533
408 O000OOO0OO000000O =O000OOO0OO000000O .encode ('utf-8')#line:534
409 if not O000OOO0OO000000O =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'year':O000OOO0OO000000O })#line:535
410 try :O000OOOO0OOOO0O0O =OOO0O0OO0O00OOOOO ['externals']['imdb']#line:537
411 except :O000OOOO0OOOO0O0O ='0'#line:538
412 if O000OOOO0OOOO0O0O ==''or O000OOOO0OOOO0O0O ==None :O000OOOO0OOOO0O0O ='0'#line:539
413 O000OOOO0OOOO0O0O =O000OOOO0OOOO0O0O .encode ('utf-8')#line:540
414 if OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ]['imdb']=='0'and not O000OOOO0OOOO0O0O =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'imdb':O000OOOO0OOOO0O0O })#line:541
415 try :O00OO0O0OOO0OOO00 =OOO0O0OO0O00OOOOO ['network']['name']#line:543
416 except :O00OO0O0OOO0OOO00 ='0'#line:544
417 if O00OO0O0OOO0OOO00 ==''or O00OO0O0OOO0OOO00 ==None :O00OO0O0OOO0OOO00 ='0'#line:545
418 O00OO0O0OOO0OOO00 =O00OO0O0OOO0OOO00 .encode ('utf-8')#line:546
419 if not O00OO0O0OOO0OOO00 =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'studio':O00OO0O0OOO0OOO00 })#line:547
420 O0O000O00O000O0O0 =OOO0O0OO0O00OOOOO ['genres']#line:549
421 if O0O000O00O000O0O0 ==''or O0O000O00O000O0O0 ==None or O0O000O00O000O0O0 ==[]:O0O000O00O000O0O0 ='0'#line:550
422 O0O000O00O000O0O0 =' / '.join (O0O000O00O000O0O0 )#line:551
423 O0O000O00O000O0O0 =O0O000O00O000O0O0 .encode ('utf-8')#line:552
424 if not O0O000O00O000O0O0 =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'genre':O0O000O00O000O0O0 })#line:553
425 try :O000OO00O00OO0O0O =str (OOO0O0OO0O00OOOOO ['runtime'])#line:555
426 except :O000OO00O00OO0O0O ='0'#line:556
427 if O000OO00O00OO0O0O ==''or O000OO00O00OO0O0O ==None :O000OO00O00OO0O0O ='0'#line:557
428 try :O000OO00O00OO0O0O =str (int (O000OO00O00OO0O0O )*60 )#line:558
429 except :pass #line:559
430 O000OO00O00OO0O0O =O000OO00O00OO0O0O .encode ('utf-8')#line:560
431 if not O000OO00O00OO0O0O =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'duration':O000OO00O00OO0O0O })#line:561
432 OOOO0OOO0O0OOOO00 =str (OOO0O0OO0O00OOOOO ['rating']['average'])#line:563
433 if OOOO0OOO0O0OOOO00 ==''or OOOO0OOO0O0OOOO00 ==None :OOOO0OOO0O0OOOO00 ='0'#line:564
434 OOOO0OOO0O0OOOO00 =OOOO0OOO0O0OOOO00 .encode ('utf-8')#line:565
435 if not OOOO0OOO0O0OOOO00 =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'rating':OOOO0OOO0O0OOOO00 })#line:566
436 O00OO00O00OO0OO00 =OOO0O0OO0O00OOOOO ['summary']#line:568
437 if O00OO00O00OO0OO00 ==''or O00OO00O00OO0OO00 ==None :O00OO00O00OO0OO00 ='0'#line:569
438 O00OO00O00OO0OO00 =O000O0O0O00OO000O .sub ('\n|<.+?>|</.+?>|.+?#\d*:','',O00OO00O00OO0OO00 )#line:570
439 O00OO00O00OO0OO00 =O00OO00O00OO0OO00 .encode ('utf-8')#line:571
440 if not O00OO00O00OO0OO00 =='0':OOOOO00OOOO0O0OOO .list [O000O0OOOO00O0O0O ].update ({'plot':O00OO00O00OO0OO00 })#line:572
441 OOOOO00OOOO0O0OOO .meta .append ({'imdb':O000OOOO0OOOO0O0O ,'tmdb':'0','tvdb':OOO000OOOO00OOOOO ,'lang':OOOOO00OOOO0O0OOO .lang ,'item':{'tvshowtitle':OO0O000OOOOO0O0OO ,'year':O000OOO0OO000000O ,'code':O000OOOO0OOOO0O0O ,'imdb':O000OOOO0OOOO0O0O ,'tvdb':OOO000OOOO00OOOOO ,'studio':O00OO0O0OOO0OOO00 ,'genre':O0O000O00O000O0O0 ,'duration':O000OO00O00OO0O0O ,'rating':OOOO0OOO0O0OOOO00 ,'plot':O00OO00O00OO0OO00 }})#line:574
442 except :#line:575
443 pass #line:576
444 def addDirectory (OOOOOOOOOO0OO0O00 ,O0OO000OO0O0O0OO0 ,queue =False ):#line:579
445 if O0OO000OO0O0O0OO0 ==None or len (O0OO000OO0O0O0OO0 )==0 :return #line:580
446 OO0O0OO00OOOOO0OO =O0O000O0O0OOOO00O .argv [0 ]#line:582
447 O0O0OO0000OOO0OO0 =O0OO0O0OOO00OOO00 =O0OOOO0OOO00OO0OO .addonInfo ('icon')#line:583
448 O0O0O0000OO00OOOO =O0OOOO0OOO00OO0OO .addonInfo ('fanart')#line:584
449 O00O00O0000O000O0 =O0OOOO0OOO00OO0OO .playlist #line:586
450 if not queue ==False :O00O00O0000O000O0 .clear ()#line:587
451 try :OO0O0O00O000000OO =True if 'testings.xml'in O0OOOO0OOO00OO0OO .listDir (O0OOOO0OOO00OO0OO .dataPath )[1 ]else False #line:589
452 except :OO0O0O00O000000OO =False #line:590
453 OO0OO0O0OO0OO00O0 =[O0OO000000O0O000O ['content']for O0OO000000O0O000O in O0OO000OO0O0O0OO0 if 'content'in O0OO000000O0O000O ]#line:592
454 if 'movies'in OO0OO0O0OO0OO00O0 :OO0OO0O0OO0OO00O0 ='movies'#line:593
455 elif 'tvshows'in OO0OO0O0OO0OO00O0 :OO0OO0O0OO0OO00O0 ='tvshows'#line:594
456 elif 'seasons'in OO0OO0O0OO0OO00O0 :OO0OO0O0OO0OO00O0 ='seasons'#line:595
457 elif 'episodes'in OO0OO0O0OO0OO00O0 :OO0OO0O0OO0OO00O0 ='episodes'#line:596
458 elif 'addons'in OO0OO0O0OO0OO00O0 :OO0OO0O0OO0OO00O0 ='addons'#line:597
459 else :OO0OO0O0OO0OO00O0 ='videos'#line:598
460 for OO000OO0O0O00O0OO in O0OO000OO0O0O0OO0 :#line:600
461 try :#line:601
462 try :O0000OO00O0OOO000 =O0OOOO0OOO00OO0OO .lang (int (OO000OO0O0O00O0OO ['name'])).encode ('utf-8')#line:602
463 except :O0000OO00O0OOO000 =OO000OO0O0O00O0OO ['name']#line:603
464 OO0O000O000O00O00 ='%s?action=%s'%(OO0O0OO00OOOOO0OO ,OO000OO0O0O00O0OO ['action'])#line:605
465 try :OO0O000O000O00O00 +='&url=%s'%OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['url'])#line:606
466 except :pass #line:607
467 try :OO0O000O000O00O00 +='&content=%s'%OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['content'])#line:608
468 except :pass #line:609
469 if OO000OO0O0O00O0OO ['action']=='plugin'and 'url'in OO000OO0O0O00O0OO :OO0O000O000O00O00 =OO000OO0O0O00O0OO ['url']#line:611
470 try :OOO00O0O0O0O00000 =dict (OO0O0OOO0O000OOO0 .parse_qsl (OO0O0OOO0O000OOO0 .urlparse (OO0O000O000O00O00 ).query ))['action']#line:613
471 except :OOO00O0O0O0O00000 =None #line:614
472 if OOO00O0O0O0O00000 =='developer'and not OO0O0O00O000000OO ==True :raise Exception ()#line:615
473 OO00OO000O0OOO000 =OO000OO0O0O00O0OO ['poster']if 'poster'in OO000OO0O0O00O0OO else '0'#line:617
474 O00O00O0OO0O00OO0 =OO000OO0O0O00O0OO ['banner']if 'banner'in OO000OO0O0O00O0OO else '0'#line:618
475 OO0O00O000O0O0000 =OO000OO0O0O00O0OO ['fanart']if 'fanart'in OO000OO0O0O00O0OO else '0'#line:619
476 if OO00OO000O0OOO000 =='0':OO00OO000O0OOO000 =O0O0OO0000OOO0OO0 #line:620
477 if O00O00O0OO0O00OO0 =='0'and OO00OO000O0OOO000 =='0':O00O00O0OO0O00OO0 =O0OO0O0OOO00OOO00 #line:621
478 elif O00O00O0OO0O00OO0 =='0':O00O00O0OO0O00OO0 =OO00OO000O0OOO000 #line:622
479 O00O000000000OOOO =OO000OO0O0O00O0OO ['content']if 'content'in OO000OO0O0O00O0OO else '0'#line:624
480 OOO00OO0O0000O0OO =OO000OO0O0O00O0OO ['folder']if 'folder'in OO000OO0O0O00O0OO else True #line:626
481 OO0O0000O0OO000O0 =dict ((O000O0OO000OO0OO0 ,O0O0OO000000OO0OO )for O000O0OO000OO0OO0 ,O0O0OO000000OO0OO in OO000OO0O0O00O0OO .iteritems ()if not O0O0OO000000OO0OO =='0')#line:628
482 O0OOO000O0OOOOOOO =[]#line:630
483 if O00O000000000OOOO in ['movies','tvshows']:#line:632
484 OO0O0000O0OO000O0 .update ({'trailer':'%s?action=trailer&name=%s'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (O0000OO00O0OOO000 ))})#line:633
485 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30707 ).encode ('utf-8'),'RunPlugin(%s?action=trailer&name=%s)'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (O0000OO00O0OOO000 ))))#line:634
486 if O00O000000000OOOO in ['movies','tvshows','seasons','episodes']:#line:636
487 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30708 ).encode ('utf-8'),'XBMC.Action(Info)'))#line:637
488 if (OOO00OO0O0000O0OO ==False and not '|regex='in str (OO000OO0O0O00O0OO .get ('url')))or (OOO00OO0O0000O0OO ==True and O00O000000000OOOO in ['tvshows','seasons']):#line:639
489 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30723 ).encode ('utf-8'),'RunPlugin(%s?action=queueItem)'%OO0O0OO00OOOOO0OO ))#line:640
490 if O00O000000000OOOO =='movies':#line:642
491 try :O00000OOO0O00OOOO ='%s (%s)'%(OO000OO0O0O00O0OO ['title'],OO000OO0O0O00O0OO ['year'])#line:643
492 except :O00000OOO0O00OOOO =O0000OO00O0OOO000 #line:644
493 try :O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30722 ).encode ('utf-8'),'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (O00000OOO0O00OOOO ),OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['url']),OO0OOOO0OOOOOOO00 .quote_plus (OO00OO000O0OOO000 ))))#line:645
494 except :pass #line:646
495 elif O00O000000000OOOO =='episodes':#line:647
496 try :O00000OOO0O00OOOO ='%s S%02dE%02d'%(OO000OO0O0O00O0OO ['tvshowtitle'],int (OO000OO0O0O00O0OO ['season']),int (OO000OO0O0O00O0OO ['episode']))#line:648
497 except :O00000OOO0O00OOOO =O0000OO00O0OOO000 #line:649
498 try :O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30722 ).encode ('utf-8'),'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (O00000OOO0O00OOOO ),OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['url']),OO0OOOO0OOOOOOO00 .quote_plus (OO00OO000O0OOO000 ))))#line:650
499 except :pass #line:651
500 elif O00O000000000OOOO =='songs':#line:652
501 try :O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30722 ).encode ('utf-8'),'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (O0000OO00O0OOO000 ),OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['url']),OO0OOOO0OOOOOOO00 .quote_plus (OO00OO000O0OOO000 ))))#line:653
502 except :pass #line:654
503 if OO0OO0O0OO0OO00O0 =='movies':#line:656
504 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30711 ).encode ('utf-8'),'RunPlugin(%s?action=addView&content=movies)'%OO0O0OO00OOOOO0OO ))#line:657
505 elif OO0OO0O0OO0OO00O0 =='tvshows':#line:658
506 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30712 ).encode ('utf-8'),'RunPlugin(%s?action=addView&content=tvshows)'%OO0O0OO00OOOOO0OO ))#line:659
507 elif OO0OO0O0OO0OO00O0 =='seasons':#line:660
508 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30713 ).encode ('utf-8'),'RunPlugin(%s?action=addView&content=seasons)'%OO0O0OO00OOOOO0OO ))#line:661
509 elif OO0OO0O0OO0OO00O0 =='episodes':#line:662
510 O0OOO000O0OOOOOOO .append ((O0OOOO0OOO00OO0OO .lang (30714 ).encode ('utf-8'),'RunPlugin(%s?action=addView&content=episodes)'%OO0O0OO00OOOOO0OO ))#line:663
511 if OO0O0O00O000000OO ==True :#line:665
512 try :O0OOO000O0OOOOOOO .append (('Open in browser','RunPlugin(%s?action=browser&url=%s)'%(OO0O0OO00OOOOO0OO ,OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['url']))))#line:666
513 except :pass #line:667
514 O0000O0OOO0O00OO0 =O0OOOO0OOO00OO0OO .item (label =O0000OO00O0OOO000 ,iconImage =OO00OO000O0OOO000 ,thumbnailImage =OO00OO000O0OOO000 )#line:670
515 try :O0000O0OOO0O00OO0 .setArt ({'poster':OO00OO000O0OOO000 ,'tvshow.poster':OO00OO000O0OOO000 ,'season.poster':OO00OO000O0OOO000 ,'banner':O00O00O0OO0O00OO0 ,'tvshow.banner':O00O00O0OO0O00OO0 ,'season.banner':O00O00O0OO0O00OO0 })#line:672
516 except :pass #line:673
517 if not OO0O00O000O0O0000 =='0':#line:675
518 O0000O0OOO0O00OO0 .setProperty ('Fanart_Image',OO0O00O000O0O0000 )#line:676
519 elif not O0O0O0000OO00OOOO ==None :#line:677
520 O0000O0OOO0O00OO0 .setProperty ('Fanart_Image',O0O0O0000OO00OOOO )#line:678
521 if queue ==False :#line:680
522 O0000O0OOO0O00OO0 .setInfo (type ='Video',infoLabels =OO0O0000O0OO000O0 )#line:681
523 O0000O0OOO0O00OO0 .addContextMenuItems (O0OOO000O0OOOOOOO )#line:682
524 O0OOOO0OOO00OO0OO .addItem (handle =int (O0O000O0O0OOOO00O .argv [1 ]),url =OO0O000O000O00O00 ,listitem =O0000O0OOO0O00OO0 ,isFolder =OOO00OO0O0000O0OO )#line:683
525 else :#line:684
526 O0000O0OOO0O00OO0 .setInfo (type ='Video',infoLabels =OO0O0000O0OO000O0 )#line:685
527 O00O00O0000O000O0 .add (url =OO0O000O000O00O00 ,listitem =O0000O0OOO0O00OO0 )#line:686
528 except :#line:687
529 pass #line:688
530 if not queue ==False :#line:690
531 return O0OOOO0OOO00OO0OO .player .play (O00O00O0000O000O0 )#line:691
532 try :#line:693
533 OO000OO0O0O00O0OO =O0OO000OO0O0O0OO0 [0 ]#line:694
534 if OO000OO0O0O00O0OO ['next']=='':raise Exception ()#line:695
535 OO0O000O000O00O00 ='%s?action=%s&url=%s'%(OO0O0OO00OOOOO0OO ,OO000OO0O0O00O0OO ['nextaction'],OO0OOOO0OOOOOOO00 .quote_plus (OO000OO0O0O00O0OO ['next']))#line:696
536 O0000O0OOO0O00OO0 =O0OOOO0OOO00OO0OO .item (label =O0OOOO0OOO00OO0OO .lang (30500 ).encode ('utf-8'))#line:697
537 O0000O0OOO0O00OO0 .setArt ({'addonPoster':O0O0OO0000OOO0OO0 ,'thumb':O0O0OO0000OOO0OO0 ,'poster':O0O0OO0000OOO0OO0 ,'tvshow.poster':O0O0OO0000OOO0OO0 ,'season.poster':O0O0OO0000OOO0OO0 ,'banner':O0O0OO0000OOO0OO0 ,'tvshow.banner':O0O0OO0000OOO0OO0 ,'season.banner':O0O0OO0000OOO0OO0 })#line:698
538 O0000O0OOO0O00OO0 .setProperty ('addonFanart_Image',O0O0O0000OO00OOOO )#line:699
539 O0OOOO0OOO00OO0OO .addItem (handle =int (O0O000O0O0OOOO00O .argv [1 ]),url =OO0O000O000O00O00 ,listitem =O0000O0OOO0O00OO0 ,isFolder =True )#line:700
540 except :#line:701
541 pass #line:702
542 if not OO0OO0O0OO0OO00O0 ==None :O0OOOO0OOO00OO0OO .content (int (O0O000O0O0OOOO00O .argv [1 ]),OO0OO0O0OO0OO00O0 )#line:704
543 O0OOOO0OOO00OO0OO .directory (int (O0O000O0O0OOOO00O .argv [1 ]),cacheToDisc =True )#line:705
544 if OO0OO0O0OO0OO00O0 in ['movies','tvshows','seasons','episodes']:#line:706
545 OOO00O0OO0OOOO0OO .setView (OO0OO0O0OO0OO00O0 ,{'skin.estuary':55 })#line:707
546class resolver :#line:711
547 def browser (O00000O0OO0OO0O00 ,OOOOO0O00O000OOO0 ):#line:712
548 try :#line:713
549 OOOOO0O00O000OOO0 =O00000O0OO0OO0O00 .get (OOOOO0O00O000OOO0 )#line:714
550 if OOOOO0O00O000OOO0 ==False :return #line:715
551 O0OOOO0OOO00OO0OO .execute ('RunPlugin(plugin://plugin.program.chrome.launcher/?url=%s&mode=showSite&stopPlayback=no)'%OO0OOOO0OOOOOOO00 .quote_plus (OOOOO0O00O000OOO0 ))#line:716
552 except :#line:717
553 pass #line:718
554 def link (OOOOOO00OOOO0000O ,O00OOOO000O0O00O0 ):#line:721
555 try :#line:722
556 O00OOOO000O0O00O0 =OOOOOO00OOOO0000O .get (O00OOOO000O0O00O0 )#line:723
557 if O00OOOO000O0O00O0 ==False :return #line:724
558 O0OOOO0OOO00OO0OO .execute ('ActivateWindow(busydialog)')#line:726
559 O00OOOO000O0O00O0 =OOOOOO00OOOO0000O .process (O00OOOO000O0O00O0 )#line:727
560 O0OOOO0OOO00OO0OO .execute ('Dialog.Close(busydialog)')#line:728
561 if O00OOOO000O0O00O0 ==None :return O0OOOO0OOO00OO0OO .infoDialog (O0OOOO0OOO00OO0OO .lang (30705 ).encode ('utf-8'))#line:730
562 return O00OOOO000O0O00O0 #line:731
563 except :#line:732
564 pass #line:733
565 def get (OOO0OO0O0O0O0O00O ,O000O00O0OO0OO000 ):#line:736
566 try :#line:737
567 OO0O0O0O0OO0O0OO0 =O000O0O0O00OO000O .compile ('<sublink(?:\s+name=|)(?:\'|\"|)(.*?)(?:\'|\"|)>(.+?)</sublink>').findall (O000O00O0OO0OO000 )#line:738
568 if len (OO0O0O0O0OO0O0OO0 )==0 :return O000O00O0OO0OO000 #line:740
569 if len (OO0O0O0O0OO0O0OO0 )==1 :return OO0O0O0O0OO0O0OO0 [0 ][1 ]#line:741
570 OO0O0O0O0OO0O0OO0 =[('Link %s'%(int (OO0O0O0O0OO0O0OO0 .index (OO0O000OO0000OOOO ))+1 )if OO0O000OO0000OOOO [0 ]==''else OO0O000OO0000OOOO [0 ],OO0O000OO0000OOOO [1 ])for OO0O000OO0000OOOO in OO0O0O0O0OO0O0OO0 ]#line:743
571 O0O0000OOO000O00O =O0OOOO0OOO00OO0OO .selectDialog ([OO0O0O0OO0OOOO000 [0 ]for OO0O0O0OO0OOOO000 in OO0O0O0O0OO0O0OO0 ],O0OOOO0OOO00OO0OO .infoLabel ('listitem.label'))#line:745
572 if O0O0000OOO000O00O ==-1 :return False #line:747
573 else :return OO0O0O0O0OO0O0OO0 [O0O0000OOO000O00O ][1 ]#line:748
574 except :#line:749
575 pass #line:750
576 def f4m (O00OOOOO0O0O0OOOO ,O00O000OO0000OO0O ,OO000O0OO00OO0O00 ):#line:753
577 try :#line:754
578 if not any (OO00OO0O0O000O0OO in O00O000OO0000OO0O for OO00OO0O0O000O0OO in ['.f4m','.ts']):raise Exception ()#line:755
579 O000OO0OOOOOO0OOO =O00O000OO0000OO0O .split ('?')[0 ].split ('&')[0 ].split ('|')[0 ].rsplit ('.')[-1 ].replace ('/','').lower ()#line:756
580 if not O000OO0OOOOOO0OOO in ['f4m','ts']:raise Exception ()#line:757
581 OOOO00000000O000O =OO0O0OOO0O000OOO0 .parse_qs (O00O000OO0000OO0O )#line:759
582 try :O0O000O00OOOOO00O =OOOO00000000O000O ['proxy'][0 ]#line:761
583 except :O0O000O00OOOOO00O =None #line:762
584 try :OOO00OOOO0O0O00O0 =OOOOO0OOOOOOOOO00 .loads (OOOO00000000O000O ['proxy_for_chunks'][0 ])#line:764
585 except :OOO00OOOO0O0O00O0 =True #line:765
586 try :OO0OOOOO0OO00OO0O =int (OOOO00000000O000O ['maxbitrate'][0 ])#line:767
587 except :OO0OOOOO0OO00OO0O =0 #line:768
588 try :OO0O0OOOOO000OO00 =OOOOO0OOOOOOOOO00 .loads (OOOO00000000O000O ['simpledownloader'][0 ])#line:770
589 except :OO0O0OOOOO000OO00 =False #line:771
590 try :OOOO000O0O0OO000O =OOOO00000000O000O ['auth'][0 ]#line:773
591 except :OOOO000O0O0OO000O =''#line:774
592 try :OO00OO0OO0O0O000O =OOOO00000000O000O ['streamtype'][0 ]#line:776
593 except :OO00OO0OO0O0O000O ='TSDOWNLOADER'if O000OO0OOOOOO0OOO =='ts'else 'HDS'#line:777
594 try :O0000O00000O000O0 =OOOO00000000O000O ['swf'][0 ]#line:779
595 except :O0000O00000O000O0 =None #line:780
596 from F4mProxy import f4mProxyHelper as O0000OOO0O0OOOOO0 #line:782
597 return O0000OOO0O0OOOOO0 ().playF4mLink (O00O000OO0000OO0O ,OO000O0OO00OO0O00 ,O0O000O00OOOOO00O ,OOO00OOOO0O0O00O0 ,OO0OOOOO0OO00OO0O ,OO0O0OOOOO000OO00 ,OOOO000O0O0OO000O ,OO00OO0OO0O0O000O ,False ,O0000O00000O000O0 )#line:783
598 except :#line:784
599 pass #line:785
600 def process (O0OO0OOO000OO0OO0 ,O00000O0OO0O00OOO ,direct =True ):#line:788
601 try :#line:789
602 if not any (O00O00OO00000O0O0 in O00000O0OO0O00OOO for O00O00OO00000O0O0 in ['.jpg','.png','.gif']):raise Exception ()#line:790
603 OOO0O00O0O0O0O000 =O00000O0OO0O00OOO .split ('?')[0 ].split ('&')[0 ].split ('|')[0 ].rsplit ('.')[-1 ].replace ('/','').lower ()#line:791
604 if not OOO0O00O0O0O0O000 in ['jpg','png','gif']:raise Exception ()#line:792
605 try :#line:793
606 O000OO000000O0000 =OO0O0O0OOO0000O00 .path .join (O0OOOO0OOO00OO0OO .dataPath ,'img')#line:794
607 O0OOOO0OOO00OO0OO .deleteFile (O000OO000000O0000 )#line:795
608 O0O0OO0O000OOOO0O =O0OOOO0OOO00OO0OO .openFile (O000OO000000O0000 ,'w')#line:796
609 O0O0OO0O000OOOO0O .write (O0OOOO000O0O00O0O .request (O00000O0OO0O00OOO ))#line:797
610 O0O0OO0O000OOOO0O .close ()#line:798
611 O0OOOO0OOO00OO0OO .execute ('ShowPicture("%s")'%O000OO000000O0000 )#line:799
612 return False #line:800
613 except :#line:801
614 return #line:802
615 except :#line:803
616 pass #line:804
617 try :#line:806
618 OOO0OOOOO00000OOO ,OOOOOO0000OOO0OO0 =O000O0O0O00OO000O .findall ('(.+?)\|regex=(.+?)$',O00000O0OO0O00OOO )[0 ]#line:807
619 OOOOOO0000OOO0OO0 =OO0OO0O0000OOO0OO .fetch (OOOOOO0000OOO0OO0 )#line:808
620 OOO0OOOOO00000OOO +=OO0OOOO0OOOOOOO00 .unquote_plus (OOOOOO0000OOO0OO0 )#line:809
621 if not '</regex>'in OOO0OOOOO00000OOO :raise Exception ()#line:810
622 O0O000O00O0OOO00O =OO0OO0O0000OOO0OO .resolve (OOO0OOOOO00000OOO )#line:811
623 if not O0O000O00O0OOO00O ==None :O00000O0OO0O00OOO =O0O000O00O0OOO00O #line:812
624 except :#line:813
625 pass #line:814
626 try :#line:816
627 if not O00000O0OO0O00OOO .startswith ('rtmp'):raise Exception ()#line:817
628 if len (O000O0O0O00OO000O .compile ('\s*timeout=(\d*)').findall (O00000O0OO0O00OOO ))==0 :O00000O0OO0O00OOO +=' timeout=10'#line:818
629 return O00000O0OO0O00OOO #line:819
630 except :#line:820
631 pass #line:821
632 try :#line:823
633 if not any (O0OO0O0O0OO0OOOO0 in O00000O0OO0O00OOO for O0OO0O0O0OO0OOOO0 in ['.m3u8','.f4m','.ts']):raise Exception ()#line:824
634 OOO0O00O0O0O0O000 =O00000O0OO0O00OOO .split ('?')[0 ].split ('&')[0 ].split ('|')[0 ].rsplit ('.')[-1 ].replace ('/','').lower ()#line:825
635 if not OOO0O00O0O0O0O000 in ['m3u8','f4m','ts']:raise Exception ()#line:826
636 return O00000O0OO0O00OOO #line:827
637 except :#line:828
638 pass #line:829
639 try :#line:831
640 OO00O000OOOOO00O0 =O000O0O0O00OO000O .findall ('<preset>(.+?)</preset>',O00000O0OO0O00OOO )[0 ]#line:832
641 if not 'search'in OO00O000OOOOO00O0 :raise Exception ()#line:834
642 OOO00OO0O0O0O0000 ,OO00OO00OOO00O000 ,O0O0OO000OOO0O000 =O000O0O0O00OO000O .findall ('<title>(.+?)</title>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<year>(.+?)</year>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<imdb>(.+?)</imdb>',O00000O0OO0O00OOO )[0 ]#line:836
643 try :OO00O000O0000O000 ,OOO00O0O00OOO0OO0 ,OOO00000O0OOOOO00 ,OOO000OO0O0O0O000 ,O000OO0OO0OOO00OO =O000O0O0O00OO000O .findall ('<tvdb>(.+?)</tvdb>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<tvshowtitle>(.+?)</tvshowtitle>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<premiered>(.+?)</premiered>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<season>(.+?)</season>',O00000O0OO0O00OOO )[0 ],O000O0O0O00OO000O .findall ('<episode>(.+?)</episode>',O00000O0OO0O00OOO )[0 ]#line:838
644 except :OO00O000O0000O000 =OOO00O0O00OOO0OO0 =OOO00000O0OOOOO00 =OOO000OO0O0O0O000 =O000OO0OO0OOO00OO =None #line:839
645 direct =False #line:841
646 O000OOOO0O0OO000O ='HD'if not OO00O000OOOOO00O0 =='searchsd'else 'SD'#line:843
647 from resources .lib .sources import sources as O00O0OO000OOO00O0 #line:845
648 O0O000O00O0OOO00O =O00O0OO000OOO00O0 ().getSources (OOO00OO0O0O0O0000 ,OO00OO00OOO00O000 ,O0O0OO000OOO0O000 ,OO00O000O0000O000 ,OOO000OO0O0O0O000 ,O000OO0OO0OOO00OO ,OOO00O0O00OOO0OO0 ,OOO00000O0OOOOO00 ,O000OOOO0O0OO000O )#line:847
649 if not O0O000O00O0OOO00O ==None :return O0O000O00O0OOO00O #line:849
650 except :#line:850
651 pass #line:851
652 try :#line:853
653 from resources .lib .sources import sources as O00O0OO000OOO00O0 #line:854
654 O0O000O00O0OOO00O =O00O0OO000OOO00O0 ().getURISource (O00000O0OO0O00OOO )#line:856
655 if not O0O000O00O0OOO00O ==False :direct =False #line:858
656 if O0O000O00O0OOO00O ==None or O0O000O00O0OOO00O ==False :raise Exception ()#line:859
657 return O0O000O00O0OOO00O #line:861
658 except :#line:862
659 pass #line:863
660 try :#line:865
661 if not '.google.com'in O00000O0OO0O00OOO :raise Exception ()#line:866
662 from resources .lib .modules import directstream as O0OO0OO00000000O0 #line:867
663 O0O000O00O0OOO00O =O0OO0OO00000000O0 .google (O00000O0OO0O00OOO )[0 ]['url']#line:868
664 return O0O000O00O0OOO00O #line:869
665 except :#line:870
666 pass #line:871
667 try :#line:873
668 if not 'filmon.com/'in O00000O0OO0O00OOO :raise Exception ()#line:874
669 from resources .lib .modules import filmon as O00O000OO000OO0O0 #line:875
670 O0O000O00O0OOO00O =O00O000OO000OO0O0 .resolve (O00000O0OO0O00OOO )#line:876
671 return O0O000O00O0OOO00O #line:877
672 except :#line:878
673 pass #line:879
674 try :#line:881
675 import urlresolver as OO0OO0OOO000O0OO0 #line:882
676 O00O0O000000O00OO =OO0OO0OOO000O0OO0 .HostedMediaFile (url =O00000O0OO0O00OOO )#line:884
677 if O00O0O000000O00OO .valid_url ()==False :raise Exception ()#line:886
678 direct =False ;O0O000O00O0OOO00O =O00O0O000000O00OO .resolve ()#line:888
679 if not O0O000O00O0OOO00O ==False :return O0O000O00O0OOO00O #line:890
680 except :#line:891
681 pass #line:892
682 if direct ==True :return O00000O0OO0O00OOO #line:894
683class player (OO0000O00000OO00O .Player ):#line:897
684 def __init__ (OO0O0O0000OOO0000 ):#line:898
685 OO0000O00000OO00O .Player .__init__ (OO0O0O0000OOO0000 )#line:899
686 def play (OOO0000O00O00O0O0 ,OOO0O0OOOOOO0OO0O ,content =None ):#line:902
687 try :#line:903
688 OO00O000O0O000O00 =OOO0O0OOOOOO0OO0O #line:904
689 OOO0O0OOOOOO0OO0O =resolver ().get (OOO0O0OOOOOO0OO0O )#line:906
690 if OOO0O0OOOOOO0OO0O ==False :return #line:907
691 O0OOOO0OOO00OO0OO .execute ('ActivateWindow(busydialog)')#line:909
692 OOO0O0OOOOOO0OO0O =resolver ().process (OOO0O0OOOOOO0OO0O )#line:910
693 O0OOOO0OOO00OO0OO .execute ('Dialog.Close(busydialog)')#line:911
694 if OOO0O0OOOOOO0OO0O ==None :return O0OOOO0OOO00OO0OO .infoDialog (O0OOOO0OOO00OO0OO .lang (30705 ).encode ('utf-8'))#line:913
695 if OOO0O0OOOOOO0OO0O ==False :return #line:914
696 O0O0O0000OOOO00OO ={}#line:916
697 for O00O0O00000O00O00 in ['title','originaltitle','tvshowtitle','year','season','episode','genre','rating','votes','director','writer','plot','tagline']:#line:917
698 try :O0O0O0000OOOO00OO [O00O0O00000O00O00 ]=O0OOOO0OOO00OO0OO .infoLabel ('listitem.%s'%O00O0O00000O00O00 )#line:918
699 except :pass #line:919
700 O0O0O0000OOOO00OO =dict ((O0000OO0O000O0OOO ,OOO0O00OO0000O0O0 )for O0000OO0O000O0OOO ,OOO0O00OO0000O0O0 in O0O0O0000OOOO00OO .iteritems ()if not OOO0O00OO0000O0O0 =='')#line:920
701 if not 'title'in O0O0O0000OOOO00OO :O0O0O0000OOOO00OO ['title']=O0OOOO0OOO00OO0OO .infoLabel ('listitem.label')#line:921
702 O0O0O0O000000OO00 =O0OOOO0OOO00OO0OO .infoLabel ('listitem.icon')#line:922
703 OOO0000O00O00O0O0 .name =O0O0O0000OOOO00OO ['title'];OOO0000O00O00O0O0 .year =O0O0O0000OOOO00OO ['year']if 'year'in O0O0O0000OOOO00OO else '0'#line:925
704 OOO0000O00O00O0O0 .getbookmark =True if (content =='movies'or content =='episodes')else False #line:927
705 OOO0000O00O00O0O0 .offset =bookmarks ().get (OOO0000O00O00O0O0 .name ,OOO0000O00O00O0O0 .year )#line:929
706 O0OOOOOOO00O0O0OO =resolver ().f4m (OOO0O0OOOOOO0OO0O ,OOO0000O00O00O0O0 .name )#line:931
707 if not O0OOOOOOO00O0O0OO ==None :return #line:932
708 O0OOO00O0OOO000O0 =O0OOOO0OOO00OO0OO .item (path =OOO0O0OOOOOO0OO0O ,iconImage =O0O0O0O000000OO00 ,thumbnailImage =O0O0O0O000000OO00 )#line:935
709 try :O0OOO00O0OOO000O0 .setArt ({'icon':O0O0O0O000000OO00 })#line:936
710 except :pass #line:937
711 O0OOO00O0OOO000O0 .setInfo (type ='Video',infoLabels =O0O0O0000OOOO00OO )#line:938
712 O0OOOO0OOO00OO0OO .player .play (OOO0O0OOOOOO0OO0O ,O0OOO00O0OOO000O0 )#line:939
713 O0OOOO0OOO00OO0OO .resolve (int (O0O000O0O0OOOO00O .argv [1 ]),True ,O0OOO00O0OOO000O0 )#line:940
714 OOO0000O00O00O0O0 .totalTime =0 ;OOO0000O00O00O0O0 .currentTime =0 #line:942
715 for O00O0O00000O00O00 in range (0 ,240 ):#line:944
716 if OOO0000O00O00O0O0 .isPlayingVideo ():break #line:945
717 O0OOOO0OOO00OO0OO .sleep (1000 )#line:946
718 while OOO0000O00O00O0O0 .isPlayingVideo ():#line:947
719 try :#line:948
720 OOO0000O00O00O0O0 .totalTime =OOO0000O00O00O0O0 .getTotalTime ()#line:949
721 OOO0000O00O00O0O0 .currentTime =OOO0000O00O00O0O0 .getTime ()#line:950
722 except :#line:951
723 pass #line:952
724 O0OOOO0OOO00OO0OO .sleep (2000 )#line:953
725 O0OOOO0OOO00OO0OO .sleep (5000 )#line:954
726 except :#line:955
727 pass #line:956
728 def onPlayBackStarted (OOO0O0OO000O0O0O0 ):#line:959
729 O0OOOO0OOO00OO0OO .execute ('Dialog.Close(all,true)')#line:960
730 if OOO0O0OO000O0O0O0 .getbookmark ==True and not OOO0O0OO000O0O0O0 .offset =='0':#line:961
731 OOO0O0OO000O0O0O0 .seekTime (float (OOO0O0OO000O0O0O0 .offset ))#line:962
732 def onPlayBackStopped (O00O0OOO0OOO00O0O ):#line:965
733 if O00O0OOO0OOO00O0O .getbookmark ==True :#line:966
734 bookmarks ().reset (O00O0OOO0OOO00O0O .currentTime ,O00O0OOO0OOO00O0O .totalTime ,O00O0OOO0OOO00O0O .name ,O00O0OOO0OOO00O0O .year )#line:967
735 def onPlayBackEnded (O0000O00O0OO00OO0 ):#line:970
736 O0000O00O0OO00OO0 .onPlayBackStopped ()#line:971
737class bookmarks :#line:975
738 def get (O0O00OO0O000OOO00 ,OO0O000O0OO000O00 ,year ='0'):#line:976
739 try :#line:977
740 O0OO00OO0OO000O00 ='0'#line:978
741 O0000O000000O000O =OOOOOO0O00O0OO0O0 .md5 ()#line:982
742 for O0O0O00O0O0000000 in OO0O000O0OO000O00 :O0000O000000O000O .update (str (O0O0O00O0O0000000 ))#line:983
743 for O0O0O00O0O0000000 in year :O0000O000000O000O .update (str (O0O0O00O0O0000000 ))#line:984
744 O0000O000000O000O =str (O0000O000000O000O .hexdigest ())#line:985
745 O0OO0O0000O000O0O =OO000OOOOOO0OOO0O .connect (O0OOOO0OOO00OO0OO .bookmarksFile )#line:987
746 OO0OO000000O0OO00 =O0OO0O0000O000O0O .cursor ()#line:988
747 OO0OO000000O0OO00 .execute ("SELECT * FROM bookmark WHERE idFile = '%s'"%O0000O000000O000O )#line:989
748 O00O000000OOO0OO0 =OO0OO000000O0OO00 .fetchone ()#line:990
749 O0O00OO0O000OOO00 .offset =str (O00O000000OOO0OO0 [1 ])#line:991
750 O0OO0O0000O000O0O .commit ()#line:992
751 if O0O00OO0O000OOO00 .offset =='0':raise Exception ()#line:994
752 OO00OOO0OOOOOOO00 ,OOO0000O00OOOO0OO =divmod (float (O0O00OO0O000OOO00 .offset ),60 );O000OOOO00OOO0OO0 ,OO00OOO0OOOOOOO00 =divmod (OO00OOO0OOOOOOO00 ,60 )#line:996
753 O0O0O0O0OO0OO0000 ='%02d:%02d:%02d'%(O000OOOO00OOO0OO0 ,OO00OOO0OOOOOOO00 ,OOO0000O00OOOO0OO )#line:997
754 O0O0O0O0OO0OO0000 =(O0OOOO0OOO00OO0OO .lang (32502 )%O0O0O0O0OO0OO0000 ).encode ('utf-8')#line:998
755 try :OOO00O0000O00O000 =O0OOOO0OOO00OO0OO .dialog .contextmenu ([O0O0O0O0OO0OO0000 ,O0OOOO0OOO00OO0OO .lang (32501 ).encode ('utf-8'),])#line:1000
756 except :OOO00O0000O00O000 =O0OOOO0OOO00OO0OO .yesnoDialog (O0O0O0O0OO0OO0000 ,'','',str (OO0O000O0OO000O00 ),O0OOOO0OOO00OO0OO .lang (32503 ).encode ('utf-8'),O0OOOO0OOO00OO0OO .lang (32501 ).encode ('utf-8'))#line:1001
757 if OOO00O0000O00O000 :O0O00OO0O000OOO00 .offset ='0'#line:1003
758 return O0O00OO0O000OOO00 .offset #line:1005
759 except :#line:1006
760 return O0OO00OO0OO000O00 #line:1007
761 def reset (O0OOO0O000O0O0000 ,OO000O000OOO0OOOO ,OO000O0O000OO0O0O ,O00OO0O0000000OO0 ,year ='0'):#line:1010
762 try :#line:1011
763 OO00OO00OO00O000O =str (OO000O000OOO0OOOO )#line:1014
764 OOOO00OO0000OO000 =int (OO000O000OOO0OOOO )>180 and (OO000O000OOO0OOOO /OO000O0O000OO0O0O )<=.92 #line:1015
765 O00OOOOOO0O0OO0OO =OOOOOO0O00O0OO0O0 .md5 ()#line:1017
766 for O00O00O0000OO00O0 in O00OO0O0000000OO0 :O00OOOOOO0O0OO0OO .update (str (O00O00O0000OO00O0 ))#line:1018
767 for O00O00O0000OO00O0 in year :O00OOOOOO0O0OO0OO .update (str (O00O00O0000OO00O0 ))#line:1019
768 O00OOOOOO0O0OO0OO =str (O00OOOOOO0O0OO0OO .hexdigest ())#line:1020
769 O0OOOO0OOO00OO0OO .makeFile (O0OOOO0OOO00OO0OO .dataPath )#line:1022
770 O000O00OO0OOO0OO0 =OO000OOOOOO0OOO0O .connect (O0OOOO0OOO00OO0OO .bookmarksFile )#line:1023
771 O0OO0OOO00O0O0OOO =O000O00OO0OOO0OO0 .cursor ()#line:1024
772 O0OO0OOO00O0O0OOO .execute ("CREATE TABLE IF NOT EXISTS bookmark (" "idFile TEXT, " "timeInSeconds TEXT, " "UNIQUE(idFile)" ");")#line:1025
773 O0OO0OOO00O0O0OOO .execute ("DELETE FROM bookmark WHERE idFile = '%s'"%O00OOOOOO0O0OO0OO )#line:1026
774 if OOOO00OO0000OO000 :O0OO0OOO00O0O0OOO .execute ("INSERT INTO bookmark Values (?, ?)",(O00OOOOOO0O0OO0OO ,OO00OO00OO00O000O ))#line:1027
775 O000O00OO0OOO0OO0 .commit ()#line:1028
776 except :#line:1029
777 pass
778#e9015584e6a44b14988f13e2298bcbf9