From f804ebcb6db99ed4e67efafe55fe431a45c314c9 Mon Sep 17 00:00:00 2001 From: yfang1644 Date: Sun, 12 Apr 2020 19:52:25 +0800 Subject: [PATCH] full series list in youku --- addons.xml | 6 +- addons.xml.md5 | 2 +- plugin.video.bilivideo/lib/bilibili.py | 1 - plugin.video.meiju/addon.xml | 4 +- plugin.video.meiju/default.py | 195 +++++++++++++----- ...1.0.0.zip => plugin.video.meiju-1.0.2.zip} | Bin 14106 -> 14885 bytes plugin.video.mgtv/default.py | 24 +-- plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip | Bin 16641 -> 14335 bytes plugin.video.youku/addon.xml | 2 +- plugin.video.youku/default.py | 36 +++- ...2.0.3.zip => plugin.video.youku-2.0.4.zip} | Bin 84702 -> 84809 bytes script.iptvtool/resources/channel.m3u | 2 - script.module.geturl/addon.xml | 2 +- script.module.geturl/lib/common.py | 2 +- ...0.0.zip => script.module.geturl-2.0.1.zip} | Bin 9990 -> 9995 bytes 15 files changed, 194 insertions(+), 82 deletions(-) rename plugin.video.meiju/{plugin.video.meiju-1.0.0.zip => plugin.video.meiju-1.0.2.zip} (75%) rename plugin.video.youku/{plugin.video.youku-2.0.3.zip => plugin.video.youku-2.0.4.zip} (93%) rename script.module.geturl/{script.module.geturl-2.0.0.zip => script.module.geturl-2.0.1.zip} (77%) diff --git a/addons.xml b/addons.xml index 8f3d2c8..8f33194 100644 --- a/addons.xml +++ b/addons.xml @@ -243,7 +243,7 @@ @@ -531,7 +531,7 @@ @@ -854,7 +854,7 @@ + version="2.0.1"> diff --git a/addons.xml.md5 b/addons.xml.md5 index 5013a83..b631118 100644 --- a/addons.xml.md5 +++ b/addons.xml.md5 @@ -1 +1 @@ -684fb49b798b75b91afb7c96f6511e3f addons.xml +8d6bccd735b3457fb3ea297939bb8c86 addons.xml diff --git a/plugin.video.bilivideo/lib/bilibili.py b/plugin.video.bilivideo/lib/bilibili.py index 848e51c..c46b243 100644 --- a/plugin.video.bilivideo/lib/bilibili.py +++ b/plugin.video.bilivideo/lib/bilibili.py @@ -362,7 +362,6 @@ def get_video_urls(self, cid, qn=0): chksum = hashlib.md5(compact_bytes(params_str + SECRETKEY, 'utf-8')).hexdigest() purl = '{}?{}&sign={}'.format(api_url, params_str, chksum) - print "XXXXXXXXXXXXXXXXX",purl html = get_html(purl) m = hashlib.md5() diff --git a/plugin.video.meiju/addon.xml b/plugin.video.meiju/addon.xml index 4e53f5b..fa5699d 100644 --- a/plugin.video.meiju/addon.xml +++ b/plugin.video.meiju/addon.xml @@ -1,7 +1,7 @@ @@ -13,7 +13,7 @@ video - meijumao video plugin + meiju video plugin 搜罗网络美剧 online video from yyetss(not yyets) and ttkmj, etc 网上美剧视频 diff --git a/plugin.video.meiju/default.py b/plugin.video.meiju/default.py index bd25253..28176a3 100644 --- a/plugin.video.meiju/default.py +++ b/plugin.video.meiju/default.py @@ -1,12 +1,16 @@ #!/usr/bin/python -# -*- coding: utf8 -*- +# -*- coding: utf-8 -*- -from xbmcswift2 import Plugin, ListItem, xbmc +from xbmcswift2 import Plugin, ListItem, xbmcgui from bs4 import BeautifulSoup +import re from common import get_html, r1 +from json import loads +import time YYETSS = 'http://www.yyetss.com/' TTKMJ = 'https://www.ttkmj.org/' +MEIJUXIA = 'http://www.meijuxia.vip' BANNER = '[COLOR FFDEB887]{}[/COLOR]' plugin = Plugin() @@ -16,6 +20,94 @@ def stay(): pass + + + +@plugin.route('/xiaplay//') +def xiaplay(url): + html = get_html(url) + m = r1('cms_player\s*=\s*({.+?\});', html) + urlinfo = loads(m) + u = urlinfo['url'] + print "XXXXXXXXXXXXXXXXXXX",u + t = int(time.time()) + #u = re.sub('sign=\d+', 'sign='+str(t), u) + playurl = urlinfo['jiexi'] + u + playurl = get_html(playurl) + print playurl.encode('utf-8') + + print "XXXXXXXXXXXXXXXXXX", playurl+'?t='+t + plugin.set_resolved_url(playurl + '?t=' + t) + + +@plugin.route('/xiafilter//') +def xiafilter(url): + html = get_html(url) + soup = BeautifulSoup(html, 'html.parser') + + +@plugin.route('/xiaepisode//') +def xiaepisode(url): + plugin.set_content('TVShows') + html = get_html(url) + soup = BeautifulSoup(html, 'html.parser') + tree = soup.findAll('div', {'class': 'tab-content'}) + items = [] + + lists = tree[0].findAll('li') + for item in lists: + items.append({ + 'label': item.text, + 'path': url_for('xiaplay', url=MEIJUXIA+item.a['href']), + 'is_playable': True, + 'info': {'title': item.text} + }) + return items + + +@plugin.route('/xiacatagory//') +def xiacatagory(url=None): + if url is None: + url = MEIJUXIA + '/list-select-id-2-type--area--year--star--state--order-addtime.html' + items = [] + + items.append({ + 'label': '[COLOR yellow] 分类过滤[/COLOR]]', + 'path': url_for('xiafilter', url=url) + }) + + plugin.set_content('TVShows') + html = get_html(url) + soup = BeautifulSoup(html, 'html.parser') + tree = soup.findAll('ul', {'class': 'list-unstyled'}) + + lists = tree[0].findAll('li') + for item in lists: + url = MEIJUXIA + item.a['href'] + title = item.img['alt'] + info = item.span.text + info = info.replace('\n', '') + info = info.replace('\t', '') + info = info.replace(' ', '') + items.append({ + 'label': title + '('+ info + ')', + 'path': url_for('xiaepisode', url=url), + 'thumbnail': item.img['data-original'], + }) + + pages = soup.findAll('a', {'class': 'page-link'}) + for page in pages: + items.append({ + 'label': page.text, + 'path': url_for('xiacatagory', url=MEIJUXIA + page['href']) + }) + return items + + +@plugin.route('/meijuxia/') +def meijuxia(): + return xiacatagory(None) + @plugin.route('/ttepisodes//') def ttepisodes(url): plugin.set_content('TVShows') @@ -161,37 +253,56 @@ def yyepisodes(url): return items -@plugin.route('/yycategory//') -def yycategory(url): - plugin.set_content('TVShows') +@plugin.route('/yyfilter//') +def yyfilter(url): + dialog = xbmcgui.Dialog() + html = get_html(url) soup = BeautifulSoup(html, 'html.parser') + + tree = soup.findAll('ul', {'class': 'navbar-nav'}) + titles = tree[0].findAll('li') + lst = [x.text for x in titles[2:-1]] + sel = dialog.select('分类', lst) + sel = max(0, sel) + href = titles[2+sel].a['href'] + hs = href.split('-') + cate = hs[1] + tree = soup.findAll('ul', {'class':'list-inline'}) - years = tree[0].findAll('li') + titles = tree[0].findAll('li') + lst = [x.text for x in titles[1:]] + sel = dialog.select('年份', lst) + sel = max(0, sel) + href = titles[1+sel].a['href'] + hs = href.split('-') + year = hs[2] + return yycategory(cate, year, 1) + + +@plugin.route('/yycategory////') +def yycategory(cate, year, page): + plugin.set_content('TVShows') items = [] - # 年份 - items.append({ - 'label': BANNER.format('年份'), - 'path': url_for('stay') - }) - for item in years[1:]: - title = item.text - try: - href = item.a['href'] - except: - href = url - if href[0] == '/': href = YYETSS + href - items.append({ - 'label': title, - 'path': url_for('yycategory', url=href) - }) - - # 剧集 + url = YYETSS + 'list-{}-{}-{}.html'.format(cate, year, page) + html = get_html(url) + soup = BeautifulSoup(html, 'html.parser') + + tree = soup.findAll('ul', {'class': 'navbar-nav'}) + titles = tree[0].findAll('li') + cname = '' + for x in titles[2:-1]: + if cate in x.a['href']: + cname = x.text.encode('utf-8') + break + items.append({ - 'label': BANNER.format('剧集'), - 'path': url_for('stay') + 'label': '分类 [COLOR yellow][{}-{}][/COLOR]'.format(cname, year), + 'path': url_for('yyfilter', url=url) }) + + tree = soup.findAll('div', {'class':'c-list-box'}) for item in tree: title = item.a['title'] @@ -207,37 +318,23 @@ def yycategory(url): 'thumbnail': img }) + tree = soup.findAll('ul', {'class':'pagination'}) + if not tree: + return items # 分页 items.append({ 'label': BANNER.format('分页'), 'path': url_for('stay') }) - tree = soup.findAll('ul', {'class':'pagination'}) pages = tree[0].findAll('li') for item in pages: title = item.text href = item.a['href'] + page = r1('-(\d+).html', href) if href[0] == '/': href = YYETSS + href items.append({ 'label': title, - 'path': url_for('yycategory', url=href) - }) - - return items - - -@plugin.route('/yyetss/') -def yyetss(): - html = get_html(YYETSS) - soup = BeautifulSoup(html, 'html.parser') - tree = soup.findAll('li') - items = [] - for item in tree[2:-2]: - url = item.a['href'] - if url[0] == '/': url = YYETSS + url - items.append({ - 'label': item.text, - 'path': url_for('yycategory', url=url) + 'path': url_for('yycategory', cate=cate, year=year, page=page) }) return items @@ -248,13 +345,17 @@ def yyetss(): def index(): yield { 'label': '人人影视', - 'path': url_for('yyetss') + 'path': url_for('yycategory', cate='lishi', year='all', page=1) } - yield { 'label': '天天看美剧', 'path': url_for('ttkmj') } + #yield { + # 'label': '美剧侠', + # 'path': url_for('meijuxia') + #} + if __name__ == '__main__': plugin.run() diff --git a/plugin.video.meiju/plugin.video.meiju-1.0.0.zip b/plugin.video.meiju/plugin.video.meiju-1.0.2.zip similarity index 75% rename from plugin.video.meiju/plugin.video.meiju-1.0.0.zip rename to plugin.video.meiju/plugin.video.meiju-1.0.2.zip index 22e99f5eb4a7538fc85ee4d2d524e0da6612c3ac..1929533e45d1b648bc91f175a449f073b0cd1434 100644 GIT binary patch delta 3135 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 V(|TE5Ivr+T4nmQtaH)Twe*wd^+@$~j delta 2336 zcmV+*3E%dmbee7rP)h>@3IG5A002A%f{_g=2UEm^UQ@(`kv&oaAzFj6k|it+d8K|( zulRw!*#Q6m@{`0YD1V0OfnHO@gkE)c3jhHG=mP)%1n2_*0F6^kZqzUo-p?s4uRx+U z9U_E~lkPYHtdS>iGH(47?B_D!07$Svbj7ACHoXE8YEJ_U+yciAGijly*(C4fz3=

