Skip to content

Commit 4b8a681

Browse files
committed
Add Docker file
1 parent 4d7339d commit 4b8a681

22 files changed

Lines changed: 543 additions & 874 deletions

.dockerignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
dbg.py
2+
Dockerfile
3+
.git
4+
.gitignore
5+
LICENSE
6+
README.md
7+
requirements.txt
8+
resources
9+
.dockerignore

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,4 @@ target/
6060
/dumper
6161
/ch_dump
6262
/dbg.py
63+
/mapch.json

Dockerfile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM resin/raspberry-pi-alpine-python:latest
2+
3+
MAINTAINER kodi1 version: 0.1
4+
5+
RUN mkdir -p /usr/src/app
6+
WORKDIR /usr/src/app
7+
8+
COPY requirements.txt requirements.txt
9+
RUN pip install --no-cache-dir -r requirements.txt
10+
11+
ADD http://epg.kodibg.org/dlmap.php ./mapch.json
12+
COPY . .
13+
14+
ENV BSCLOGIN user:pass
15+
ENV BSCREFRESH 90
16+
17+
EXPOSE 8888
18+
19+
CMD [ "python", "./dbg.py", "4"]

addon.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

changelog.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

dbg.py

Lines changed: 32 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
#!/usr/bin/python
22
# -*- coding: utf8 -*-
33

4-
import os, sys, json, re
5-
import datetime, time
6-
from datetime import datetime, timedelta
7-
import requests
8-
9-
offset = 0.0
10-
dbg = True
4+
import os, sys, time
115

