Browse Source

Salaboti logo u.c.

Ivars 7 years ago
parent
commit
c417a711b9

+ 673
- 354
project.wpr
File diff suppressed because it is too large
View File


+ 1
- 1
sources/cinemalive.py View File

@@ -34,7 +34,7 @@ class Source(SourceBase):
34 34
         self.hidden = True # nerāda menu nestrādājošos avotus
35 35
         self.name = "cinemalive"
36 36
         self.title = "cinemalive.tv"
37
-        self.img = "picons/cinemalive.png" #"https://cinemalive.tv/assets/img/logo.png"
37
+        self.img = "cinemalive..png" #"https://cinemalive.tv/assets/img/logo.png"
38 38
         self.desc = "cinemalive.tv satura skatīšanās"
39 39
         self.country=country
40 40
         self.headers = headers2dict("""

+ 2
- 2
sources/euronews.py View File

@@ -29,7 +29,7 @@ class Source(SourceBase):
29 29
     def __init__(self,language="en",cfg_path=None):
30 30
         self.name = "euronews"
31 31
         self.title = "Euronews"
32
-        self.img = "http://pbs.twimg.com/profile_images/732665354242150400/tZsCnjuh_400x400.jpg"
32
+        self.img = "euronews.png"
33 33
         self.desc = "Euronews live and archive"
34 34
         self.headers = headers2dict("""
35 35
 User-Agent: Euronews/4.0.126
@@ -127,7 +127,7 @@ Connection: keep-alive
127 127
                     ptitle = article["pTitle"] if "pTitle" in article else ""
128 128
                     id = article["id"]
129 129
                     desc = "%s\n%s\n%s %s"%(title,atime,vert,ptitle)
130
-                    img = "http://static.euronews.com/articles/%s/399x225_%s.jpg"%(id,id)
130
+                    img = "http://static.euronews.com/articles/%s/399x225_%s..png"%(id,id)
131 131
                     if not atype in ("breakingnews","wire"):
132 132
                         data2 = "content/getArticle?lang=%s&id=%s"%(lang,id)
133 133
                     else:

+ 236
- 0
sources/filmas.py View File

@@ -0,0 +1,236 @@
1
+#!/usr/bin/env python
2
+# coding=utf8
3
+#
4
+# This file is part of PlayStream - enigma2 plugin to play video streams from various sources
5
+# Copyright (c) 2016 ivars777 (ivars777@gmail.com)
6
+# Distributed under the GNU GPL v3. For full terms see http://www.gnu.org/licenses/gpl-3.0.en.html
7
+#
8
+try:
9
+    import json
10
+except:
11
+    import simplejson as json
12
+import urllib2, urllib
13
+import binascii
14
+import datetime, re, sys,os, time
15
+import ConfigParser
16
+from collections import OrderedDict
17
+from SourceBase import SourceBase
18
+import requests
19
+import ssl
20
+if "_create_unverified_context" in dir(ssl):
21
+    ssl._create_default_https_context = ssl._create_unverified_context
22
+
23
+try:
24
+    from requests.packages.urllib3.exceptions import InsecureRequestWarning
25
+    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
26
+except:
27
+    pass
28
+#import resolver
29
+try:
30
+    import util
31
+except:
32
+    sys.path.insert(0,'..')
33
+    import util
34
+
35
+headers2dict = lambda  h: dict([l.strip().split(": ") for l in h.strip().splitlines()])
36
+
37
+class Source(SourceBase):
38
+
39
+    def __init__(self, country="",cfg_path=None):
40
+        self.hidden = True # nerāda menu nestrādājošos avotus
41
+        self.name = "filmas"
42
+        self.title = "Filmas.lv"
43
+        self.img = "filmas.png"
44
+        self.desc = "Filmas.lv - Latvijas filmas"
45
+        self.headers = headers2dict("""
46
+User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
47
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
48
+Accept-Language: en-US,en;q=0.5
49
+Accept-Encoding: gzip, deflate, br
50
+""")
51
+        self.headers2 = headers2dict("""
52
+User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
53
+X-Requested-With: XMLHttpRequest
54
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
55
+""")
56
+        self.url = "https://www.filmas.lv/"
57
+
58
+
59
+    ######### Entry point ########
60
+    def get_content(self, data):
61
+        print "[filmas] get_content:", data
62
+        source, data, path, plist, clist, params, qs = self.parse_data(data)
63
+        content = []
64
+        content.append(("..return", "back","","Return back"))
65
+
66
+        if clist=="home":
67
+            content.extend([
68
+                ("Meklēt", "filmas::filmu-katalogs/?mn={0}&tab=movies&sub_tab=movies-search","","Meklēt"),
69
+                ("Visas", "filmas::filmu-katalogs/?tab=movies&sub_tab=movies-view-2","","Visur skatam visas filmas"),
70
+                ("Spēlfilmas", "filmas::filmu-katalogs/?tab=movies&sub_tab=movies-view-2&mp20=112","","Visur skatamās spēlfilmas"),
71
+                ("Animācijas filmas", "filmas::filmu-katalogs/?tab=movies&sub_tab=movies-view-2&mp20=113","","Visur skatamās animācijas filmas"),
72
+                ("Dokumentalās filmas", "filmas::filmu-katalogs/?tab=movies&sub_tab=movies-view-2&mp20=111","","Visur skatamās dokumentalās filmas"),
73
+                 ("Kinohronikas", "filmas::filmu-katalogs/?tab=movies&sub_tab=movies-view-2&mp20=150","","Visur skatamās kinohronikas")    ,
74
+            ])
75
+            return content
76
+
77
+        elif clist=="filmu-katalogs":
78
+            r=self.call(data)
79
+            result = re.findall(r'<a href="/(movie/\d+)">.+?<img src="/([^"]+)">.+?Pieejama.+?<div class="katalogs-filma-teksts">\s*(.+?)\s*<span style="font-weight:normal; ">\((\d+)\)</span>', r, re.DOTALL)
80
+            for item in result:
81
+                title = item[2]+'(%s)'%item[3]
82
+                data2 = item[0]
83
+                img = self.url + item[1].replace("thumbs_m/","")
84
+                desc = title
85
+                content.append((title,self.name+"::"+data2,img,desc))
86
+            m = re.search(r"<a class='pagenum' href='(\?tab=movies&sub_tab=movies-view-2[^']+)'>&gt;</a>", r, re.DOTALL)
87
+            if m:
88
+                data2 = "filmu-katalogs/"+m.group(1)
89
+                content.append(("Next page",self.name+"::"+data2, "","Next page"))
90
+            return content
91
+
92
+        ### kaut kas neparedzets ###
93
+        else:
94
+            return content
95
+
96
+    def is_video(self,data):
97
+        source,data,path,plist,clist,params,qs = self.parse_data(data)
98
+        if clist=="movie":
99
+            return True
100
+        else:
101
+            return False
102
+
103
+    def call(self, data,params=None,headers=None,lang=""):
104
+        if not headers: headers = self.headers
105
+        url = self.url+data
106
+        result = self._http_request(url,params,headers=headers)
107
+        return result
108
+
109
+    def get_streams(self,data):
110
+        print "[filmas] get_streams:", data
111
+        source, data, path, plist, clist, params, qs = self.parse_data(data)
112
+        streams = []
113
+        url = self.url+data
114
+        mid = data.split("/")[1]
115
+        r = requests.get(url, headers=self.headers, verify=False)
116
+        if not "PHPSESSID" in r.cookies:
117
+            return streams
118
+        phpsessid = r.cookies["PHPSESSID"]
119
+
120
+        ### Main playlist ###
121
+        hid = re.search('src: "/lmdb/hls/playlist/(\w+).m3u8"', r.content).group(1)
122
+        url = "https://www.filmas.lv/lmdb/hls/playlist/%s.m3u8"%hid
123
+        headers = headers2dict("""
124
+User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
125
+Accept: */*
126
+Accept-Language: en-US,en;q=0.5
127
+Accept-Encoding: gzip, deflate, br
128
+Referer: https://www.filmas.lv/movie/%s/
129
+            """%mid)
130
+        r = requests.get(url, headers=headers, verify=False, cookies={"phpsessid":phpsessid} )
131
+        filmassession = r.cookies["filmassession"]
132
+        result = re.findall(r'#EXT-X-STREAM-INF:PROGRAM-ID=(\d+),BANDWIDTH=(\d+),RESOLUTION=(.+?),CODECS="(.+?)"\n(.+?)$', r.content, re.IGNORECASE | re.MULTILINE)
133
+        title = url.split("/")[-1].split(".")[0]
134
+
135
+        ### Initial key requests
136
+        url = "https://www.filmas.lv/lmdb/hls/key/request/%s?%s"%(mid,int(time.time()))
137
+        r=requests.get(url,headers=headers,cookies = {"filmassession":filmassession}, verify=False )
138
+        filmassession = r.cookies["filmassession"]
139
+
140
+        ### Metada ###
141
+        url = "https://www.filmas.lv/charts/api/api/?method=search_movie&query=%s"%mid
142
+        r = requests.get(url, headers=headers, verify=False)
143
+        if not "error" in r.content:
144
+            title = r.json()["nodes"][0]["name"]
145
+            img = self.url+r.json()["nodes"][0]["image"]
146
+            desc = r.json()["nodes"][0]["plot"]
147
+        else:
148
+            img = desc = ""
149
+
150
+        for h in result:
151
+            url = h[4]
152
+
153
+            ### Key request ###
154
+            headers["Origin"] = "https://www.filmas.lv"
155
+            r=requests.get(url,headers=headers, verify=False)
156
+            url_key = re.search('#EXT-X-KEY:METHOD=AES-128,URI="(.+?)"', r.content, re.IGNORECASE | re.MULTILINE).group(1)
157
+            r=requests.get(url_key,headers=headers, cookies={"filmassession":filmassession,"PHPSESSID":phpsessid}, verify=False)
158
+            key = r.content if not "error" in r.content else ""
159
+
160
+            stream = util.item()
161
+            stream["name"] = title
162
+            stream["url"] = url
163
+            stream["img"] = img
164
+            stream["desc"] = desc
165
+            stream["headers"] = {"key":binascii.b2a_hex(key)}
166
+            stream["quality"] = h[2]
167
+            stream["order"] = int(h[1])
168
+            stream["resolver"] = "filmas"
169
+            streams.append(stream)
170
+
171
+        return  sorted(streams,key=lambda item: item["order"],reverse=True)
172
+
173
+
174
+def download_hls(url, title, download_dir="", headers=None, overwrite=True):
175
+    UA = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"
176
+    if not headers:
177
+        headers = {"User-Agent" : UA}
178
+    key = headers["key"] if "key" in headers else ""
179
+    if not "User-Agent" in headers:
180
+        headers["User-Agent"] = UA
181
+    tsname = os.path.join(download_dir,title+".ts")
182
+    if not os.path.exists(tsname) or overwrite:
183
+        tsfile = open(tsname,"wb")
184
+        print "Downloading ", tsname
185
+        try:
186
+            r=requests.get(url,headers=headers, verify=False)
187
+        except Exception as e:
188
+            print "Got Exception: ", str(e)
189
+            import traceback
190
+            traceback.print_exc()
191
+            sys.exit()
192
+        ts_list = re.findall(r"#EXTINF:([\d\.]+),\n(.+?)$", r.content, re.IGNORECASE | re.MULTILINE)
193
+        for ts in ts_list:
194
+            url2 = ts[1]
195
+            #print "Downloading ", url2
196
+            #fname = os.path.join(download_dir,url2.split("/")[-1])
197
+            r = requests.get(url2, headers=headers, verify=False)
198
+            content = r.content
199
+            if key:
200
+                from Crypto.Cipher import AES
201
+                key2 = binascii.a2b_hex(key)
202
+                iv = content[:16]
203
+                d = AES.new(key2, AES.MODE_CBC, iv)
204
+                content = d.decrypt(content[16:])
205
+            #with open(fname,"wb") as f:
206
+                #f.write(content)
207
+            tsfile.write(content)
208
+            #lfile.write("file '%s'"%fname)
209
+        #lfile.close()
210
+        tsfile.close()
211
+    from subprocess import call
212
+    cmd = [r"ffmpeg.exe","-i", tsname.encode(sys.getfilesystemencoding()), "-c","copy", os.path.join(download_dir,title+".mp4").encode(sys.getfilesystemencoding())]
213
+    ret = call(cmd)
214
+
215
+
216
+if __name__ == "__main__":
217
+    #url = "http://localhost:88/https%3A//as2.filmas.lv/FilmasLV/508D4024A83FDC1AA61D727DE5046D12/index-f3-v1-a1.m3u8?~key=4cb5c12b2aaa3d2cf211583cc9add2dd"
218
+    #download_hls(url, "video", "")
219
+
220
+    c = Source()
221
+    if len(sys.argv)>1:
222
+        data= sys.argv[1]
223
+    else:
224
+        data = "movie/3112/"
225
+    if "movie" in data:
226
+        if data.startswith("http"):
227
+            data = data.replace("https://www.filmas.lv/","")
228
+        streams = c.get_streams(data)
229
+        #for s in streams:
230
+        s = streams[0]
231
+        download_hls(s["url"],"%s %s"%(s["name"],s["quality"]),"",s["headers"])
232
+    else:
233
+        content  = c.get_content(data)
234
+        for item in content:
235
+            print item
236
+    pass

+ 2
- 2
sources/filmix.py View File

@@ -34,7 +34,7 @@ class Source(SourceBase):
34 34
     def __init__(self,country="",cfg_path=None):
35 35
         self.name = "filmix"
36 36
         self.title = "filmix.me"
37
-        self.img = "http://cs5324.vk.me/g33668783/a_903fcc63.jpg"
37
+        self.img = "filmix.png"
38 38
         self.desc = "filmix.me satura skatīšanās"
39 39
         self.country=country
40 40
         self.headers = headers2dict("""
@@ -167,7 +167,7 @@ Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
167 167
                 m = re.search('itemprop="alternativeHeadline" content="([^"]+)"', r2, re.DOTALL)
168 168
                 if m:
169 169
                     title = title + "/"+m.group(1)
170
-                m = re.search('<img src="([^"]+.jpg)"', r2, re.DOTALL)
170
+                m = re.search('<img src="([^"]+..png)"', r2, re.DOTALL)
171 171
                 img = m.group(1) if m else self.img
172 172
                 m = re.search(r'<a itemprop="copyrightYear".+?>(\d+)<', r2, re.DOTALL)
173 173
                 if m:

+ 1
- 1
sources/filmon.py View File

@@ -36,7 +36,7 @@ class Source(SourceBase):
36 36
         #self.hidden = True
37 37
         self.name = "filmon"
38 38
         self.title = "FilmOn"
39
-        self.img = "http://behindthegloves.com/wp-content/uploads/2016/01/FilmOn-logo1.jpg"
39
+        self.img = "filmon.png"
40 40
         self.desc = "FilmOn portāla satura skatīšanās"
41 41
         self.headers = headers0
42 42
 

+ 1
- 1
sources/iplayer.py View File

@@ -30,7 +30,7 @@ class Source(SourceBase):
30 30
     def __init__(self,cfg_path=None):
31 31
         self.name = "iplayer"
32 32
         self.title = "BBC iPlayer"
33
-        self.img = "http://www.userlogos.org/files/logos/inductiveload/BBC_iPlayer_logo.png"
33
+        self.img = "iplayer.png"
34 34
         self.desc = "BBC iPlayer portal content"
35 35
 
36 36
         self.api_url = "http://ibl.api.bbci.co.uk/ibl/v1/"

+ 1
- 1
sources/lmt.py View File

@@ -35,7 +35,7 @@ class Source(SourceBase):
35 35
     def __init__(self, country="",cfg_path=None):
36 36
         self.name = "lmt"
37 37
         self.title = "LMT straume"
38
-        self.img = "http://www.lob.lv/images/logo/lmt_straume_vert_rgb.png"
38
+        self.img = "lmt.png"
39 39
         self.desc = "LMT straume - dažādi video latviesu valodā"
40 40
         self.headers = headers2dict("""
41 41
 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0

+ 1
- 1
sources/ltc.py View File

@@ -30,7 +30,7 @@ class Source(SourceBase):
30 30
     def __init__(self,cfg_path=None):
31 31
         self.name = "ltc"
32 32
         self.title = "Shortcut.lv (lattelecom.tv)"
33
-        self.img = "picons/shortcut.png"
33
+        self.img = "shortcut.png"
34 34
         self.desc = "Shortcut.lv (lattelecom.tv) satura skatīšanās"
35 35
 
36 36
         self.token = "" # manstv.lattelecom.tv

+ 1
- 1
sources/movieplace.py View File

@@ -36,7 +36,7 @@ class Source(SourceBase):
36 36
         self.hidden = True # nerāda menu nestrādājošos avotus
37 37
         self.name = "movieplace"
38 38
         self.title = "MoviePlace.lv"
39
-        self.img = "http://movieplace.lv/images/logo.png"
39
+        self.img = "movieplace.png"
40 40
         self.desc = "Movieplace.lv - filmas latviesu valodā"
41 41
         self.headers = headers2dict("""
42 42
 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0

+ 1
- 1
sources/mtgplay.py View File

@@ -43,7 +43,7 @@ class Source(SourceBase):
43 43
     def __init__(self,country="lv",cfg_path=None):
44 44
         self.name = "mtgplay"
45 45
         self.title = "Skaties.lv (TV3)"
46
-        self.img = "http://skaties.lv/touch-icon-192x192.png"
46
+        self.img = "tvplay.png"
47 47
         self.desc = "MTG skaties.lv satura skatīšanās (LNT,TV3, TV6 u.c.)"
48 48
 
49 49
         self.country=country

+ 1
- 2
sources/play24.py View File

@@ -31,9 +31,8 @@ class Source(SourceBase):
31 31
     def __init__(self,country="lv",cfg_path=None):
32 32
         self.name = "play24"
33 33
         self.title = "Play24.lv"
34
-        self.img = "http://play24.lv/images/play24-logo-black.png"
34
+        self.img = "riga24.png"
35 35
         self.desc = "play24.lv (Riga24TV) satura skatīšanās"
36
-
37 36
         self.country=country
38 37
 
39 38
     def get_content(self, data):

+ 1
- 1
sources/replay.py View File

@@ -33,7 +33,7 @@ class Source(SourceBase):
33 33
     def __init__(self,country="lv",cfg_path=None):
34 34
         self.name = "replay"
35 35
         self.title = "Replay.lv (LTV)"
36
-        self.img = "http://replay.lsm.lv/apple-touch-icon.png"
36
+        self.img = "replay.png"
37 37
         self.desc = "LSM replay.lv satura skatīšanās"
38 38
 
39 39
         self.country=country

+ 116
- 0
sources/streams.cfg View File

@@ -0,0 +1,116 @@
1
+[home]
2
+Home
3
+My TV|config::my_tv|my_tv.png|Mani TV kanāli (tiešraide)
4
+My TV archive|config::my_archive|my_archive.png|Mani TV arhīvu video
5
+My Video|config::my_video|my_video.png|Mani video
6
+My Kids|config::my_kids|my_kids.png|Mani bērnu video
7
+#My Radio|config::my_radio|my_radio.png|Mani radio kanāli
8
+Replay.lv (LTV)|replay::home|replay.png|Latvijas TV tiešraides un arhīvs
9
+Skaties.lv (TV3)|mtgplay::home|skaties.png|MTG kanālu (LNT,TV3, TV6 u.c.) arhīvs
10
+Shortcut (lattelecom.tv)|ltc::home|shortcut.png|lattelecom TV, arhīves un video
11
+Play24.lv (Riga24TV)|play24::home|riga24.png|play24.lv (Riga24TV)tiešraide un arhīvs
12
+LMT straume|lmt::home|lmt.png|LMT straume - dažādi video latviesu valodā
13
+Filmas.lv|filmas::home|filmas.png|Filmas.lv - Latvijas filmas
14
+viaplay.lv|viaplay::home|viaplay.png|Viaplay.lv - filmas latviešu, krievu u.c. valodās
15
+TVDom.tv|tvdom::home|tvdom.png|PBK tiešraides un arhīvs
16
+BBC iPlayer|iplayer::home|iplayer.png|BBC live streams and arhive
17
+Euronews|euronews::home|euronews.png|Euronews live streams and archive
18
+cinemalive.tv|cinemalive::home|cinemalive.png|cinemalive.tv - flmas  latvišu valodā
19
+MoviePlace.lv|movieplace::home|movieplace.png|Movieplace.lv - filmas latviesu valodā
20
+Filmix.net|filmix::home|filmix.png|Filmix.net - filmas krievu valodā
21
+SerialGURU.ru|serialguru::home||Serialguru.ru - filmas krievu valodā
22
+USTVNow|ustvnow::home|ustvnow.png|USTVNow kanālu tiešraide
23
+FilmOn|filmon::home|filmon.png|FilmOn - tiešraides un video (dažādās valodās)
24
+TVPlay Baltic|config::mtg|tvplay.png|Other countries MTG media portals content
25
+
26
+[my_tv]
27
+My Tv
28
+..return|back|default|Atgriezties atpakaļ
29
+LTV1|replay::tiesraide/ltv1/|http://replay.lsm.lv/resources/logo/large_ltv1.png|LTV1 tiesraide (video )
30
+LTV7|replay::tiesraide/ltv7/|http://replay.lsm.lv/resources/logo/large_ltv7.png|LTV7 tiesraide (video )
31
+TV3 (ltc)|ltc::content/live-streams/103?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/TV3_logo.png|TV3
32
+LNT (ltc)|ltc::content/live-streams/104?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/LNT_logo.png|LNT
33
+TV6|ltc::content/live-streams/106?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/TV6_logo.png|TV6
34
+Kanāls 2|ltc::content/live-streams/608?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/Kanals2_logo.png|Kanāls 2
35
+3+|ltc::content/live-streams/107?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/3_logo.png|3+
36
+360TV|ltc::content/live-streams/1051?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/360TV_new.png|360TV
37
+STV Pirmā!|ltc::content/live-streams/1069?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/STV.png|STV Pirmā!
38
+TVRiga24|play24::tiesraide|riga.24.png|TV live streams
39
+Re:TV|ltc::content/live-streams/924?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/RE_TV.png|Re:TV
40
+RU live|tvdom::tiesraides|tvdom.png|RU live streams from TVDom
41
+BBC live (iPlayer)|iplayer::live|iplayer.png|BBC live streams from iPlayer
42
+UK live (FilmOn) TV|filmon::group?id=5|https://static.filmon.com/assets/groups/5/big_logo.png|UK live streams from FilmOn
43
+US live (USTVNow|ustvnow::tvlive|ustvnow.png|US live streams from FilmOn
44
+Canadian live (FilmOn)|filmon::group?id=44|https://static.filmon.com/assets/groups/44/big_logo.png|Canada live streams from FilmOn
45
+Sport stream|rtmp://184.172.124.216/live/test111||
46
+
47
+[my_archive]
48
+My Archive
49
+..return|back||Atgriezties atpakaļ
50
+LTV arhīvs LV|replay::visi/jaunakie/?source=ltv&lang=lv|replay.png|LTV1, LTV2 pārraižu arhīvs LV
51
+LTV arhīvs RU|replay::vse/novie/?source=ltv&lang=ru|replay.png|LTV1, LTV2 pārraižu arhīvs RU
52
+skaties.lv arhīvs|mtgplay::videos?country=lv&order=-airdate|skaties.png|MTG (LNT, TV3, TV6 u.c.) pārraižu arhīvs
53
+Lattelecom.tv arhīvs - categories|ltc::archive/categories|shortcut.png|Lattelecom.tv pārraižu arhīvs
54
+TVRiga24 arhīvs|play24::kategorija/raidijumi|riga24.png|TVRiga24.tv pārraižu arhīvs
55
+TVDom arhīvs - categories|tvdom::arhivs|tvdom.png|TVDom(PBK, NTV, REN u.c.) pārraižu arhīvs RU
56
+BBC (iPlayer) arhīvs|iplayer::categories|iplayer.png|BBC programmes by categories
57
+Category - News|euronews::content/getVertical?lang=en&byPage=40&page=1&vId=1|euronews.png|Category - News
58
+Latest programs|euronews::content/getLatestPrograms?lang=en&byPage=40&page=1|euronews.png|Latest programs
59
+
60
+[my_video]
61
+My Video
62
+..return|back||Atgriezties atpakaļ
63
+Все фильмы|filmix::films|filmix.png|Все фильмы
64
+Все сериалы|filmix::serialy|filmix.png|Все сериалы
65
+
66
+[my_kids]
67
+My Kids
68
+..return|back|default|Atgriezties atpakaļ
69
+Bērnu TV|config::my_kids_tv|my_tv.png|Bērnu TV kanāli
70
+Bērnu video|config::my_kids_video|my_video.png|Saglabātie bērnu video
71
+LTV bērnu TV arhīvs|replay::raidijumi/?lang=lv&type=video&theme=5|my_archive.png|LTV bērnu TV arhīvs
72
+Skaties.lv bērnu TV arhīvs|mtgplay::formats?category=51&country=lv&order=title|http://mtgonline.lv/tv3play/categories/berni-new.jpg|Skaties.lv bērnu TV arhīvs
73
+Shortcut.lv video bērniem - latviski|ltc::videonoma?page=0&genre=3&sorts=title&cnt=40&clear=true&filter={"valoda":["lv"]}|https://www.lattelecom.tv/images/redesign/videonoma_dropdown_berniem.png|Shortuc.lv (Lattelecom) bērnu video latviski
74
+CBeebies video|iplayer::categories/cbeebies|iplayer.png|CBeebies videos from iPlayer
75
+CBBC video|iplayer::categories/cbbc|iplayer.png|CBBC videos from iPlayer
76
+TVDom bērnu video|tvdom::arhivs/bernu|tvdom.png|TVDom bērnu video RU
77
+Filmix bērnu filmas|filmix::detskij|filmix.png|Filmix bērnu filmas
78
+Filmix bērnu seriāli|filmix::detskij/s7|filmix.png|Filmix bērnu seriāli
79
+
80
+[my_kids_tv]
81
+My Kids TV
82
+..return|back|default|Atgriezties atpakaļ
83
+Kidzone|ltc::content/live-streams/951?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/kidzone2_new.png|Kidzone
84
+Nickelodeon|ltc::content/live-streams/302?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/Nickelodeon.png|Nickelodeon
85
+Jim Jam|ltc::content/live-streams/303?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/Jim_Jam.png|Jim Jam
86
+Nick Jr|ltc::content/live-streams/1095?include=quality|https://manstv.lattelecom.tv/images/01_Bildes/02_Kanalu_raidijumu_default/NickJR.png|Nick Jr
87
+CBeebies (iPlayer)|iplayer::live/cbeebies|http://www.lyngsat-logo.com/hires/bb/bbc_cbeebies_uk.png|CBeebies
88
+CBBC (iPlayer)|iplayer::live/cbbc|http://www.lyngsat-logo.com/hires/bb/bbc_cbbc.png|CBBC
89
+CBeebies (FilmOn)|filmon::channel?id=3191|http://static.filmon.com/assets/channels/3191/big_logo.png|CBeebies is dedicated to preschoolers. Packed full of their favourite characters, CBeebies offers 13 hours of programmes every day which encourage your child to play along and learn. It's also completely advert free and with a dedicated website and interactive service, at CBeebies it's "Playtime All the Time!"
90
+CBBC (FilmOn)|filmon::channel?id=29|http://static.filmon.com/assets/channels/29/big_logo.png|CBBC is a BBC Television channel aimed at 6 to 12 year olds.
91
+Om Nom (FilmOn)|filmon::channel?id=3824|http://static.filmon.com/assets/channels/3824/big_logo.png|The series chronicles Om Nom's adventures with a young boy named Evan, beginning  with the little monster's mysterious appearance on the boy's doorstep in Episode 1. The animation series goes on to reveal Om Nom's mischievous, yet endearing personality as he and Evan bond over day-to-day activities such as playing games, exploring house-hold items and celebrating holidays.
92
+
93
+[my_kids_video]
94
+My Kids Video
95
+..return|back|default|Atgriezties atpakaļ
96
+
97
+[my_radio]
98
+My Radio
99
+..return|back|default|Atgriezties atpakaļ
100
+LR1|replay::tiesraide/lr1/|http://replay.lsm.lv/resources/logo/lr1_logo.png|LR1 tiesraide (audio)
101
+LR2|replay::tiesraide/lr2/|http://replay.lsm.lv/resources/logo/lr2_logo.png|LR2 tiesraide (audio)
102
+LR3|replay::tiesraide/lr3/|http://replay.lsm.lv/resources/logo/lr3_logo.png|LR3 tiesraide (audio)
103
+LR4|replay::tiesraide/lr4/|http://replay.lsm.lv/resources/logo/lr4_logo.png|LR4 tiesraide (audio)
104
+LR5|replay::tiesraide/lr5/|http://replay.lsm.lv/resources/logo/lr5_logo.png|LR5 tiesraide (audio)
105
+LR6|replay::tiesraide/lr6/|http://replay.lsm.lv/resources/logo/lr6_logo.png|LR6 tiesraide (audio)
106
+
107
+[mtg]
108
+MTG
109
+..return|back|default|Atgriezties atpakaļ
110
+Estonia (tv3play.ee)|mtgplay::home?country=ee||MTG Estonia media portal content
111
+Lithuania (play.tv3.lt/)|mtgplay::home?country=lt||MTG Lithuania media portal content
112
+Sweden (tvXplay.se)|mtgplay::home?country=se||MTG Sweden media portal content
113
+Denmark (tv3play.dk)|mtgplay::home?country=dk||MTG Denmark media portal content
114
+Norway (tv3play.no)|mtgplay::home?country=no||MTG Norway media portal content
115
+Bulgaria (play.novatv.bg/)|mtgplay::home?country=bg||MTG Bulgaria media portal content
116
+

+ 1
- 1
sources/tvdom.py View File

@@ -35,7 +35,7 @@ class Source(SourceBase):
35 35
     def __init__(self,country="lv",cfg_path=None):
36 36
         self.name = "tvdom"
37 37
         self.title = "TVDom.tv"
38
-        self.img = "https://tvdom.tv/front/assets/images/logo.png"
38
+        self.img = "tvdom.png"
39 39
         self.desc = "TVDom.tv portāla satura skatīšanās"
40 40
         self.headers = headers0
41 41
         self.url = "https://tvdom.tv/"

+ 1
- 1
sources/ustvnow.py View File

@@ -36,7 +36,7 @@ class Source(SourceBase):
36 36
         self.hidden = True
37 37
         self.name = "ustvnow"
38 38
         self.title = "USTVNow"
39
-        self.img = "http://watch.ustvnow.com/assets/ustvnow/img/ustvnow_og_image.png"
39
+        self.img = "ustvnow.png"
40 40
         self.desc = "USTVNow kanālu tiešraide"
41 41
         self.headers = headers0
42 42
 

+ 1
- 1
sources/viaplay.py View File

@@ -40,7 +40,7 @@ class Source(SourceBase):
40 40
         self.hidden = True # nerāda menu nestrādājošos avotus
41 41
         self.name = "viaplay"
42 42
         self.title = "viaplay.lv"
43
-        self.img = "https://yt3.ggpht.com/-noVdjbNR-V8/AAAAAAAAAAI/AAAAAAAAAAA/yZ9XNP5urLY/s900-c-k-no-mo-rj-c0xffffff/photo.jpg"
43
+        self.img = "viaplay.png"
44 44
         self.desc = "Viaplay.lv saturs"
45 45
         self.url = "https://viaplay.lv/"
46 46
         self.headers = headers2dict("""