Skip to content

Commit 486b545

Browse files
committed
xz fallback
1 parent 4ac1913 commit 486b545

File tree

5 files changed

+51
-135
lines changed

5 files changed

+51
-135
lines changed

addon.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
* minimum version of Tvheadend is 4.2
2020
v1.9.5
21-
- add picons downloader test
21+
- add picons downloader
2222
v1.9
2323
- add timeshift options under DVR configuration
2424
- fix epg grabber progress bar

default.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,18 @@ def _ArchiveDirectory(parentDirectory):
204204
zipOut.close()
205205

206206
def picons_param_load():
207-
picons_source_list = ["CvH Picons - Name", "CvH Picons - Frequency", "ati711 - Color", "ait711 - Black", "ati711 - White", "URL"]
207+
# url_latest = 'http://cvh.libreelec.tv/picons/latest2.json'
208+
url_latest = 'http://test.mymomentumwebsite.com/latest2.json'
209+
ljson = requests.get(url_latest).json()
210+
picons_source_list = ['Custom URL']
211+
picons_source_files = ['Custom URL']
212+
for p in ljson['Picons']['latest']:
213+
picons_source_list.append(p['desc'])
214+
for n in ljson['Picons']['latest']:
215+
picons_source_files.append(n['name'])
208216
picons_source_value = xbmcaddon.Addon().getSetting('psource')
209217
picons_source = picons_source_list[int(picons_source_value)]
218+
picons_file = picons_source_files[int(picons_source_value)]
210219
picons_dest = xbmcaddon.Addon().getSetting('pdest')
211220
picons_url = xbmcaddon.Addon().getSetting('purl')
212221
picons_list = ["Picons Source: " + str(picons_source), "Picons Destination: " + str(picons_dest), "DOWNLOAD PICONS"]
@@ -226,24 +235,13 @@ def picons_param_load():
226235
picons_dest_set = xbmcaddon.Addon().setSetting(id='pdest', value=picons_dest_update)
227236
picons_param_load()
228237
if sel_param == 2:
229-
addon = xbmcaddon.Addon(id='script.module.tvh2kodi')
230-
addonname = addon.getAddonInfo('name')
231-
addonfolder = addon.getAddonInfo('path')
232-
addonicon = os.path.join(addonfolder, 'resources/icon.png')
233-
addondata = xbmc.translatePath(addon.getAddonInfo('profile'))
234-
snp_json = os.path.join(addondata, 'data/snp.json')
235-
srp_json = os.path.join(addondata, 'data/srp.json')
236-
url_latest = 'http://cvh.libreelec.tv/picons/latest2.json'
237-
latest_json = urllib.urlopen(url_latest)
238238
if picons_source_value == "0":
239-
picons.compare_release_snp(snp_json)
240-
if picons_source_value == "1":
241-
picons.compare_release_srp(srp_json)
242-
if picons_source_value == "5":
243-
sel_purl = dialog.input('Enetr the Picons URL to Download', defaultt=picons_url,type=xbmcgui.INPUT_ALPHANUM)
239+
sel_purl = dialog.input('Enter the Picons URL to Download', defaultt=picons_url,type=xbmcgui.INPUT_ALPHANUM)
244240
if sel_purl != "":
245241
picons_url_set = xbmcaddon.Addon().setSetting(id='purl', value=str(sel_purl))
246-
picons.picons_ext(sel_purl)
242+
picons.url_external(sel_purl)
243+
if picons_source_value > "0":
244+
picons.compare_release(url_latest, picons_file, picons_source_value)
247245

248246
def dvr_param_load(dvr_uuid_sel):
249247
dvr_url = 'http://' + tvh_url + ':' + tvh_port + '/api/idnode/load?uuid=' + dvr_uuid_sel

picons.py

Lines changed: 34 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from urlparse import urlparse
2525
from os.path import splitext
2626

27-
2827
addon = xbmcaddon.Addon(id='script.module.tvh2kodi')
2928
addonname = addon.getAddonInfo('name')
3029
addonfolder = addon.getAddonInfo('path')
@@ -34,16 +33,13 @@
3433
tempfolder = os.path.join(addondata, 'temp/')
3534
picons_dest = xbmc.translatePath(xbmcaddon.Addon().getSetting('pdest'))
3635
pdest = os.path.join(picons_dest)
37-
zstd = os.path.join(addonfolder, 'bin', 'zstd')
38-
url_latest = 'http://cvh.libreelec.tv/picons/latest2.json'
36+
url_latest = 'http://test.mymomentumwebsite.com/latest2.json'
3937
latest_json = urllib.urlopen(url_latest)
40-
snp_json = os.path.join(addondata, 'data/snp.json')
41-
srp_json = os.path.join(addondata, 'data/srp.json')
38+
log_json = os.path.join(addondata, 'data/log.json')
4239
log3rdparty = os.path.join(addondata, 'data/3rdparty.log')
4340
logfile = os.path.join(addondata, 'data')
4441
log3rdparty = os.path.join(logfile, '3rdparty.log')
45-
logsnpjson = os.path.join(logfile, 'snp.json')
46-
logsrpjson = os.path.join(logfile, 'srp.json')
42+
logjson = os.path.join(logfile, 'log.json')
4743
exturl = addon.getSetting('purl')
4844
dialog = xbmcgui.Dialog()
4945
header = 'Picons Downloader'
@@ -53,107 +49,47 @@
5349
now = datetime.datetime.now()
5450
date = '%s-%s-%s' % (now.year,now.month,now.day)
5551

