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 c14f2aa..f4c19a0 100644 Binary files a/plugin.video.iqiyi/plugin.video.iqiyi-2.4.8.zip and b/plugin.video.iqiyi/plugin.video.iqiyi-2.4.9.zip differ 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 6fc5a90..0000000 Binary files a/plugin.video.mgtv/plugin.video.mgtv-1.1.7.zip and /dev/null differ 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 0000000..4de21b7 Binary files /dev/null and b/plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip differ diff --git a/script.iptvtool/resources/channel.m3u b/script.iptvtool/resources/channel.m3u index 4be9e04..7caa2a0 100644 --- a/script.iptvtool/resources/channel.m3u +++ b/script.iptvtool/resources/channel.m3u @@ -47,12 +47,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/ -#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/ #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(英文) @@ -71,6 +71,14 @@ http://39.135.15.70:6610/PLTV/88888888/224/3221225702/1/' http://httpdvb.slave.homed.hrtn.net/playurl?playtype=live&protocol=hls&accesstoken=R5D22D2B7U309E0093K7735BBEDIAC2DC601PBM3187915V10453Z6B7EDWE3620470C71&&playtoken=&programid=4200000094 #EXTINF:-1 tvg-name="怀旧剧场" group-title="中央台" ,CCTV怀旧剧场 http://httpdvb.slave.homed.hrtn.net/playurl?playtype=live&protocol=hls&accesstoken=R5D22D2B7U309E0093K7735BBEDIAC2DC601PBM3187915V10453Z6B7EDWE3620470C71&&playtoken=&programid=4200000089 +#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="安徽公共频道" 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