126
UA = {
137
'Host': 'api.iptv.bulsat.com',
@@ -24,140 +18,43 @@
2418
__resource__ = os.path.join( os.getcwd(), 'resources', 'lib' )
2519
sys.path.insert(0, __resource__)
2620

27-
usr, psw = os.getenv('BSCLOGIN', 'user:pass').split(':')
28-
29-
def url_update_1(u):
30-
if re.match(r'^.*smil\:.*\.smil\?scheme=m3u8.*$', u):
31-
for m in [
32-
{'re': r'http\:\/\/lb-sf', 'ch': 'http://edge-sf-1'},
33-
{'re': r'redirect\/', 'ch': ''},
34-
{'re': r'\/smil\:', 'ch': '/_definst_/smil:'},
35-
{'re': r'\?.*m3u8\&', 'ch': '/playlist.m3u8?'},
36-
]:
37-
if dbg:
38-
print m
39-
u = re.sub(m['re'], m['ch'], u)
40-
else:
41-
for m in [
42-
{'re': r'http\:\/\/lb-sf', 'ch': 'http://edge-sf-1'},
43-
{'re': r'redirect\/', 'ch': ''},
44-
{'re': r'\:1935\/(.*?\/)', 'ch':'\g<0>_definst_/'},
45-
{'re': r'\?.*m3u8\&', 'ch': '/playlist.m3u8?'},
46-
]:
47-
if dbg:
48-
print m
49-
u = re.sub(m['re'], m['ch'], u)
50-
51-
u += '|User-Agent=%s' % (urllib.quote_plus(__ua_os[sys.argv[1]]['ua']))
52-
return u
53-
54-
def url_update_0(u):
55-
return u
56-
5721
__ua_os = {
58-
'0' : {'ua' : 'pcweb', 'osid' : 'pcweb', 'url_up': url_update_0},
59-
'1' : {'ua' : 'Mozilla/5.0 (SMART-TV; Linux; Tizen 2.3) AppleWebkit/538.1 (KHTML, like Gecko) SamsungBrowser/1.0 TV Safari/538.1', 'osid' : 'samsungtv', 'url_up': url_update_1},
60-
'2' : {'ua' : 'HLS Client/2.0 (compatible; LG NetCast.TV-2012)', 'osid' : 'lgtv', 'url_up': url_update_1},
61-
'3' : {'ua' : 'Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0', 'osid' : 'panasonictv', 'url_up': url_update_1},
62-
'4' : {'ua' : 'Bulsatcom for android', 'osid' : 'androidtv', 'url_up': url_update_1},
22+
'0' : {'ua' : 'pcweb', 'osid' : 'pcweb'},
23+
'1' : {'ua' : 'Mozilla/5.0 (SMART-TV; Linux; Tizen 2.3) AppleWebkit/538.1 (KHTML, like Gecko) SamsungBrowser/1.0 TV Safari/538.1', 'osid' : 'samsungtv'},
24+
'2' : {'ua' : 'HLS Client/2.0 (compatible; LG NetCast.TV-2012)', 'osid' : 'lgtv'},
25+
'3' : {'ua' : 'Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0', 'osid' : 'panasonictv'},
26+
'4' : {'ua' : 'Bulsatcom for android', 'osid' : 'androidtv'},
6327
}
6428

65-
def url_update(u):
66-
u = __ua_os[sys.argv[1]]['url_up'](u)
67-
if dbg:
68-
print '### %s os: %s -> %s' % ('xxx', __ua_os[sys.argv[1]]['osid'], u,)
69-
return u
70-
71-
def mk_info_string (e):
72-
s = u'T: %s' % timesmk(e)
73-
if e['title']:
74-
s += u' title: %s' % e['title']
75-
if e['desc']:
76-
s += u' desc: %s' % e['desc']
77-
s += '[CR]'
78-
return s
79-
80-
def timesmk(v):
81-
ts = v.get('start', None)
82-
te = v.get('stop', None)
83-
if ts is None or te is None:
84-
return u''
85-
ts = datetime.fromtimestamp(time.mktime(time.strptime(ts.split()[0], '%Y%m%d%H%M%S'))) + timedelta(minutes=offset)
86-
te = datetime.fromtimestamp(time.mktime(time.strptime(te.split()[0], '%Y%m%d%H%M%S'))) + timedelta(minutes=offset)
87-
return u'%s %s' % (ts.strftime("%H:%M:%S"), te.strftime("%H:%M:%S"))
88-
89-
def get_prog_info(ch):
90-
s = u''
91-
pr = ch.get('program', None)
92-
if pr:
93-
if isinstance(pr, list):
94-
for entry in pr:
95-
s += mk_info_string(entry)
96-
s += '[CR]'
97-
elif isinstance(pr, dict):
98-
s += mk_info_string(pr)
99-
100-
s += u'[COLOR 3300FF00]'
101-
if ch['channel']:
102-
s += u'[CR]channel: %s' % ch['channel']
103-
if ch.has_key('audio') and ch['audio']:
104-
s += u'[CR]audio: %s' % ch['audio']
105-
if ch['quality']:
106-
s += u'[CR]quality: %s' % ch['quality']
107-
s += u'[/COLOR]'
108-
return s
10929

11030
def progress_cb (a):
11131
print 'Cb: %s -> %s' % (a['str'], a['pr'])
11232

113-
#if __name__ == '__main__':
114-
#if len(sys.argv) != 2:
115-
#for p in sys.argv:
116-
#print p
117-
#print '0 - pcweb, 1 - samsungtv'
118-
#sys.exit('wrong parameters')
119-
120-
#if sys.argv[1] != '0':
121-
#UA['User-Agent'] = __ua_os[sys.argv[1]]['ua']
122-
123-
#import bsc
124-
#start_time = time.time()
125-
#p = os.path.join(os.getcwd(), 'tmp')
126-
#v = '0.0.0'
127-
128-
#map_url = 'http://snip.li/epgmap'
129-
130-
#print usr, psw, p, v
131-
#b = bsc.dodat(base = 'https://api.iptv.bulsat.com',
132-
#login = {'usr': usr,'pass': psw},
133-
#path = p,
134-
#cachetime = 1,
135-
#dbg = dbg,
136-
#timeout = 10,
137-
#ver = v,
138-
#xxx = True,
139-
#os_id = __ua_os[sys.argv[1]]['osid'],
140-
#agent_id = __ua_os[sys.argv[1]]['ua'],
141-
#app_ver = '0.2.17',
142-
#gen_m3u = True,
143-
#gen_epg = False,
144-
#compress = True,
145-
#map_url = map_url,
146-
#proc_cb = progress_cb,
147-
#)
148-
#b.gen_all(True)
149-
33+
def cmd_get_dbg():
34+
return raw_input("q - quit\nr - restart\n")
35+
36+
def cmd_get():
37+
if refreshtime:
38+
time.sleep(600)
39+
diff = (time.time() - last_runtime[0]) / 60.0
40+
print 'Time check %f' % diff
41+
if diff > float(refreshtime):
42+
last_runtime[0] = time.time()
43+
return "r"
44+
else:
45+
return raw_input("q - quit\nr - restart\n")
15046

15147
def main():
48+
last_runtime[0] = time.time()
15249
server.my_serv.start()
15350
try:
15451
while True:
155-
ch = raw_input("q - quit\nr - restart\n")
156-
print ch
157-
158-
if ch == "q":
52+
c = cmd_get()
53+
if c:
54+
print c
55+
if c == "q":
15956
break;
160-
if ch == "r":
57+
if c == "r":
16158
server.my_serv.restart()
16259
except KeyboardInterrupt:
16360
print "\nKeyboardInterrupt"
@@ -166,15 +63,20 @@ def main():
16663
def __log(fmt, data):
16764
print fmt % data
16865

66+
usr, psw = os.getenv('BSCLOGIN', 'user:pass').split(':')
67+
refreshtime = os.getenv('BSCREFRESH', False)
68+
69+
last_runtime = [0.0]
70+
16971
if __name__ == "__main__":
17072
if len(sys.argv) != 2:
17173
for p in sys.argv:
17274
print p
17375
print '0 - pcweb, 1 - samsungtv'
17476
sys.exit('wrong parameters')
77+
17578
import server
17679
server.log_cb = __log
177-
server.dumper_path = os.path.join(os.getcwd(), 'resources', 'dumper.template')
17880
kwargs = {
17981
'base': 'https://api.iptv.bulsat.com',
18082
'login': {'usr': usr,'pass': psw},
@@ -186,7 +88,7 @@ def __log(fmt, data):
18688
'path': os.path.join(os.getcwd()),
18789
'timeout': 10,
18890
'dbg': True,
189-
'gen_epg': False
91+
'gen_epg': False,
19092
}
19193
server.my_serv = server.serv(kwargs)
19294

epg_fetch

Lines changed: 0 additions & 14 deletions
This file was deleted.

fanart.jpg

-298 KB
Binary file not shown.

icon.png

-77.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)