56-
def compare_release_snp(path):
52+
def compare_release(url_latest, picons_file, picons_source_value):
5753
ljson = json.loads(latest_json.read())
58-
for key in ljson['Picons']['latest'].keys():
59-
latest = key
60-
if os.path.exists(snp_json):
61-
with open(snp_json) as release_json:
54+
picons_src = int(picons_source_value) - 1
55+
latest = ljson['Picons']['latest'][picons_src]['name']
56+
if os.path.exists(log_json):
57+
with open(log_json) as release_json:
6258
rjson = json.load(release_json)
63-
for key1 in rjson['Picons']['latest'].keys():
64-
release = key1
59+
release = rjson['Picons']['latest'][picons_src]['name']
6560
if latest == release:
6661
if dialog.yesno('Picons Downloader Update', 'Already on latest version.', 'Do you want to download anyway?'):
67-
delete_file(path)
62+
delete_file(log_json)
6863
urlpicons = ljson['Picons']['url']
69-
snpname = ljson['Picons']['latest'][latest]['snp']['name'] + ".tar.xz"
70-
url = "%s%s" % (urlpicons, snpname)
71-
picons_snp(url, url_latest)
64+
url_base = "%s%s" % (urlpicons, picons_file)
65+
picons_get(url_base, url_latest)
7266
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 2000, addonicon))
7367
else:
7468
return
7569
else:
7670
if dialog.yesno('Picons Downloader Update', 'There is a newer version of the icons pack available.', 'Do you want to download anyway?'):
77-
delete_file(path)
78-
urlpicons = ljson['Picons']['url']
79-
snpname = ljson['Picons']['latest'][latest]['snp']['name'] + ".tar.xz"
80-
url = "%s%s" % (urlpicons, snpname)
81-
picons_snp(url, url_latest)
82-
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 2000, addonicon))
83-
else:
84-
return
85-
else:
86-
urlpicons = ljson['Picons']['url']
87-
snpname = ljson['Picons']['latest'][latest]['snp']['name'] + ".tar.xz"
88-
url = "%s%s" % (urlpicons, snpname)
89-
picons_snp(url, url_latest)
90-
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 2000, addonicon))
91-
92-
def compare_release_srp(path):
93-
ljson = json.loads(latest_json.read())
94-
for key in ljson['Picons']['latest'].keys():
95-
latest = key
96-
if os.path.exists(srp_json):
97-
with open(srp_json) as release_json:
98-
rjson = json.load(release_json)
99-
for key1 in rjson['Picons']['latest'].keys():
100-
release = key1
101-
if latest == release:
102-
if dialog.yesno('Picons Downloader Update', 'Already on latest version.', 'Do you want to download anyway?'):
103-
delete_file(path)
71+
delete_file(log_json)
10472
urlpicons = ljson['Picons']['url']
105-
srpname = ljson['Picons']['latest'][latest]['srp']['name'] + ".tar.xz"
106-
url = "%s%s" % (urlpicons, srpname)
107-
picons_srp(url, url_latest)
108-
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 4000, addonicon))
109-
else:
110-
return
111-
else:
112-
if dialog.yesno('Picons Downloader Update', 'There is a newer version of the icons pack available.', 'Do you want to download anyway?'):
113-
delete_file(path)
114-
urlpicons = ljson['Picons']['url']
115-
srpname = ljson['Picons']['latest'][latest]['srp']['name'] + ".tar.xz"
116-
url = "%s%s" % (urlpicons, srpname)
117-
picons_srp(url, url_latest)
73+
url_base = "%s%s" % (urlpicons, picons_file)
74+
picons_get(url_base, url_latest)
11875
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 4000, addonicon))
11976
else:
12077
return
12178
else:
12279
urlpicons = ljson['Picons']['url']
123-
srpname = ljson['Picons']['latest'][latest]['srp']['name'] + ".tar.xz"
124-
url = "%s%s" % (urlpicons, srpname)
125-
picons_srp(url, url_latest)
80+
url = "%s%s" % (urlpicons, picons_file)
81+
picons_get(url, url_latest)
12682
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download finished"', 4000, addonicon))
12783