M~Ic+0c0DLx1ld)Fa>!; zmUo8f1O%t>&3~e&bVjci#>57M83T9dy_E(^JXS>d0oK-#-0G;y)dC|WSB|@(#Eocq zP!OZ=Ox)C2U!}<~y0a$%JI0#|t}&&vfSS=6(tq(sZBf;?FYmLepBHa`eLlM_zgHYu>vYAHiVgo`?E|72bj4_X z&l-|OTCD+k|CG{B!aA%-Z8hB;1U-pI`EuF-`uEYrer1q7>U_kErb$+d-%v{f1QY-O z00;mpw+w$!33*ERQU(A3_ZpM*E+~IeT7zCU#DrdTcnbgl1n2_*00ig*007llTZlOwCLseWSX1cZX%b2MrN1#3zNshk%gy zrl_C^@z-Rs$-nSab=UNDZXtoS*=1*{&N+SReCJxb@kTQYc(cpgrau-V&ozHGQ2kUL z^}IfFhb~3gYZZQztwCW92_*pV=986 z0enqt?CpK>>BpKNh$)1);aq=jczg&1=g(cfeBr93Xn%0!(v_>|;>8ayoZsGlw{tXU zH`P)H8-}m+2eRlOX4MF}Z4EpQOVM5z7Xn~`a;{L}CW4=9ht2u>+bOQyzvx&3ptZQ?%L$2D|>dp4W|w-Amsv}`~b zPpXDuWdL^oyzP$qDs2X$1p;$QsnJ2A!$@PoR`LcCzkVjCL42ROee-CxEFWx>F10~} z2+an(!y#abXOHe2KmLCjS8G{npNJ6<$AFnwf|7dCB>5&KZQ=>$E58@@RiJ#<;{cHQZU>6nvaR zAM6T@p-vk*PG245{UkeWra%E=Zq}?CrNY#bg#`z#&yhMH08x zLR+$wzFT_oCcn~ zPx}_^CW?QS`9*otn5>_evYZQOEJ)Xqs;GJ~>lvduC=GSSp@JY6yl$rg=jd_f3+B0C zx>)(0irN0M(%CGaQ4IS4>VL7e18gBazWev|n?Ii2e)#nEm6gm$J%$Qy+^b8Y5Q z-S>?t;iY|cS>vZCh=2Zk`uNF9O%RH6%?TnMPfFePRx8zMDwuV|NSNo3n~P(sET&=( z&@Nr*){3H4I$?E&C0%ghUg>Db4|*D+Zy$fWxO?-ZAX1#KVaUV1y7IrScZf@n&D|8F zK_#Y3=5;u$+!>560v?$`cMcpIYS2Yc@HugNv;a?x3s{UE>Pw(8qjn#a1Rj3+ z=n?!(pZxy(!A-m%-XfTF#2HJZPJj6oeva>bcl_^d$oq=~tIMiHE?{9#h000F506YbPlb<*@15?C=lbksmkyjFv2RTm-d8K|( zulRw!*#Q6m@{?mZHUoy~fs>p$91bhDe^3c|O88O+008$Ilg2qV15#Rplm9s&28A^M G0002`D_Eoe diff --git a/plugin.video.mgtv/default.py b/plugin.video.mgtv/default.py index 785bf4a..b9dceca 100644 --- a/plugin.video.mgtv/default.py +++ b/plugin.video.mgtv/default.py @@ -90,10 +90,6 @@ def changeList(url): url = surl filter = si[sel].text.encode('utf-8') - if url[0:2] == '//': - url = 'http:' + url - elif url[0] == '/': - url = LIST_URL + url return mainlist(url, filter) @@ -165,7 +161,7 @@ def episodelist(url, id, page): 'path': url_for('episodelist', url=url, id=id, page=page+1) } - lists = data.get('short', []) + lists = data.get('short') if lists and (page == total_page): for series in lists: d = series.get('t2', '0:0') @@ -193,6 +189,10 @@ def episodelist(url, id, page): @plugin.route('/mainlist///') def mainlist(url, filter): + if url[:2] == '//': + utl = 'http:' + url + elif url[0] == '/': + url = LIST_URL + url plugin.set_content('TVShows') filtitle = '' if filter == '0' else filter items = [{ @@ -203,9 +203,9 @@ def mainlist(url, filter): html = get_html(url) soup = BeautifulSoup(html, 'html.parser') - tree = soup.findAll('div', {'class': 'm-result-list'}) + tree = soup.find('div', {'class': 'm-result-list'}) - tree = tree[0].findAll('li', {'class': 'm-result-list-item'}) + tree = tree.findAll('li', {'class': 'm-result-list-item'}) for item in tree: t = item.find('a', {'class': 'u-title'}) title = t.text @@ -234,9 +234,9 @@ def mainlist(url, filter): }) # multiple pages - setpage = soup.findAll('div', {'class': 'w-pages'}) + setpage = soup.find('div', {'class': 'w-pages'}) try: - pages = setpage[0].findAll('li') + pages = setpage.findAll('li') except: return items @@ -245,10 +245,6 @@ def mainlist(url, filter): href = page.a.get('href') if href == 'javascript:;' or title == '': continue - 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) @@ -267,7 +263,7 @@ def root(): jsdata = loads(get_html(mainAPI)) for item in jsdata['data'][1:]: - url = LIST_URL + '/-------------.html?channelId=' + item['pageType'] + url = '/-------------.html?channelId=' + item['pageType'] yield { 'label': item['title'], 'path': url_for('mainlist', diff --git a/plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip b/plugin.video.mgtv/plugin.video.mgtv-1.1.8.zip index 4de21b7bceeb95b34bc634deddd23c6987c17328..1b306abe6f65f91a30720a19f10f6fbcbba093a3 100644 GIT binary patch delta 232 zcmZo{V*H=a8{o~%!o>grHgnr2@@lZNr1!)zr}s>>kz#%@wQXXg4*L?0?l@_q?uk7S z%s1J)C!g1lntat(XtFS)2J5KzuzGHNclNsoQ$$M?glt6AMt>9*0WO>2N zzyKx!ycwC~m?16&x@)qitrauSVVi?&?=S()lwIr)J-$XG2tE(R`!Ye0>{CLn(S E04!HX9smFU delta 2486 zcmZXWdpHw}7stmo%RMc(Y(x>#WaUn7?@N+l?#fJ*3WsD}b7=Ejz+=@tUVIr~^ zGG)2sQn_t~5?k#hUU=hy#F2j;WZBKQiWmBtQf-4+H>y6~RsC zOqhc_TT-PBbdbsm+NmBx@U3K<4UDHsn#=rBj#lPL+%8Z*t?HH zLcQrwom{AhY4Tq5-fkT<$X-KEP9w)o29{&8{UJ!Ez#93796k+XOVZw4JavR=lZ6x=@RJPr{a)2R^+8WEu5Fd31sfAVFa5Q?RkS1oEUZ&=iyWK9z_!m$rEW`S5j{W-A{~6au5MRSgOJ$ z2XW#K5|9M90No4#a}t}aY&9hX5}dWj-YGd569bD3rRe%R=-c1e^nDPT~q|wmSNFj(BkpPZhtN zv}<$GE_oBW3EYI81P@#~;0iRwLsq{+#EEc{nuXZK0ODm$6>g$W8MV!BHUvBPcd{W_jF!`pig zxt^?gKRByxzSw>5sW+hkL{LN$-Ak9Cn0p$9shtPEP&k6Lhzj!AS$KonUv|^2dT)GT zbt%R8(CH{*PVAlNmV#RL>cE~imEqS+BN&N8C%m?lhIuwIM>eWGs`??H&78Ff$wzgc z1ij!hq-BWLzz9y^+jEeZHvYxH-Y*1frd8mt=kuG;ZT_KNf%)5Fkb2d05ccNSlURPkB zzmj^p&BKBNBpqETD=E+$MLqjNKdYd2pw#Wb0aXclm;>P)exB)db@Ap)q{5gbt0|dX zqUA@xxim_o&d)Y}SU{faVSAT5*cIS3Gne#YuAFoIP@Pe5{0?+aYGd{BJGD5n3E`-T zQ`n@(<>TZrMZ8t!MB3E$;ZK!tolkk%V<}o9Q{(i7jPdlQS*@#44DsM|b9h!OMpCYB zM+#!aSq+juSvOKvNZFR^)Tq4fo3i^3^Aft`dUR!i05KA%iS7y09M1S6-*Q4_D&!HH zc}lm-@RWWGc3=jBJhz9JPs@st?2J_GCTL6y_mjH-1cy8>v~5&!K%?eMecPl|>+S2S zI!2h*<)-p?n4Un!jKf*Ni|#%dmNEKZy)itpVc@kk72zT#E?^u0ijk~POx54CW@BQhA@#`31aO^OXe_pn>M0$oj%|nLCu$X z@2rq5b5jq2(VOpjs$>I=RjDr)BQGUm*vKe$6AW&B(b^BS^GdGK0JX>M%3Xhjhb_-; zq5KuP@4oGj^%wl-q$frJNq;y;DMLrtzN|L;bVW;mmePq|F7uuy32vP6#;kU^bHC5X z7Po&{y>>?bd$-i!bC*9`f{^d-KBqqFLJw(ntr&R8mm_41eRro0JWuAfnUGB`O)7Jm*>t_RB_Tb#l{HDv>ZN~HlS#KTw8xydacKQw9#ybZPU}v z%JmThM^KS{!n>w=@w3C<=e9mD7PF#5QJq|tLE_~~7yb)jM-dXqvSVjvI%0=j9o^%3 z%MWf5@Zs;zl-<-|lR~VmkX#`^8@5^!&kq+AmG1rA?CBj*cTc)6vhJ>9dwJUt;@fYF z3$vG$ysr({l&{w@D%4`#v3!7` z`#mVV>r!-Nrn*+uJYjZlAq@VQ6Z)X!SJj6b_+ac=0eMyV9@C`EU)Lrs zbhK~*{&MfT3psK0B0rkV`5kMr6)G*H0jY(sj*O!b6&>h&5>hIv(F}ts{%)# zFmBhYhTkGujL$DgzOL|yzc=_=<@FS0GW~$x^=Hp@7MJNhFm2rZWlAd8_FX||lBl2T z_5~C9x#&EOdUUKpoG;mLlILddTA|Pc&E1-dU0sV`-`L`P-Qe#2CTb$vpQxV{_XWos z;Ky+>4!_>s|Gt_0{$^AUhEry_Mo4Tfu-~)vsCvj%KX{k)8t_=D!3Ch^+>#I_G3U0w zT>kxzQ7eGQ$l~Np$I)dO=T09fhViK6q+z4=qK3PCR=bLK`{9aWgE^J2X_xoiT#6r? z-QeSftj0ZXj=J9=v<)3QU_x~|!$x;n9QXr_Xc~u&M1E3{lK4Nc^aG4&7Z01!5)73Y z&ky&A!v765NMYAt>)`!8S4pPv8# diff --git a/plugin.video.youku/addon.xml b/plugin.video.youku/addon.xml index 603b5cc..ee7e30f 100644 --- a/plugin.video.youku/addon.xml +++ b/plugin.video.youku/addon.xml @@ -1,6 +1,6 @@ diff --git a/plugin.video.youku/default.py b/plugin.video.youku/default.py index 4899214..098757b 100644 --- a/plugin.video.youku/default.py +++ b/plugin.video.youku/default.py @@ -189,21 +189,39 @@ def episodelist(params): except: series = p['data']['data']['nodes'][0]['nodes'][1]['nodes'] content = p['data']['data']['nodes'][0]['nodes'][0]['nodes'][0]['data']['desc'] - items = [] - for film in series: - vid = film['data']['action']['value'] - title = film['data']['title'].encode('utf-8') - li = ListItem(title, thumbnailImage=film['data']['img']) + showid = p['showId'] + IDS = urlencode(BASEIDS) + api = HOST + '/layout/smarttv/shows/{}/series?{}'.format(showid, IDS) + data = get_html(api) + series = loads(data) + + for item in series['results']: + title = item['title'].encode('utf-8') + li = ListItem(title, thumbnailImage=item['img']) li.setInfo(type='video', infoLabels={'title': title, 'plot': content}) req = { 'mode': 'playvideo', - 'vid': vid, + 'vid': item['videoid'], 'name': title, - 'thumbnail': film['data']['img'] + 'thumbnail': item['img'] } u = sys.argv[0] + '?' + urlencode(req) addDirectoryItem(int(sys.argv[1]), u, li, False) + #for film in series: + # vid = film['data']['action']['value'] + # title = film['data']['title'].encode('utf-8') + # li = ListItem(title, thumbnailImage=film['data']['img']) + # li.setInfo(type='video', infoLabels={'title': title, 'plot': content}) + # req = { + # 'mode': 'playvideo', + # 'vid': vid, + # 'name': title, + # 'thumbnail': film['data']['img'] + # } + # u = sys.argv[0] + '?' + urlencode(req) + # addDirectoryItem(int(sys.argv[1]), u, li, False) + setContent(int(sys.argv[1]), 'tvshows') endOfDirectory(int(sys.argv[1])) @@ -226,7 +244,7 @@ def mainlist(params): api = 'https://list.youku.com/category/page?' req = params.copy() req['p'] = page - req.pop('title') + #req.pop('title') html = get_html(api + urlencode(req)) data = loads(html) @@ -264,7 +282,7 @@ def root(): li = ListItem(title) req = { 'mode': 'mainlist', - 'title': title, + #'title': title, 'type': item[title][0], 'c': item[title][1], } diff --git a/plugin.video.youku/plugin.video.youku-2.0.3.zip b/plugin.video.youku/plugin.video.youku-2.0.4.zip similarity index 93% rename from plugin.video.youku/plugin.video.youku-2.0.3.zip rename to plugin.video.youku/plugin.video.youku-2.0.4.zip index 58d1226a5d55a4d6501ed5a1a1a64f5f62852c74..828391264044689825fa52b43d70d208d9ea6eb3 100644 GIT binary patch delta 3785 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 + version="2.0.1"> diff --git a/script.module.geturl/lib/common.py b/script.module.geturl/lib/common.py index 88e1be5..872641a 100644 --- a/script.module.geturl/lib/common.py +++ b/script.module.geturl/lib/common.py @@ -92,7 +92,7 @@ def get_html(url, # Decode the response body if decoded: - match = re.compile('-OUf@MdP=VgLcDc|8+(wb_*!CdUEsM0+XbA9H&q#^~!m`9BFH5?5Nm&A`a= zf|-EhPsPc1hGBAU*0`bOoe^~1IzUGO3 ziefx%aE(3RRyj;9(^Fr0Ue4J*t#^0Ut@~wJpS3bODwc6- z9uyMXvXHv;WeUTW6GR(*C;o zRok2W>vyYpbA5gCumZcP#j<9e&J zA*&(c?T~+|G43hTMcE|o?XT0~6-^UYcGAF79 zr(1uTzF;zU%|~uTf_qaN7I5alM3T$Bb_Ya1H@RKf{tnS$)YRCPsDM-h0L<}iKL7v# delta 872 zcmeD7YxCm`@MdP=VgP~9wP6!^wb^Ih35WyYiS|;=vw-MN2EV85mh! zFf%ZK36M?^pgs-;pt^wS1&j43vobKugl-M(CF{xg8QHTjIH#N>@^8q7d%Z@$BpC@r`d=*6_jN>M?K3=APm z3=DE0FHX);b#-=evG9 zIQMf}#I#8dRdROM-N@^%%4W|$(Y40l{Or<(`EjfrHLF%k{ivs6QhM;i(+sIc?N=w$a^`{NTIY_h%@8!t*?om{SJ!wgKNFxknMROJ{aPX4IsqJR