From e12aaed0b6b6a68631f6034e5678e1d8fcc7343f Mon Sep 17 00:00:00 2001 From: yfang1644 Date: Sun, 5 Apr 2020 18:05:34 +0800 Subject: [PATCH] add filter to iqiyi --- addons.xml | 4 +- addons.xml.md5 | 2 +- channel.m3u | 20 +- plugin.video.iqiyi/addon.xml | 2 +- plugin.video.iqiyi/default.py | 207 ++++++------------ ...2.4.8.zip => plugin.video.iqiyi-2.4.9.zip} | Bin 41489 -> 40980 bytes plugin.video.mgtv/addon.xml | 2 +- plugin.video.mgtv/default.py | 86 +++++--- plugin.video.mgtv/lib/mgtv.py | 4 +- plugin.video.mgtv/plugin.video.mgtv-1.1.7.zip | Bin 14182 -> 0 bytes plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip | Bin 0 -> 16641 bytes script.iptvtool/resources/channel.m3u | 30 ++- 12 files changed, 156 insertions(+), 201 deletions(-) rename plugin.video.iqiyi/{plugin.video.iqiyi-2.4.8.zip => plugin.video.iqiyi-2.4.9.zip} (82%) delete mode 100644 plugin.video.mgtv/plugin.video.mgtv-1.1.7.zip create mode 100644 plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip diff --git a/addons.xml b/addons.xml index 37b80e2..b9ab7f5 100644 --- a/addons.xml +++ b/addons.xml @@ -331,7 +331,7 @@ @@ -406,7 +406,7 @@ diff --git a/addons.xml.md5 b/addons.xml.md5 index 2ea7751..e1994be 100644 --- a/addons.xml.md5 +++ b/addons.xml.md5 @@ -1 +1 @@ -f89cb90ade67477b5819e3688194a3d9 addons.xml +c03d1e30c520567b94db4bfbfdaa7213 addons.xml diff --git a/channel.m3u b/channel.m3u index 188bea9..0563787 100644 --- a/channel.m3u +++ b/channel.m3u @@ -18,7 +18,7 @@ http://223.110.241.139:6610/gitv/live1/G_NJSB/G_NJSB #EXTINF:-1 tvg-country="CN" tvg-id="cctv1" tvg-name="CCTV1" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV1.png" group-title="中央台", CCTV1综合 http://223.110.242.130:6610/gitv/live1/G_CCTV-1-HQ/index.m3u8 #EXTINF:-1 tvg-country="CN" tvg-id="cctv2" tvg-name="CCTV2" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV2.png" group-title="中央台" ,CCTV2财经 -http://ott.js.chinamobile.com/PLTV/3/224/3221227207/index.m3u8 +http://223.110.241.139:6610/gitv/live1/G_CCTV-2-HD/G_CCTV-2-HD/ #EXTINF:-1 tvg-language="Chinese" tvg-country="CN" tvg-id="cctv3" tvg-name="CCTV3" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV3.png" group-title="中央台" ,CCTV3综艺 http://223.110.242.130:6610/gitv/live1/G_CCTV-3-HQ/index.m3u8 #EXTINF:-1 tvg-country="CN" tvg-id="cctv4" tvg-name="CCTV4" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV4.png" group-title="中央台" ,CCTV4国际 @@ -43,12 +43,12 @@ http://223.110.242.130:6610/gitv/live1/G_CCTV-11-HQ/index.m3u8 http://ott.js.chinamobile.com/PLTV/3/224/3221225556/index.m3u8 #EXTINF:-1 tvg-name="CCTV13" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV13.png" group-title="中央台" ,CCTV13新闻 http://223.110.242.130:6610/gitv/live1/G_CCTV-13-HQ/index.m3u8 -#EXTINF:-1tvg-name="CCTV14" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV14.png" group-title="中央台" ,CCTV14少儿 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV14.png" group-title="中央台" ,CCTV14少儿 http://ott.js.chinamobile.com/PLTV/3/224/3221227201/index.m3u8 #EXTINF:-1 tvg-name="CCTV15" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV15.png" group-title="中央台" ,CCTV15音乐 http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226317/1.m3u8 #EXTINF:-1 tvg-name="CCTV17" tvg-logo="http://epg.51zmt.top:8000/tb1/CCTV/CCTV17.png" group-title="中央台" ,CCTV17农业农村 -http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8 +http://223.110.241.139:6610/gitv/live1/G_CCTV-17-HD/ #EXTINF:-1 tvg-name="风云音乐" group-title="中央台" ,CCTV风云音乐 http://223.99.186.132:6410/shandong_cabletv.live.zte.com/223.99.253.7:8081/00/SNM/CHANNEL00000613/index.m3u8 #EXTINF:-1 tvg-name="CGTN1" group-title="中央台" ,CGTN1(英文) @@ -65,6 +65,14 @@ http://ott.js.chinamobile.com/PLTV/3/224/3221227030/index.m3u8 http://ott.js.chinamobile.com/PLTV/3/224/3221227043/index.m3u8 #EXTINF:-1 group-title="中央台" ,CCTV怀旧剧场 http://223.99.186.132:6410/shandong_cabletv.live.zte.com/223.99.253.7:8081/00/SNM/CHANNEL00000622/index.m3u8 +#EXTINF:-1 tvg-name="中国教育1台" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/中国教育1台.png" group-title="中央台" ,中国教育1台 +http://223.110.241.139:6610/gitv/live1/G_CETV-1/ +#EXTINF:-1 tvg-name="中国教育2台" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/中国教育2台.png" group-title="中央台" ,中国教育2台 +http://223.110.241.139:6610/gitv/live1/G_CETV-2/ +#EXTINF:-1 tvg-name="中国教育3台" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/中国教育3台.png" group-title="中央台" ,中国教育3台 +http://223.110.241.139:6610/gitv/live1/G_CETV-3/ +#EXTINF:-1 tvg-name="中国教育4台" group-title="中央台" ,中国教育4台 +http://223.110.241.139:6610/gitv/live1/G_CETV-4/ #EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,安徽卫视 http://ott.js.chinamobile.com/PLTV/3/224/3221225634/index.m3u8 #EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,安徽卫视(HD) @@ -145,8 +153,6 @@ http://ott.js.chinamobile.com/PLTV/3/224/3221225591/index.m3u8 http://ott.js.chinamobile.com/PLTV/3/224/3221227393/index.m3u8 #EXTINF:-1 tvg-name="浙江卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/zhejiang.png" group-title="地方电视台" ,浙江卫视HD http://ott.js.chinamobile.com/PLTV/3/224/3221225544/index.m3u8 -#EXTINF:-1 ,CETV-1 -http://ott.js.chinamobile.com/PLTV/3/224/3221225622/index.m3u8 #EXTINF:-1 ,凤凰香港 http://ott.js.chinamobile.com/PLTV/3/224/3221226975/index.m3u8 #EXTINF:-1 ,凤凰资讯HD @@ -187,10 +193,6 @@ http://dlhls.live.cnlive.com:1935/cdn/izongyi/playlist.m3u8 http://drsh196ivjwe8.cloudfront.net/hls/cnai/03.m3u8 #EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,安徽卫视 http://121.31.30.90:8085/ysten-business/live/anhuistv/1.m3u8 -#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,安徽卫视FHD -http://112.50.243.7/PLTV/88888888/224/3221225945/1.m3u8 -#EXTINF:-1 ,CETV-1 -http://112.50.243.7/PLTV/88888888/224/3221225869/1.m3u8 #EXTINF:-1 tvg-name="北京卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/beijing.png" group-title="地方电视台" ,北京卫视 http://cctvalih5ca.v.myalicdn.com/wstv/btv1_2/index.m3u8 #EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,BTV文艺 diff --git a/plugin.video.iqiyi/addon.xml b/plugin.video.iqiyi/addon.xml index 7f99052..4b7731a 100644 --- a/plugin.video.iqiyi/addon.xml +++ b/plugin.video.iqiyi/addon.xml @@ -1,7 +1,7 @@ diff --git a/plugin.video.iqiyi/default.py b/plugin.video.iqiyi/default.py index 4dbfbba..b8961f7 100644 --- a/plugin.video.iqiyi/default.py +++ b/plugin.video.iqiyi/default.py @@ -17,16 +17,13 @@ ######################################################################## LIST_URL = 'http://list.iqiyi.com' -PCW_API = 'https://pcw-api.iqiyi.com/search/video/videolists?channel_id={}&mode={}&pageNum={}&pageSize=30&without_qipu=1&is_purchase=0' - -PCW_API = 'https://pcw-api.iqiyi.com/search/video/videolists?channel_id={}&data_type=1&from=pcw_list&is_album_finished=&is_purchase=&key=&market_release_date_level=&mode={}&pageNum={}&pageSize=30&site=iqiyi&source_type=&three_category_id=&without_qipu=1' ALBUM_API = 'https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid={}&page=1&size=300' __profile__ = xbmc.translatePath(xbmcaddon.Addon().getAddonInfo('profile')) __m3u8__ = xbmc.translatePath(os.path.join(__profile__, 'temp.m3u8')) -BANNER_FMT = '[COLOR FFDEB887][%s][/COLOR]' +BANNER_FMT = '[COLOR FFDEB887] (%s) [/COLOR]' INDENT_FMT0 = '[COLOR red] %s[/COLOR]' INDENT_FMT1 = '[COLOR green] %s[/COLOR]' RESOLUTION = {'sd': '标清', 'hd': '高清', 'shd': '超清', 'fhd': '全高清'} @@ -40,20 +37,20 @@ def httphead(url): return url -def previous_page(endpoint, page, total_page, **kwargs): +def previous_page(endpoint, page, total_page, params): if int(page) > 1: li = ListItem('上一页 - {0}/{1}'.format(page, str(total_page))) - kwargs['mode'] = endpoint - kwargs['page'] = int(page) - 1 - u = sys.argv[0] + '?' + urlencode(kwargs) + params['mode'] = endpoint + params['page'] = int(page) - 1 + u = sys.argv[0] + '?' + urlencode(params) addDirectoryItem(int(sys.argv[1]), u, li, True) -def next_page(endpoint, page, total_page, **kwargs): +def next_page(endpoint, page, total_page, params): if int(page) < int(total_page): li = ListItem('下一页 - {0}/{1}'.format(page, str(total_page))) - kwargs['mode'] = endpoint - kwargs['page'] = int(page) + 1 - u = sys.argv[0] + '?' + urlencode(kwargs) + params['mode'] = endpoint + params['page'] = int(page) + 1 + u = sys.argv[0] + '?' + urlencode(params) addDirectoryItem(int(sys.argv[1]), u, li, True) def convertTImer(info): @@ -253,7 +250,6 @@ def playfound(params): url = params['url'] thumbnail = params['thumbnail'] name = params['name'] - items = [] if url[0:4] != 'http': return @@ -277,45 +273,6 @@ def playfound(params): episodelist({'albumId': albumId, 'page':1}) -def filter(params): - url = params['url'] - html = get_html(url) - tree = BeautifulSoup(html, 'html.parser') - filter = tree.findAll('div', {'class': 'mod_sear_list'}) - - surl = url.split('/') - lurl = surl[-1].split('-') - - dialog = Dialog() - - for item in filter[1:]: - title = item.h3.text - si = item.findAll('li') - list = [] - for x in si: - if x.get('class') and 'selected' in x.get('class'): - list.append('[COLOR FFF0F000]' + x.text + '[/COLOR]') - else: - list.append(x.text) - - sel = dialog.select(title, list) - - if sel < 0: - continue - - selurl = si[sel].a['href'].split('/') - selurl = selurl[-1].split('-') - if len(selurl) < 10: - continue - for i in xrange(len(selurl)): - if (selurl[i] != '') and (selurl[i] != lurl[i]): - lurl[i] = selurl[i] - - surl[-1] = '-'.join(lurl) - url = '/'.join(surl) - videolist({'url': httphead(url)}) - - ########################################################################### # search in http://so.iqiyi.com/so/q_%s?source=hot ############################################################################ @@ -387,90 +344,28 @@ def search(params): endOfDirectory(int(sys.argv[1])) -def videolist(params): - html = get_html(url) - html = re.sub('\t|\r|\n', ' ', html) - soup = BeautifulSoup(html, 'html.parser') - - ul = url.split('/')[-1] - page = ul.split('-')[14] - if page == '': - page = '1' - - - li = ListItem('[第%s页](分类过滤)' % page.encode('utf-8')) - u = sys.argv[0] + '?mode=filter&url=' + url - addDirectoryItem(int(sys.argv[1]), u, li, True) - - li = ListItem(BANNER_FMT % '排序方式') - addDirectoryItem(int(sys.argv[1]), sys.argv[0], li, True) - - tree = soup.findAll('div', {'class': 'sort-result-l'}) - arrange = tree[0].findAll('a') - for sort in arrange: - title = sort.text.strip() - select = sort.get('class', '') - if 'selected' in select: - title = INDENT_FMT1 % title - else: - title = INDENT_FMT0 % title - li = ListItem(title) - u = sys.argv[0] + '?mode=videolist&url=' + httphead(sort['href']) - addDirectoryItem(int(sys.argv[1]), u, li, True) - - tree = soup.findAll('div', {'class': 'site-piclist_pic'}) - for item in tree: - href = item.a.get('href') - img = item.img.get('src', '') - title = item.a.get('title', '') - try: - info = item.find('span', {'class': 'icon-vInfo'}).text - except: - info = '' - info = convertTImer(info) - try: - vip = item.find('span', {'class': 'icon-vip-zx'}).text - vip = '|[COLOR FF809000]' + vip + '[/COLOR]' - except: - vip = '' - try: - pay = item.find('span', {'class': 'icon-vip-quan'}).text - pay = '|[COLOR FF809000]' + pay + '[/COLOR]' - except: - pay = '' - albumId = item.a.get('data-qidanadd-albumid') - if albumId is None: - albumId = item.a.get('data-qidanadd-tvid', 'X') - extrainfo = vip + pay - if isinstance(info, str): - extrainfo = info + extrainfo - if isinstance(info, str): - infoLabels={'title': title, 'plot': info} - else: - infoLabels={'title': title, 'duration': info} - - li = ListItem(title + extrainfo.strip(), thumbnailImage=httphead(img)) - li.setInfo(type='Video', infoLabels=infoLabels) - req = { - 'mode': 'episodelist', - 'albumId': albumId, - 'page': 1 - } - u = sys.argv[0] + '?' + urlencode(req) - addDirectoryItem(int(sys.argv[1]), u, li, True) +def filter(params): + chninfo = 'https://pcw-api.iqiyi.com/search/category/categoryinfo?brand=IQIYI&channel_id={}&locale=zh' + cid = params['cid'] + html = get_html(chninfo.format(cid)) + data = loads(html) - li = ListItem(INDENT_FMT0 % '分页') - addDirectoryItem(int(sys.argv[1]), sys.argv[0], li, True) + dialog = Dialog() - pages = soup.findAll('div', {'class': 'mod-page'}) - pages = pages[0].findAll('a') - for page in pages: - li = ListItem(page.txt) - u = sys.argv[0] + '?mode=videolist&url=' + httphead(page['href']) - addDirectoryItem(int(sys.argv[1]), u, li, True) + f = [] + tn = '' + for item in data['data']: + lst = [x['name'] for x in item['child']] + lst.insert(0, '全部') + sel = dialog.select(item['name'], lst) - setContent(int(sys.argv[1]), 'tvshows') - endOfDirectory(int(sys.argv[1])) + if sel > 0: + f += [str(item['child'][sel-1]['id']) + ';must'] + tn += '|' + item['child'][sel-1]['name'] + params['type'] = ','.join(f) + params['page'] = '1' + params['typename'] = tn.encode('utf-8') + category(params) orderlist=[{"id":24,"name":"综合排序"}, @@ -481,7 +376,13 @@ def category(params): order = params['order'] cid = params['cid'] page = params['page'] - items = [] + type = params.get('type', '') + typename = params.get('typename', '') + + li = ListItem('[COLOR FFDEB887][分类过滤 %s][/COLOR]' % typename) + u = sys.argv[0] + '?mode=filter&' + urlencode(params) + addDirectoryItem(int(sys.argv[1]), u, li, True) + for x in orderlist: if int(x['id']) == int(order): style = '[COLOR red]{}[/COLOR]'.format(x['name']) @@ -492,24 +393,46 @@ def category(params): 'mode': 'category', 'order': x['id'], 'cid': cid, - 'page': page + 'page': page, + 'type': type, + 'typename': typename } u = sys.argv[0] + '?' + urlencode(req) addDirectoryItem(int(sys.argv[1]), u, li, True) - api = PCW_API.format(cid, order, page) - if cid == '16': - api = api.replace('data_type=1', 'data_type=2') + PCW_API = 'https://pcw-api.iqiyi.com/search/video/videolists?' + req = { + 'access_play_control_platform': 14, + 'channel_id': cid, + 'data_type': 2 if cid=='16' else 1, + 'from': 'pcw_list', + 'is_album_finished': '', + 'is_purchase': '', + 'key': '', + 'market_release_date_level': '', + 'mode': order, + 'pageNum': page, + 'pageSize': 30, + 'site': 'iqiyi', + 'source_type': '', + 'three_category_id': type, + 'without_qipu': 1 + } + + api = PCW_API + urlencode(req) jdata = loads(get_html(api)) total_page = jdata['data']['pageTotal'] - previous_page('category', page, total_page, order=order, cid=cid) + previous_page('category', page, total_page, params=params) for item in jdata['data']['list']: albumId = item.get('albumId') tvId = item.get('tvId') + extra = item.get('videoCount', '') + if extra: + extra = BANNER_FMT % extra duration = item.get('duration', 0) duration = convertTImer(duration) - li = ListItem(item['name'], thumbnailImage=item['imageUrl']) + li = ListItem(item['name'] + extra, thumbnailImage=item['imageUrl']) li.setInfo(type='Video', infoLabels={'title': item['name'],'plot':item.get('description'), 'duration': duration}) if albumId: req = { @@ -538,7 +461,7 @@ def category(params): u = sys.argv[0] + '?' + urlencode(req) addDirectoryItem(int(sys.argv[1]), u, li, isFolder) - next_page('category', page, total_page, order=order, cid=cid) + next_page('category', page, total_page, params=params) setContent(int(sys.argv[1]), 'tvshows') endOfDirectory(int(sys.argv[1])) @@ -583,7 +506,7 @@ def root(): 'mode': 'category', 'order': 24, 'cid': channel['cid'], - 'page': 1 + 'page': 1, } u = sys.argv[0] + '?' + urlencode(req) addDirectoryItem(int(sys.argv[1]), u, li, True) diff --git a/plugin.video.iqiyi/plugin.video.iqiyi-2.4.8.zip b/plugin.video.iqiyi/plugin.video.iqiyi-2.4.9.zip similarity index 82% rename from plugin.video.iqiyi/plugin.video.iqiyi-2.4.8.zip rename to plugin.video.iqiyi/plugin.video.iqiyi-2.4.9.zip index c14f2aa27a3a2a9399f5742feee59e4b39a680e8..f4c19a02b44d1c38c0d585d4e3c8eda1b05b2de5 100644 GIT binary patch delta 5803 zcmZ9QRZyH;v~Gb$f)j!?8XSTJ2ol`gEw}}OG#WJM4|H%#Bf+h4hu{|6-7UDgyX5S> z@2z{Q&Z?TTzL&Y)My)jmtQ#r59SK`a5rm9^@bCHgBM6554o#>m%=n*zMU%pGxIzCV zJrEaGVBE+j(l}&9p?`C=BqA-wf58T`Nb=Q>A3X1YsH^wU{)GpWYy zrAQscJ79Q!Gw2yCFWsPQm^p>-pcaOkEQwlWpGj+(=rn>|9BJ!jscB+PtOs4EMt;jk zdB>`^l?4^R?i93#IYds2MeP;PFT-wfZ zE;x%A#85aKv+#ar#wS~?xA1!&y{@uNh9esL3@{jv9IlO|^B`Up3WyWcwk}eZI&vx} z6pJ-{i&LZ0e*b5jubOKw2`=O&#gq9}yVLy3*dzpd`_6Fa8cC!R4sI-E4YiK1RA!-b zBK)?Fs3FXsn>=8<_w0h(5K}|A)slp$#PPuMB+R8Ld09xqt8Vcl8A}K^mMSqfPJ*Ae z8kmJwzf+GVw%HS|0D6s_EAN*=yQe(5Y7^RmB$oAbG-BJjPWl;Ct9=|9N$K&mpZu4m zWwucTB$6ly#tYvYdN)fAX5+CHYcab{o24m))6sW2n_dKPQ^-Wlt@Fl+z*t7v!lT9G z2%o4WzJkAZk{rjQf`$&H)TOG2%;Kxe0Dh$)bcBEm?LwtIdUn#hF9Yoq4V)3V;K5UD z;ZpMAR~UCVB?2hmSG{_lSPL-bO~e-P5cJfoh!Rq=ahWbm(s>7jsI-M1MH<`EgkJF7 zjAb=12PUH|P9Rs#)L!nicB`06E&~rrzpn1QZyCrpVC|Hb2KV?*U3?DK~F9Zp=fLDFy*3aUTO{ng!zMLoQ0k1_Ny~pksb%gG3 z^UxVnCz@xhpQVLF5XoQY)qnftE97V?Q%+wqYpSTJ&`&(RkM=_}?zn8VpZV*vZ7Oj| zC%IHdGEF#9vd=$)#*$)$U0S24)kB;iZ%9n^u)9AN#Cv7;IGp`9EA;9bXTZaVA@5_QaOHQrRT4Rv#Vy7l%%C?(*y~$j!nd3TM9RbFT)7E`w*s6%|>0gJOQdznnos^vWNT7Sg} zjC&YY`QcTFiu|Q*>1tKt(2b`z+u~OEGQBa{qrjPN>}sC~mXPR;#AEF`B{fu;CtELLR^@3~bot~Gp)WawX7;gI z2Vg$X_sVv%I8WZqJSOK~CJ;juiz>y$-06=-WXZ1?IM}% zV^Ff+^FeCW{k{;4)*G^?7vLfIGIiGe}413cTE$Xs2j=Pjn#m59G!?1Ta4B8nm?^9)`{zfR@-N9qJ;Xnpk zAhYP0rJMh)8k!pDdvceo88P;rM>QRJJi=>y<}gL%`8i?#SW#e2DC>09@9OkP7%;^) z09w1ryh_cS_a$*^jF||Uatqd}aY7e({2e2%k;-jve}oy#JiOG+B6Kqorn{}-deNXx z)Oz|9_;$bUy33kQ3T>OGT0D$%I%+UHFwA5d+vB&G!VW`uoFHDi$S zZ2fURq&0}6M&=0ezJis4@g6mX#YdLj$Dc@l6Yv(d?Q_i-ay@f^pcI+NXul(mP#pQ8hXE&kK?7 zc)I3pb+F^OtF{Z=vRgriOZpJ1*SSmtChhbFhRyAewu_mOc!@B{_hIEvXC zd1M+C=HeChx&D}D`@XBE`qAA#S5S0GAVPBVz-q|~T0nXRoRU*euyx@`5J9NljX1c< zh5uaVzLk%;%Zdt9xb}JGjJR0?{`g&zguh0i>hRsHJPZk%nWNubc3ez8k5EHV(jq;H-m;5t|<)i z%Ip9pB&GB9(F6OR89C>3zUC{8*>xmxMqRF8gzUfo59&1{73I;~wICu{mL}vQ^$*tm zF){Q}BD~Gv6oim2t}?`Rh~zA(xJM6q=imza3-o}>wzIFCQmnMdZH8wq=cSR0YFnv( zF-T5FErgLD-eYOI8>INLuqQ1oF1~iWz5uXaAB7^{3jYE&1XX?4TFWCc)FV_I%z5J$Dq_(vb0Uzcp*XB>L;S@jjRi3ad-cOVN7~R z!d@KeVuM5QhaN%7n2p)$G)u9|v?hhV4pfF%z#5*NII2BU)OWb(ARhR;BL0P(NPfi5Kc#C!KU-L! zoyjFjU-&fs^K}PeTa3r&Ut5jFA8R6QUurPFOOe^y-6{fDVTl+YpOlbY2S?&%C>dO{a~f*uDU5bkazeX<|XEz z54j9P-L1^dlIiRP91dzFp?^^4a9ZBu6dDe!Eknl1iw+Dl62Zv`1deP zK-dxMfr0OS4j$IF5T|yJ4qWZ=9-A6GQtD)T)io!Sur}6|yldh}&r!_XOX8Y;SCt5+ z`$g_9wn;r~WShT~7bkD;iOOl<_a>~Cl_6{Q?rtk;2Y%V3tX$snBzeCPhG|s#xPF$j zQ?S3{O7t@`3H-xT%++szz9GrITul^SRWUcKE=Q@Y-a)C~jOX7|3!qvvHa_C@FLbq+ zq@5mNBpcdC;(%KGX?0fXE4TxTPNXnYmUJtC+{q}Ql-iPjA zd+><@fb;$2)|kn`YiD?_H+h@9*=}st{`kJ+Fx_Qz0`N+>g!7+nL{&DlY!)M>jUriFwHY zT2=T6}O#44Pru`HK~1RlI0!F$_Ek!{63w4)E+>N;t1&KK|qL`m;K2XDB44tEn?nDn=Q7- zGHcFDz&bODwgyOSC2>l*Thyy=tDUusBLIhkOYE(LPsaj7Sy(c-G|-^fLI2LY8pM|$ zA=W#H^Pv*k=jzbFB6!Ly`kf-34G|I3mojw(y6d>7eN=$I!a<0DEJo!2!i$e9 zR*VSDlGQ>x=N4p0`9^TiyJ)~W{L#EO0eCZ}9;U{fT=ENb%`TLi@U2>%5#Gjl;ZNP{ zz4xN=bSzod`dG?ptvG3KRAFI&ESbBSmQxX_taGsZtpuFG zwDyt8Y0f9AY--p?7nU0zUZ8pWX;$ST^`5sS1J@-}b1O-IJbfLEU=UP;lAg-8Cotyk zmn#PbQ=#3fRgqTUad9Wzac6d^MUFFoKoBWBvHSN``Wu#*s>=_Z)QZLz`tR~#u*oV3 zqOBo+xYm~+Rk9h*{W;8svs(w-BY=TN{qIJu)<;>^NC#PmkNH^l--TWV)SL>d$dufU zhAPl~sVImCv|SGrI$p6k5g0C;&RG+1so#)%x1DYeD>HAs>$$d0lz>THkYidleW&9m zj*c7vvdNs4kLp0*!;uSei#E?_|JNym3&S+b-JRfVj z?%3|UpYSf5hRhX@fIQp1+5%4$JLSNhCY^(QU1EU&OaZ|?jzkqK~4+j7?8{UX`qB zc_$_{yG6#lDR!?ZKN=b+}xUR z@?9?`gR}!HJEIc*}gX3~)?zdN4Wo{h~g?a<_~Lrgy~q z^39jqQh${;fR{>S!m=&nwvYYqC)fmUex8&LEPwqh25SLT2%X*_zT6B6Y)#^hEwX9}|62lA$nKf?JsW zmBio#k46B9EV~;_AY#lrVOAl|Yy=5N@Pi)jt()6{r>lC^s($FV@1c98K#`LAkg(O2LC6>g|JF>0e-bt;8XaYj$v>SGPoAVF0Q%2; z1m#f#LB@2+A;^egpc#swMrlL_jDLrX_LvpY=(JgW>K=7go)B_1PJlfjz$BL<$i&kJ z69ExqAOcM zO2kd}6cPctoh-_?%|d|>54MN$!sn!9OLQgbc;aJzw!06z*_nbksy1=6z0@Yp7Dd1SM~j^8+PsN0_6Fy0uXifA&3j2b3Hu zf%aDT94e7%62EG6)GX3B-YWlV z;@J7o8f-~!WEJ&Hnnu&nsynH|uNq)w<+`jXu{9i{%2a?AOjLzja~W!Y|MG>y!M|DK z`-^QBn@))9IaA^L%AmHwPd3&QU|HY8C)^e#Dz( zG0)ajSZ6!yl`gsetiTVMn?TzWKSMYG65$pRJUwK8>O8GVBX%`por;Ed_+R-@zn0`u zWDfuAWK#{u+G-ZDa8FGK99MV`unY)t|uo1tdUYp<(d@}_>pdGtjQ_pze0x5raVY3I&oTkFVBtK zTr@n0vc9k5;>W;fiBuh#1i#qDTW^+8GFV`yazcv<)_k+zisNmP05S z6=Dh>pC@1=g)s%er*)ND!69Zj*8QI=gP(j;un`l9J#929Ufn0szx=U>j7n?v^D7U- zcD4`v{`gXS7-x)qle|zhd33kmA6NH8>om^fc$3^;w$|}xgA6c07j4}V^@d%wm-|-T z_*w&&7gMeMnQbd7E4ukt4>!lU9#1<1+dGul1Q9Elt9#)kf>aXS$q!*C36oP}`&UkX zI+2FAYE6^d2hDBSd~X>I3?rJ%f^Gj~sh!MlZ7at8?yx)2nEHY0m@ioP@k3F-lZw1jMV45>kxpq&L5@-pt_kInSm&3$`=!d4 zyOEx-T}8PTXZ~{e3`ZObT%Bq6EL>fI4srwg^zs;PF-RL1$L08RKBn{j!gVHt1Og;h zQy%mWN{us`S0K<^tbY+S`;R&vJsHIRjJN(Q4~|iapSn|41t}E~0)o97Bv1DhWH}!T z03(3Z!UIf@{^9xmusA06Hg|y?z98&Z`$*pp~J3JjyJrTgAtE&9`lYojK~chiMZ6dV8M1SBm=Zqgh6YV zQkKs46RaF)tHCQ*5%F~7@xoqfN2y=8aIi_G_@Y7{pX>J82!8+dN)Sdo2s5dRcV!H1 zTY>zV>`0bWy#2Bl(T6=FSxA$}Y=SJa>YIXl$#zvlcb^BW5Z9*f^Ix36`=}#+U(^AM z6!)FYTiB>>t<>Np_KgBlzAxmTPDPc8_i`GkKYX4!AgGOVc5dUW7>6N<4T*xw}1< z?Z|eO$nJqF2OXMU965d)rc04(oC@d|v_X3T3)i`1l}gc69=erZjUSnd3L{0>TaJ>0 zmJWotoJMhirEiy7{kQvEX+NonN-)KN;Ej7!i4*4Y;(NC+Ip^6zX8>K_S&1BOWBvww zuvoZ)GZ%;iTi+By(4atcQ}5^&plnK~nk!^4Spp{ZGu|oBQZ#}@g)tk562(K(ouP7z zfelLcaVMn;xrqW~&5eIRC1F~;6g9|UO`^f&Xl!4!nc5KH5&@5Q>88thpsxWVfX<0d zPU;qyf25PRX9=p!hqsbLb6!ihoz`V)i_S2FCJQaJ*A-CIkGB%|Z=d=^b8Z|Xqf ze~v}VH@b_-oRA+dEbMhWG`WXM{U}-0p5BtBbKPJ~LZV9f)^8IFX`CSxxel?kWJyZ% zdWvH{3u!4-&{eCBo9bQQ#qBR!64g9}2>_GnB+C;<`Eq@6do4@IVq!jyEB^fHT;(pd zy4#3|JMAuZvOfWNLatDKKiL|T?ixOCjQL%@-URBFYc0Syc6a}rHi^(%sRMblj>4Ig zl{G*q-Y7Jcz9Lhmov-lAmwA>v(Uq+2@m0k+sNv8@I?)pk4^yQDw~DYR^(ZMBAMh(& z`2>FmeE6N$8cH2!kNO^SDP}-|qS@!{XQ(Bnw|VBxC({n#;R@{(uuh4?gj395He)w7 z9HW4;Z%_yEP<6#L@nzl@Z88Xb(B>vAwO2sW!kdRk_Q|Bi8I0oD6&^JqL92%9-onIQ zXAE<;F*1=}Dctj8;>)u*RMTg?00g7WRyp8^lA-p4y*A#ET8TiBfL#BJ zfD@m;Y~WsgOb~&--7KLhIQN;nfCn z?Q$O7rwhIr=!S6_eud%$5$u}=k+YM9>>-R}t^ z&Cr2YNW$g|aR1K?zkjTM*MJt_axsqhhM^qmpr5MLS)`CLi=`8VtrQ{DL|T%l#`Rk< ziie{lrk5YCwxNh$c7tIz=h4|3d-71qW<~H_j zH~PC?m#dc|Ub@aj6K+H2JFpA;-wR?X1hS?Tgd_Sr@AFR9BUSY<17kio@kd`?iO}6% ziV%*+Ay+_!l#}&iCSA+zRtrk{F|O;a28)Wo6FPGsapUL8P5+F6Dxfb}#2Nk~Fa-MC5u>HbWA9X$i%?dYy>n~VGRM;?5DIJFj zR?HQMFf?z==kvaIupunsxZb82QCZ)V2M+#e*5_;#04_0&gETCdQ&)|HQG&aSIHezc8D z?4%>_1kC&i0c~2&LjxNa$M2a#BLp7aNbRWmJmty0#_i?a_?Vy~-Z=!iZP!`K8{%0O z8L+VcV~8{haBsiLEwpSl*Y&Ks{nz>b`4?O@zYY z@RfNEX<}lTpAOFDKUMTZb*{+#FG&i$DH-q8V!PP@ru86@(`3@8~zEo|&u5a012zz|i`;pGRDmMgFqw8fs`#dYXqn1HE$Vn1^rZy{Z!`~0l^@A`v4_VuPuXU`tW9tSTf%A zo!6_`2DLQ1t+rR<39(GCr@Pe8#6)ek`EZh)fZ(V#SUtIzr>?J9ygW+fFzAcy`b<*OOm# z-h2Ng3M(@f#WO#>xzJ0`m5kX=+uB)LA8k_Z+rjw~Rd%Xwmg6XTO??b?DAjztzdnLH z(gacT#^fZmc`1_#*h5sq{ZcO6%<)^(AP{|CIhDfJ#%dELT}-SEZOj#9&dl2dCx)eQ zBeQYf%hO_8nkXiqb|F{ww1#q<)A8^ubL{RXrWNvQPIH+}`0M}T#ygZVt?75k^n7<< z%eh=&S-~@%=-$9Ie=K>*n&EICh+llp1#PWa0cvMoO@|S8xYgB z*+)j0{+!lDH=n({X$m2JF6EZmA)U}zSI^E$dOpK$u{9XD36m9UEUqI>)5mX?HW*6%s-u33^; zLP7|0O=vxPaQ{|(unsUS`?21l0g&EB;(b&KbETtlENquqGp%)2$o=SbPX{j5B1@Td z>cK{Li1tz)*hI5XdDJmyHbB~7y-h?&SkVt~ZCh)FGS)VXg{ZET5`6=el*E;B&EJ9D zrAfqvJ{__=lK~fm)j8ovszf9`2el=a`)SG1xa(0upYyfs@KJZnmfTFR{ zDsZ?lv}RfGiS*nlldRJv@OrNL(;B()qiev^${4o&D20W=Wjq_p9! zk#2Dd1FDB5@A%jwIw12qRIt>mHSH_{N?WHyhCqLubayF&PYGU zbL!N8&oF{EWQ^b@{oC-u;}}Ku=`ywPBYpGAyKpTXqoyo6TQ_0FM%C5*Rm0*ciLE1( zR)QuH!rk)?Fk#XKA6W9u1T6=4ZV)Lwey@(UiwbydOoeIAA8;*VEsKeT9B7AQ4ye|% zlV49$6Z0LKOMDG*u-XYjlM(Yvd*3LQ6Ct!%@+P%YdClE2ihu;NlWMVsO5NsIEXkat zJy4f~I6WmN@}vg0Sh6kQ z%t@tc1>DU}1F&d55Ke(Sl@H@lN3<%vVKON-?o6~5J6O3?qg{kWlxv7gaf+1cvy{w% z$@BAEKWayeLt zwm1EP!j({bobA*^RrJml-DWh7zOu?hpfkoHN^Ive0jNHOSoKP;qwqsVAjPPlX&pgl z!ZRfz=U>)L0n^bWCcc}{Sqt(cvtT0*?W{~OtMA;PwM>ONE=V6zZQP&iNIcw5Y9$$J zn285vmqU+{3o08ql4c={@s|;nsUen$p$vr+`57oX_Rd6*UuQ={S7feFKc_jm^1iNi zn|y2$;MaH;)mqFNk79hudp;jXSYrP4aC#%QtA)BC97*H%Y2d)9HH z7B?d|J;|uP({&fZxUH=@684qZjjGeEBB`S4G2E;rsoOuwV*YnJ zsgdG>w+P2jU-fV2P~F$61K+dW#gj6wPG#WvIE3eef3pyGur5irpBI4Yt$c|=6d8%s zz>2l3*Fm{zr((Y0c$wqOc^Sj6^IsAs%9F&!Jf^V@%4mB4i=*;~)&JTTs)Q4t1 zOdrKO>8Ik$Hl;b+mlsN{0z`Ly%3m*_qbAoZ9G!Fq)dtYOk%f4Ova8+oZp4^mILupS_4=MSlC-PvHWEy|Ze_(N;0 z^Xi?8O)=xob^_CHhrHs&$_s$SxCL5eaiI4fw-$-@xL{}(Y_~MZG22USlkxp5;t|cT8Reiv@j5eK;C;@D zrzIy`*f7$$+e>q)wwGh0w#+KiiRL4n_)Z$7wA7tu6|>MePX_GwLw2)m>h{-SXhI$c zNm1hVjn-Wrg|W+Hn<>j;)diGLw2z3fG+0JB=@zaaHXSxGV*kO%A9d*iP(N1;uvdN8 z7%&KdDH(|%913GtIPf6x0<_rJfr2~^^4QfUcNh`CG|@8&FpJv#=s=Snsd;j zIrTd3RuT}1Pr?U~ZXlwZaTkvR5K(&_k2MOw_YEnJN$z>Izu`?#K4!V=-u;V9&}W8! zhS15mwKx}}Untr#Cwr%HHJuR5^18jo{J7^c>zY-T26yF-!2`^ZFR3`146eO;oV(93~mN=Z!~t$tVZn# zFFjJ?3cvA0kQuXi@p8wJ&>sBRNopXhBhQSEru+^`>JZzR8YXhFNeEdZe^0W0#gioH zM_o980gmE*dRuO`A0r)^)6C0G+%odjuud=b?G>H?_?0}rgB>I+rrWuO9aoWsF3!_8 z-D$5w516mX*VM7!KupQJt-@tPmN5ICClp_RK@pDBtv3e%n7F|M*v4hBdFTsM_A%BG zA{XgtepMf|_d%jSHc Rf4`QHzxlMNt-1fM`+r859^3!` diff --git a/plugin.video.mgtv/addon.xml b/plugin.video.mgtv/addon.xml index ac74424..06d52b5 100644 --- a/plugin.video.mgtv/addon.xml +++ b/plugin.video.mgtv/addon.xml @@ -1,7 +1,7 @@ diff --git a/plugin.video.mgtv/default.py b/plugin.video.mgtv/default.py index 95094a8..785bf4a 100644 --- a/plugin.video.mgtv/default.py +++ b/plugin.video.mgtv/default.py @@ -5,7 +5,7 @@ from bs4 import BeautifulSoup from json import loads from common import get_html, r1 -from lib.mgtv import video_from_vid, quote_plus +from lib.mgtv import video_from_vid, video_from_url, quote_plus plugin = Plugin() url_for = plugin.url_for @@ -18,25 +18,23 @@ LIST_URL = 'http://list.mgtv.com' HOST_URL = 'https://www.mgtv.com' -RESOLUTION = {'sd': '标清', 'hd': '高清', 'shd': '超清', 'fhd': '全高清'} - - def httphead(url): if len(url) < 2: return url if url[:2] == '//': url = 'https:' + url elif url[0] == '/': - url = LIST_URL + url + url = HOST_URL + url return url -@plugin.route('/playvideo//') -def playvideo(vid): +@plugin.route('/playvideo//') +def playvideo(url): level = int(plugin.addon.getSetting('resolution')) - m3u_url = video_from_vid(vid, level=level) + #m3u_url = video_from_vid(vid, level=level) + m3u_url = video_from_url(httphead(url), level=level) stackurl = 'stack://' + ' , '.join(m3u_url) if len(m3u_url) > 1 else m3u_url[0] plugin.set_resolved_url(stackurl) @@ -65,7 +63,7 @@ def search(): items.append({ 'label': x.img['alt'], 'path': url_for('episodelist', url=x.a['href'], id=vid, page=1), - 'thumbnail': httphead(x.img['src']), + 'thumbnail': x.img['src'], }) return items @@ -92,7 +90,10 @@ def changeList(url): url = surl filter = si[sel].text.encode('utf-8') - url = httphead(url) + if url[0:2] == '//': + url = 'http:' + url + elif url[0] == '/': + url = LIST_URL + url return mainlist(url, filter) @@ -109,21 +110,29 @@ def episodelist(url, id, page): id = r1('vid:\s*(\d+)', html) else: id = r1('(\d+).html', url) + html = get_html(url) + else: + url = httphead(url) + if url[-1] == '/': + html = get_html(url) + url = r1('window.location = "(.+?)"', html) + html = get_html(httphead(url)) + + desc = r1('story:"(.+?)"', html) plugin.set_content('TVShows') episode_api = 'http://pcweb.api.mgtv.com/movie/list' # ??? - episode_api = 'http://pcweb.api.mgtv.com/episode/list' - episode_api += '?video_id=%s&page=%d' + episode_api = 'http://pcweb.api.mgtv.com/episode/list?video_id={}&page={}&size=50' page = int(page) - html = get_html(episode_api % (id, page)) + html = get_html(episode_api.format(id, page)) jsdata = loads(html) data = jsdata['data'] - list = data.get('list', []) + data.get('short', []) total_page = data.get('total_page', 1) - for series in list: + lists = data.get('list', []) + for series in lists: title = series['t1'] + ' ' + series['t2'] if series['isnew'] == '1': title = title + u'(新)' @@ -132,34 +141,53 @@ def episodelist(url, id, page): vip = series.get('isvip', 0) pay = '(VIP)' if vip == '1' else '' - + d = series.get('time', '0:0') + duration = 0 + for t in d.split(':'): + duration = duration*60 + int(t) yield { 'label': title + pay, - 'path': url_for('playvideo', vid=series['video_id']), + #'path': url_for('playvideo', vid=series['video_id']), + 'path': url_for('playvideo', url=series['url']), 'is_playable': True, - 'thumbnail': httphead(series['img']), - 'info': {'title': title} + 'thumbnail': series['img'], + 'info': {'title': title, 'duration': duration, 'plot': desc} } if page > 1: yield { 'label': BANNER_FMT % u'上一页', - 'path': url_for('episodelist', url=url, id=0, page=page-1) + 'path': url_for('episodelist', url=url, id=id, page=page-1) } if page < total_page: yield { 'label': BANNER_FMT % u'下一页', - 'path': url_for('episodelist', url=url, id=0, page=page+1) + 'path': url_for('episodelist', url=url, id=id, page=page+1) } + lists = data.get('short', []) + if lists and (page == total_page): + for series in lists: + d = series.get('t2', '0:0') + duration = 0 + for t in d.split(':'): + duration = duration*60 + int(t) + yield { + 'label': series['t1'], + #'path': url_for('playvideo', vid=series['video_id']), + 'path': url_for('playvideo', url=series['url']), + 'is_playable': True, + 'thumbnail': series['img'], + 'info': {'title': title, 'duration': duration} + } + related = data.get('related') - if related: + if related and (page == total_page): title = related['t1'] + ' ' + related['t2'] - href = httphead(related['url']) yield { 'label': BANNER_FMT2 % title, - 'path': url_for('episodelist', url=href, id=0, page=1), - 'thumbnail': httphead(related['img']), + 'path': url_for('episodelist', url=related['url'], id=0, page=1), + 'thumbnail': related['img'], 'info': {'title': title} } @@ -200,7 +228,7 @@ def mainlist(url, filter): info = info.replace('\t', '') items.append({ 'label': title + exinfo + pay, - 'path': url_for('episodelist', url=href, id=0, page=1), + 'path': url_for('episodelist', url=t['href'], id=0, page=1), 'thumbnail': httphead(item.img['src']), 'info': {'title': title, 'plot': info} }) @@ -215,10 +243,12 @@ def mainlist(url, filter): for page in pages: title = page.a.get('title', '') href = page.a.get('href') - print "XXXXXXXXXXXXXXXXX", href if href == 'javascript:;' or title == '': continue - href = httphead(href) + if href[0:2] == '//': + href = 'http:' + href + elif href[0] == '/': + href = LIST_URL + href items.append({ 'label': BANNER_FMT % title, 'path': url_for('mainlist', url=href, filter=filter) diff --git a/plugin.video.mgtv/lib/mgtv.py b/plugin.video.mgtv/lib/mgtv.py index 1bbda47..8945012 100644 --- a/plugin.video.mgtv/lib/mgtv.py +++ b/plugin.video.mgtv/lib/mgtv.py @@ -23,6 +23,7 @@ import time class MGTV(): + url = 'https://www.mgtv.com' def generate_did_tk2(self): did = str(uuid.uuid4()) s = 'pno=1030|ver=0.3.0301|did={0}|clit={1}'.format(did, int(time.time())) @@ -90,9 +91,10 @@ def video_from_vid(self, vid, **kwargs): url = domain + url content = loads(get_html(url)) url = content['info'] - return [url + '|Referer="https://www.mgtv.com"'] + return [url + '|Referer=' + self.url] def video_from_url(self, url, **kwargs): + self.url = url vid = self.vid_from_url(url) m3u_url = self.video_from_vid(vid, **kwargs) return m3u_url diff --git a/plugin.video.mgtv/plugin.video.mgtv-1.1.7.zip b/plugin.video.mgtv/plugin.video.mgtv-1.1.7.zip deleted file mode 100644 index 6fc5a90315532ff068442077782f8078cca8b998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14182 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 diff --git a/plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip b/plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip new file mode 100644 index 0000000000000000000000000000000000000000..4de21b7bceeb95b34bc634deddd23c6987c17328 GIT binary patch literal 16641 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 njY?wt6U{##0e>_6;rJ&n1^U}90RW(XKX`s8(W国教育1台.png" group-title="中央台" ,中国教育1台 +http://223.110.241.139:6610/gitv/live1/G_CETV-1/ +#EXTINF:-1 tvg-name="中国教育2台" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/中>国教育2台.png" group-title="中央台" ,中国教育2台 +http://223.110.241.139:6610/gitv/live1/G_CETV-2/ +#EXTINF:-1 tvg-name="中国教育3台" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/中>国教育3台.png" group-title="中央台" ,中国教育3台 +http://223.110.241.139:6610/gitv/live1/G_CETV-3/ +#EXTINF:-1 tvg-name="中国教育4台" group-title="中央台" ,中国教育4台 +http://223.110.241.139:6610/gitv/live1/G_CETV-4/ #EXTINF:-1 tvg-name="安徽卫视" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/anhui.png" group-title="地方电视台" ,安徽卫视 http://ott.js.chinamobile.com/PLTV/3/224/3221225634/index.m3u8 #EXTINF:-1 tvg-name="安徽公共频道" group-title="地方电视台" ,安徽公共频道 @@ -269,8 +277,6 @@ http://ali.m.l.cztv.com/channels/lantian/channel09/720p.m3u8 http://ali.m.l.cztv.com/channels/lantian/channel11/720p.m3u8 #EXTINF:-1 group-title="地方电视台" ,浙江数码时代 http://ali.m.l.cztv.com/channels/lantian/channel12/720p.m3u8 -#EXTINF:-1 ,CETV-1 -http://ott.js.chinamobile.com/PLTV/3/224/3221225622/index.m3u8 #EXTINF:-1 tvg-name="凤凰香港" tvg-logo="http://epg.51zmt.top:8000/tb1/gt/fenghuangxianggang.png" group-title="地方电视台" ,凤凰香港 http://ott.js.chinamobile.com/PLTV/3/224/3221226975/index.m3u8 #EXTINF:-1 tvg-name="凤凰资讯" tvg-logo="http://epg.51zmt.top:8000/tb1/gt/fenghuangzixun.png" group-title="地方电视台" ,凤凰资讯 @@ -283,7 +289,7 @@ http://ott.js.chinamobile.com/PLTV/3/224/3221226029/index.m3u8 http://103.89.176.45:8278/Channel8/playlist.m3u8 #EXTINF:-1 ,CHANNEL U http://103.89.176.45:8278/ChannelU/playlist.m3u8 -#EXTINF:-1 tvg-name="CHC高清电影" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/CHC3.jpg" group-title="地方",CHC高清电影 +#EXTINF:-1 tvg-name="CHC高清电影" tvg-logo="http://epg.51zmt.top:8000/tb1/qt/CHC3.jpg" group-title="其他",CHC高清电影 http://ivi.bupt.edu.cn/hls/chchd.m3u8 #EXTINF:-1 ,TVB-8 http://tvbilive14-i.akamaihd.net/hls/live/496344/CTVB8/index.m3u8 @@ -295,8 +301,6 @@ http://dlhls.live.cnlive.com:1935/cdn/eyule/playlist.m3u8 http://dlhls.live.cnlive.com:1935/cdn/izongyi/playlist.m3u8 #EXTINF:-1 ,亞洲新聞 http://drsh196ivjwe8.cloudfront.net/hls/cnai/03.m3u8 -#EXTINF:-1 ,CETV-1 -http://112.50.243.7/PLTV/88888888/224/3221225869/1.m3u8 #EXTINF:-1 group-title="中央台" ,CCTV-国防军事 rtmp://ivi.bupt.edu.cn/livetv/gfjstv #EXTINF:-1 tvg-name="怀旧剧场" group-title="中央台" ,CCTV怀旧剧场 @@ -635,17 +639,11 @@ http://ts1.ijntv.cn/yshd/hd/live.m3u8 http://live.cjyun.org/video/s10008-hbys2018/index.m3u8 #EXTINF:-1 group-title="地方电视台" ,福州影视频道 http://live.zohi.tv/video/s10001-yspd-2/index.m3u8 -#EXTINF:-1 group-title="电影轮播" ,美国电影轮播 -http://js.hls.huya.com/huyalive/30765679-2478268764-10644083292078342144-2847699106-10057-A-0-1_1200.m3u8 -#EXTINF:-1 group-title="电影轮播" ,科幻电影 -http://aldirect.hls.huya.com/huyalive/28466698-2689656864-11551988268341919744-2847699194-10057-A-0-1_1200.m3u8 -#EXTINF:-1 group-title="电影轮播" ,赌博电影 -http://js.hls.huya.com/huyalive/29106097-2689446042-11551082794746642432-2789253870-10057-A-0-1_1200.m3u8 -#EXTINF:-1 group-title="电影轮播" ,赌神全集 +#EXTINF:-1 group-title="其他" ,赌神全集 http://flv3.quanmin.tv/live/3766_2031799856.flv -#EXTINF:-1 group-title="电影轮播" ,亚洲影院 +#EXTINF:-1 group-title="其他" ,亚洲影院 http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221228365/42613673.smil/index.m3u8?fmt=ts2hls -#EXTINF:-1 group-title="电影轮播" ,欧美影院 +#EXTINF:-1 group-title="其他" ,欧美影院 http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221228384/42613784.smil/index.m3u8?fmt=ts2hls #EXTINF:-1 group-title="爱奇艺轮播" ,经典港片 http://baiducdnct.inter.iqiyi.com/tslive/c15_lb_jingdianguangpian_1080p_t10/c15_lb_jingdianguangpian_1080p_t10.m3u8