128-
def url_snp():
129-
ljson = json.loads(latest_json.read())
130-
for key in ljson['Picons']['latest'].keys():
131-
latest = key
132-
urlpicons = ljson['Picons']['url']
133-
snpname = ljson['Picons']['latest'][latest]['snp']['name'] + ".tar.xz"
134-
url = "%s%s" % (urlpicons, snpname)
135-
picons_snp(url, url_latest)
136-
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download the picons is finish"', 4000, addonicon))
137-
138-
def url_srp():
139-
ljson = json.loads(latest_json.read())
140-
for key in ljson['Picons']['latest'].keys():
141-
latest = key
142-
urlpicons = ljson['Picons']['url']
143-
srpname = ljson['Picons']['latest'][latest]['srp']['name'] + ".tar.xz"
144-
url = "%s%s" % (urlpicons, srpname)
145-
picons_srp(url, url_latest)
146-
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download the picons is finish"', 4000, addonicon))
147-
148-
def url_external():
84+
def url_external(sel_purl):
14985
if addon.getSetting('pdest') == '':
15086
xbmcgui.Dialog().ok(addonname, "You need choose destination for picons", "", "")
15187
return
15288
elif addon.getSetting('purl') == '':
15389
xbmcgui.Dialog().ok(addonname, "You need choose the external url", "", "")
15490
return
15591
else:
156-
picons_ext(exturl)
92+
picons_ext(sel_purl)
15793
xbmc.executebuiltin('Notification(%s, %s, %d, %s)'%(addonname, '"Download the picons is finish"', 4000, addonicon))
15894

15995
def create_directories(path):
@@ -235,35 +171,26 @@ def extract_zip(_in, _out, dp, header):
235171
return False
236172
return True
237173

238-
def picons_snp(url, urljson):
174+
def picons_get(url_base, urljson):
239175
create_directories(tempfolder)
240-
# packageFile = os.path.join(tempfolder, 'picons-snp.tar.zst')
241-
packageFile = os.path.join(tempfolder, 'picons-snp.tar.xz')
242-
downloader(url,packageFile,header)
243-
create_directories(pdest)
244-
# extract_zstd(packageFile)
245-
extract_xz(packageFile)
176+
try:
177+
packageFile = os.path.join(tempfolder, 'picons-snp.tar.zst')
178+
url = url_base + ".tar.zst"
179+
downloader(url,packageFile,header)
180+
create_directories(pdest)
181+
extract_zstd(packageFile)
182+
except:
183+
packageFile = os.path.join(tempfolder, 'picons-snp.tar.xz')
184+
url = url_base + ".tar.xz"
185+
downloader(url,packageFile,header)
186+
create_directories(pdest)
187+
extract_xz(packageFile)
246188
extract_tar('picons-snp.tar', pdest)
247189
delete_tempfiles()
248190
create_log
249191
create_directories(logfile)
250-
delete_file(logsnpjson)
251-
subprocess_cmd('%s %s %s' % ('wget -O', logsnpjson, urljson))
252-
253-
def picons_srp(url, urljson):
254-
create_directories(tempfolder)
255-
# packageFile = os.path.join(tempfolder, 'picons-srp.tar.zst')
256-
packageFile = os.path.join(tempfolder, 'picons-srp.tar.xz')
257-
downloader(url,packageFile,header)
258-
create_directories(pdest)
259-
# extract_zstd(packageFile)
260-
extract_xz(packageFile)
261-
extract_tar('picons-srp.tar', pdest)
262-
delete_tempfiles()
263-
create_log
264-
create_directories(logfile)
265-
delete_file(logsrpjson)
266-
subprocess_cmd('%s %s %s' % ('wget -O', logsrpjson, urljson))
192+
delete_file(logjson)
193+
subprocess_cmd('%s %s %s' % ('wget -O', logjson, urljson))
267194

268195
def picons_ext(url):
269196
parsed = urlparse(exturl)

resources/language/English/strings.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,7 @@
99
<string id="32025">Tvheadend Paths</string>
1010
<string id="32030">DVR Recording Path</string>
1111
<string id="32035">Timeshift Buffer Path</string>
12-
<string id="32100">Picons</string>
1312
<string id="32130">Picons Source</string>
14-
<string id="32131">CvH Picons - Name</string>
15-
<string id="32132">CvH Picons - Frequency</string>
16-
<string id="32133">ati711 - Color</string>
17-
<string id="32134">ait711 - Black</string>
18-
<string id="32135">ait711 - White</string>
19-
<string id="32138">External URL</string>
2013
<string id="32139">enter external URL</string>
2114
<string id="32140">Picons Destination</string>
2215
</strings>

resources/settings.xml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
<setting type="sep"/>
1313
<setting label="32030" type="folder" id="dvrstorage" default="" option="writeable"/>
1414
<setting label="32035" type="folder" id="timestorage" default="" option="writeable"/>
15-
</category>
16-
<category label="32100">
17-
<setting label="32130" type="enum" id="psource" lvalues="32131|32132|32133|32134|32135|32138" default="0"/>
18-
<setting label="32139" type="text" id="purl" defaut="https://www.dropbox.com/s/vxuatbj95iutsby/tv_channel_icons_pack.zip?dl=0" subsetting="true" visible="eq(-1,5)"/>
15+
<setting label="32130" type="number" id="psource" default="0" visible="false"/>
16+
<setting label="32139" type="text" id="purl" defaut="https://www.dropbox.com/s/vxuatbj95iutsby/tv_channel_icons_pack.zip?dl=0" visible="false"/>
1917
<setting label="32140" type="folder" id="pdest" default="" option="writeable"/>
2018
</category>
2119
</settings>

0 commit comments

Comments
 (0)