From 62567f6a4fa1b73d1de5c435f8611811918564d4 Mon Sep 17 00:00:00 2001 From: yfang1644 Date: Sat, 16 Dec 2017 15:57:48 +0800 Subject: [PATCH] add acfun to rrsp, youku2 update --- addons.xml | 6 +- addons.xml.md5 | 2 +- .../plugin.audio.qingting-1.0.1.zip | Bin 40101 -> 40101 bytes plugin.video.rrsp/addon.xml | 2 +- plugin.video.rrsp/changelog.txt | 4 + plugin.video.rrsp/dbase.py | 25 + plugin.video.rrsp/default.py | 44 +- plugin.video.rrsp/local.db | Bin 0 -> 200704 bytes ...-1.0.3.zip => plugin.video.rrsp-1.0.4.zip} | Bin 162626 -> 164496 bytes plugin.video.rrsp/resources/lib/acfun.py | 117 ++++ plugin.video.rrsp/resources/lib/rrmj.py | 4 +- plugin.video.rrsp/scratch.py | 88 +++ plugin.video.youku2/addon.xml | 3 +- plugin.video.youku2/default.py | 466 ++++++--------- ....0.1.zip => plugin.video.youku2-1.0.2.zip} | Bin 82649 -> 81620 bytes plugin.video.youku2/resources/settings.xml | 3 +- plugin.video.youkuvideo/LICENSE | 339 ----------- plugin.video.youkuvideo/README.md | 2 - plugin.video.youkuvideo/addon.py | 551 ------------------ plugin.video.youkuvideo/addon.xml | 18 - .../collections_backport.py | 259 -------- plugin.video.youkuvideo/icon.png | Bin 29982 -> 0 bytes .../plugin.video.youkuvideo-1.0.0.zip | Bin 50120 -> 0 bytes .../language/Chinese (Simple)/strings.xml | 12 - .../resources/language/English/strings.xml | 11 - .../icon and thumbnail licensing.txt | 5 - 26 files changed, 461 insertions(+), 1500 deletions(-) create mode 100644 plugin.video.rrsp/dbase.py create mode 100644 plugin.video.rrsp/local.db rename plugin.video.rrsp/{plugin.video.rrsp-1.0.3.zip => plugin.video.rrsp-1.0.4.zip} (93%) create mode 100644 plugin.video.rrsp/resources/lib/acfun.py create mode 100644 plugin.video.rrsp/scratch.py rename plugin.video.youku2/{plugin.video.youku2-1.0.1.zip => plugin.video.youku2-1.0.2.zip} (92%) delete mode 100644 plugin.video.youkuvideo/LICENSE delete mode 100644 plugin.video.youkuvideo/README.md delete mode 100644 plugin.video.youkuvideo/addon.py delete mode 100644 plugin.video.youkuvideo/addon.xml delete mode 100644 plugin.video.youkuvideo/collections_backport.py delete mode 100644 plugin.video.youkuvideo/icon.png delete mode 100644 plugin.video.youkuvideo/plugin.video.youkuvideo-1.0.0.zip delete mode 100644 plugin.video.youkuvideo/resources/language/Chinese (Simple)/strings.xml delete mode 100644 plugin.video.youkuvideo/resources/language/English/strings.xml delete mode 100644 script.common.plugin.cache/icon and thumbnail licensing.txt diff --git a/addons.xml b/addons.xml index 45c66df..c860357 100644 --- a/addons.xml +++ b/addons.xml @@ -25,10 +25,10 @@ - + @@ -526,7 +526,7 @@ diff --git a/addons.xml.md5 b/addons.xml.md5 index cebc05b..d22e202 100644 --- a/addons.xml.md5 +++ b/addons.xml.md5 @@ -1 +1 @@ -5bb1b3da70a69cd175cb83de1dafde41 addons.xml +66eb21924d62f198cf8e0aceceedb88c addons.xml diff --git a/plugin.audio.qingting/plugin.audio.qingting-1.0.1.zip b/plugin.audio.qingting/plugin.audio.qingting-1.0.1.zip index bfd7225729f45ba65d6580435bf8b69548c62875..6ff7830d63e9ef63c52af3e124210a8e76460094 100644 GIT binary patch delta 80 zcmZ3wlWFNrCY}IqW)?065HMadkw=%!@R@d$;j@YMVa$^sX>Xii>;|GIpK~h$(Tknk egPDxiOm>}R%?wmHdBbe6$@+8HHqW2M#smN;ZyaO* delta 80 zcmZ3wlWFNrCY}IqW)?065O7;Hkw=$p@+0l2u16E?! diff --git a/plugin.video.rrsp/changelog.txt b/plugin.video.rrsp/changelog.txt index 9b902f5..0312b95 100644 --- a/plugin.video.rrsp/changelog.txt +++ b/plugin.video.rrsp/changelog.txt @@ -1,3 +1,7 @@ +v1.0.4 (2017.12.16) +- sort episodes +- add acfun.py. some videos come from ACFUN + v1.0.3 (2017.12.4) - add local search, search videos diff --git a/plugin.video.rrsp/dbase.py b/plugin.video.rrsp/dbase.py new file mode 100644 index 0000000..a4e1880 --- /dev/null +++ b/plugin.video.rrsp/dbase.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sqlite3 +import json +import urllib +conn = sqlite3.connect('test.db') + +c = conn.cursor() +c.execute('''CREATE TABLE MJINDEX + (ID INT PRIMARY KEY NOT NULL, + NAME TEXT NOT NULL);''') + +f = open('jss', 'r') +x = f.read() + +js = json.loads(x) +for x in js: + name = x.encode('utf-8') + cmd = "INSERT INTO MJINDEX (ID, NAME) VALUES ({0}, \"{1}\")".format(js[x], name) + print cmd + c.execute(cmd) + +conn.commit() +conn.close() diff --git a/plugin.video.rrsp/default.py b/plugin.video.rrsp/default.py index fbfa53c..958ee45 100644 --- a/plugin.video.rrsp/default.py +++ b/plugin.video.rrsp/default.py @@ -10,7 +10,10 @@ sys.path.append(os.path.join(ADDON_PATH, 'resources', 'lib')) from xbmcswift2 import Plugin, ListItem, xbmc, xbmcgui + from rrmj import RenRenMeiJu +from acfun import video_from_url + from urlparse import parse_qsl from urllib import urlencode from json import loads, dumps @@ -180,12 +183,8 @@ def movieCatList(catid): moviecat = Meiju.movie_catname()['data']['categoryList'] dialog = xbmcgui.Dialog() catlist = [x['name'] for x in moviecat] - cat_id = [x['id'] for x in moviecat] sel = dialog.select('分类(可能不全)', ['全部'] + catlist) - if sel == 0: - catid = '0' - elif sel > 0: - catid = cat_id[sel-1] + catid = moviecat[sel-1]['id'] if sel > 0 else '0' return movies(1, catid) @@ -232,16 +231,20 @@ def videodetail(videoId, title): video = Meiju.video_detail(videoId) play_url = video['data']['playLink'] if play_url: - stackurl = play_url.split('|') - play_url = 'stack://' + ' , '.join(stackurl) - li = ListItem(title, path=play_url) - li.set_info('video', {'title': title}) - plugin.set_resolved_url(li) + play_url = play_url.split('|') else: video = Meiju.video_detail2(videoId) url = video['data']['videoDetailView']['playLink'] - xbmcgui.Dialog().ok('视频地址' + url.encode('utf-8'), - '请使用其他插件搜索播放') + if 'acfun' in url: + play_url = video_from_url(url) + else: + xbmcgui.Dialog().ok('视频地址' + url.encode('utf-8'), + '请使用其他插件搜索播放') + return + + stackurl = 'stack://' + ' , '.join(play_url) + plugin.set_resolved_url(stackurl) + @plugin.route('/leafCategory//') @@ -364,7 +367,7 @@ def search(title, page): items = [] if searchlist: items.append({ - 'label': colorize(u'剧集', 'yellow'), + 'label': colorize(u'剧集搜索-'+ title.decode('utf-8'), 'yellow'), 'path': url_for('stay') }) for item in searchlist: @@ -409,6 +412,7 @@ def search(title, page): items += previous_page('search', page, total_page, title=title) for x in searchlist['results']: t = x.get('videoDuration', 0) + if int(t) < 0: t = 0 items.append({ 'label': x['title'], 'path': url_for('videodetail', @@ -477,8 +481,10 @@ def detail(seasonId): 'season': 0}, }) - plugin.finish(items, sort_methods=['episode']) - return items + unsorted = [(dict_['info']['episode'], dict_) for dict_ in items] + unsorted.sort() + sorted = [dict_ for (key, dict_) in unsorted] + return sorted @plugin.route('/play///', name='play_season') @@ -488,11 +494,11 @@ def play(seasonId='', index='', Esid=''): episode_sid = Esid play_url, _ = Meiju.get_by_sid(episode_sid, plugin.get_setting('quality')) if play_url is not None: - stackurl = play_url.split('|') - play_url = 'stack://' + ' , '.join(stackurl) + play_url = play_url.split('|') + stackurl = 'stack://' + ' , '.join(play_url) add_history(seasonId, index, Esid, title) li = ListItem(title+index, - path=play_url, + path=stackurl, thumbnail=season_data.get('cover')) li.set_info('video', {'title': title+index, 'plot': season_data.get('brief','')}) @@ -556,7 +562,7 @@ def update(page): # main entrance @plugin.route('/') def index(): - set_auto_play() + #set_auto_play() yield { 'label': u'分类', 'path': url_for('category'), diff --git a/plugin.video.rrsp/local.db b/plugin.video.rrsp/local.db new file mode 100644 index 0000000000000000000000000000000000000000..1b37b9acb6a9d937f48ace9b623c880aab26cc84 GIT binary patch literal 200704 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Ȍa$PN)>_o%G%biKN0JbY+G>HI!)9 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%0A9eBYtKnyPhYH%Jh2hRp} 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 literal 0 HcmV?d00001 diff --git a/plugin.video.rrsp/plugin.video.rrsp-1.0.3.zip b/plugin.video.rrsp/plugin.video.rrsp-1.0.4.zip similarity index 93% rename from plugin.video.rrsp/plugin.video.rrsp-1.0.3.zip rename to plugin.video.rrsp/plugin.video.rrsp-1.0.4.zip index 542a8070cdc014bcca5de054f75836029c0bf23c..ced6e232185fa7e000670057a483a0ba12853168 100644 GIT binary patch delta 8119 zcmZvhbx<5#x9*1-B)A24hu}^K?ry=|9fAaxfdIh}V? zGpc6P$@ z0`%cUtioIT*t#U_;W?U>HGM@Tn2^EpjU^qOZcTVTE4bfce36OtIg<|MOoogUB-cV* zD%sD~EBVneH#e95?SkO8b`&T()pvAo2hj;XvGBfLqrBtc{*W&kla>lAneJ~3;|F+& zB%6#F`a=c^bwh4UB062>GfR__)8b@jcwq>qfbz$9m@T~SF21CwLs_Bjob3cb08MCG z@rr~^i`WdGg&AVzn-%+C!#XQL2=n)Hz$x3!ruAgZ-UnWYRl);ktfm?|iSu!=l;kbHW8ry~HCqDaCMMy_HGQxoA$|EBRf$9{T+b zs`Dcly}pHDPBB{?tv^7mpRp$U+d>9CEtwYETjHJoBTs@IMse;$8N`SCMGvDFI3H$a^*;pfwYHD%R9Sw9IP^rvq%)NDphFp zT%X@+W;|aCKb`w<(rD%+!g%kd^6ZpfYtGTLkNNt8~J|p$^ zx-&)MzBuAOF|ubc?At>^wnS@~!%fa|+HNnjD0&b(VO^O#rr`7(@$)~vz@(4}0maE* zkKzA5VgHkRwmf4~0)&7(2zdSfR*^~rQg6(ZgSxw9= z-5gn*yfoBb6A$>F^Kat$-_n^{%Pz}27=F82*)9(8$zldae2#^3{Rx*{nKrcOnXQ9J zptx*_aB6EnVww5*$tqk|X@-K{B2{4L))AbKdsnSdf5_Wk8W~YK4Rm*^4xW}eaT^SX zp5U}|NUzP$5K6nk$0)f3Ow4IaStt_Ew3;I$5j1#OMR!NE%C;^yepO#f`JGa#MFjxK`RnzQJn-D~=797SSb9hDMdV`7NVm5r*f}d_Vr#@8i95fv+-_BhF`p?5KXEQE%v-aG)TP2jS4PS zR%!VHbCHdZgJRc&7$B(K3ybagdD0D!=eRb7*$8A*O?O#up4Hgggr?IezBA)ZI9sI_ zPQ{>g{pTHuVKqa&GXUm;u3pQcK51|TC}|Vt`*QxF^R75Pz9Nl`ANXO7n!>4A zUxbod8@VN;K4lE?pl;j*+@v0Ud+@C``NF^rIf*I+cSN;K(ODAPsNd+JB|y3Wf{^23 zKQuSx-g0l3zDS5#!7MuY8@dN&jvSiG^FrGPBDNSVI5oIOCf;8L)D)@Ev1l|;mu}5H z$NBj2aMPnEk!uj#RA)S}f$cB$&RsmRO_}vX@loIb+4ZTFIJ>fUiiWLsot%Xhho~oa z6g_q19x}CR1Ue+n8*Vh~lho{L9%Lud-;&7{(9-!907-ADA`--EFmrTdT$m(mdj^v$ zohUSGhF<7sth0ZdF1dTuXG&JbM!*)oHBm#_P5mgE6JIeIpv&=-66`NGToOi%hVW5z z#=oqMC}@<9*i(H+`BP5(f{K>OP*odzaw`VR1JM-ThAJ|(nxKVCZS{O`Ug8h*$z6kf zbXuYM5n35R8gio&HmCz_;D&qTh!w0n=PFJ;UotMIt7$BnL0)4WYj17&MmmNRiB%4) zcp`Ll%q8PoJb~r;0IY497ibGHA7V&jAr|~m^X>6XWzveUq^9KH!=QIX5b=whJQtkj5*5Ox6K^!X&Eadep$*nQR zwncMqPL7Nynr#x7&;mwl-*2H@AK4e3l6n`>HiiP@AncjVU%~CpvP-oOkVnZ7X}~GY zlqy?qUab1WN%0p!qxQPAHi!8?U#vrA7f0mTz6Znl;Jj^1JkeQj&i28vSwMaQ3l|3F z9H2KNCL7SltnL5FQ#9Hh9-Kh9r_=s2e*Zi*-*e#lPGy;?C zMfTlW5IH?=svI09_?-upZ?@l4(eFw@yhpjB^6eLjv*mKjyRu6pO^;QV0J3RwTPADw z^0$W`+@fYb()~9MgvPLwYfz%^&?$a6r775JjPBm!^v+x|`bm2i8i}T{Kk;wv&*Ms~ z({`dFk=lr66v0KbfdH7WV`<^G+#YsFz_e?U*7(oW@^? zjgKPy+`2G+{}}-guD9Cmr(0&gGLlkuen4k$w0yz1B9$$L0N0DlQbX1vIaJI74mAgW zd!{go$Irf_t_5Iru(Ga3qjJMb)N{4g5wUiH%CBa2C_l+tay_L6HLWAb%_rvgP#O#^ z?Z)%%PW65C07@%&>ufuI5QD$Hs#WcLVwJg5QvJhAM2L}4kv7>TuX1y5rgMMKUTNrC z=7?mf5#Uz&!R`t4x756SZF1iLRy||o0fb*A{a&leJPrUr_fH?|j-2^#0NcR$jGb{VPdTSszLDVTg% z1Gq5JO#JSv`f?xTM8GL(So!889}sfy#tgHA7z3w4&76ULKgO(KaFD*p44=97FE?X> zmg!|x%Dbg*;>|&5`wmTkDC6V2=Zy5!i6DEBkd}Op6EoyPK|TW?Jx%kwx(4-4=J&?l zzf)py^kQ<5IT#D#oZwKxMW*OXR@NXMiazN_I6jiSsB8w&EOw_r%yx!NgWrJ z3wk}@3MAvy&^+j2rv+!Pxs_HHs#b`RzEEgxtLWMd6?mjHc=5wD;k#$%J7n~_dE?zg zT*uO)+7C3N`y?{h{^%nK=SN)aJv_rk|XOpWL zsB5M6?6!s%&Wl?_ZjrP9)mG$$V$?Z&4D?2!k%X^ow?Dm1+tK-3#s?mSwp+m#?EtUg z1r2u}!8M2Xf%b+-;MR%+a%LT-ZPf|%bOF6CvCS0UHY$pgCTCCp% zYuz!w=`w1c_FOyq2{ro%B}v%b?hIHS9t(Qr==zX#e0V${TD_U0Yf(PlZ*LS@_Bn?h zx7@8gcRYzUk_wUfKZ(>!HTu^-T%|W(^*^<>oE*$`tdX|)YsEbDjctB-DbQ_sxp-(> z=DqS&79x4N1}EDJ`kg*(j$a<-9e#>hyY-0rotH(Zej@zCtik_jZBL7Af9{H|hjo2I z+wo;!%};T0Z9WSv>(S+8EbHJHomBW~oCu!t`k2}pe9?ET)u_{^vKO}os0{%I8V0Qp z{vi+6%B^HFdW$rc9T}^pW?_GBX}?!iZ(JQg#%0j40tPxTb3KH?Zw{a0!%<|j2J{;o z^w^2NY+T*Vl6`m7=etq1oA~8sCjAo?cQ(wEIOr@_)ZtVLUq5OBV@|2EqN|QhOS#>X zKPPG97dfmq?HmwoUBaTD8!SUT>Ga?{v3Gae8MiXenrI3M*RYLLbTaT~Zs>z;!?=7$rJqhr zlKabqAasK&8i;e!xx`V+z-$BWkKz3?O0sUS>n~eJ6Yj!X=6=4i=!#dCr}|{AUaFF( z1cp#-#7m0fbQ=y-r;L^GctbzexL)a8ZJTYgSbXE0Q?mq zs+7TqqJ5OXbV%-u$(J~0+gbyAYfx+$@Jh_B+}FhBZ3LvvMNj99@2Fx{PL?J-R%_38 z8w!IT9MO9?@Fy%D%bBQ9R$>`y3>LpZ-XenWyyTyRy)A%cH>LJ)1L#qDG+@WdNdc!uIin(2(XZ=xRO20`N>)negbMvBb|n&%U>z~% zsPS%y2vdcv(@1=0XA@6|&-5x7thI+ql~nCmB$4yy7oo~dpODp+8lmwhP&;yC3d)UeU%v2Kc=E`Rt1m;?P{R?7T(#0+RV5hR_tCm8rdWB@LYpz? z_%v~*3SS{CI~zQUeOmK83}lSfG+nKNsu<3?rZ`#E0wqae(oiE!qGDZ+`8Vq> z5>^hg`oKAQl7O>f85%v zvF%eO08e@7FMQ1p)}Dux*Gj4bUVx(;r=U;Gr9n;7u@U5E%~^FJ;H)~=$L)nq&)RjJ zlU(Hx8#ZKkSHz0b*eH;<%uPgnrb#WeLk%__?7e7)LN%#(tDq2ER|t#cFktbkK$bQx zcTlX=8@dhDHB@KIel@=jmP|5sw($f%XQrSfyrJ$t=SKC*6$Z*7;>WOB0{&A`<7yjU z;tb`ROln7RNca7rV346TuM{hxi*C_3>oynmFtO&Z`=V&@G6*^#RSNzIRR?X`t^2Zo zJ(Tskqx~zo7NcikUma%wfnnK8h#~SR{R&4X;-7~2Z}bY7c?Cn7gg7R9*eGeen=+xT zOp#Os`wFu(0+E`qr~t|`QSOd6s5o#G7HP%}{&d~wMN1qU^m5|98pt@_yID!S;ohmIBSkiRJ0mdO#Q3k<6txX^<6L@uaEH}`!((v#*Cnc=5v2G_O#yiq4mc4_Hdp+o5RIq z6w9*3{Q9!?WzFw=x9vj~$|r%fr=8=y%p3O(FM(#iPbV=QL~S?5pI?2y_cXfHykgbM zD_Dmn;LBDuC^^k2u!t5dYbHKv!Hugoi2eoX)8si0B}`IYhLFcHoyCz#j+T@uG>tY` z#wA!)A-sngg!9$e_Z_Y&s_cwvupo`|Pl)L|J(0KX^cmF0!SYGr8apLcK7pSHhvV-I zdhc0Gp9-kvy0~zwN3k2pnFnSIx74>c7@-;|U`jtRiBHo|4+A}ThTjEy#u~$cOPiw; z71i~TNoe`N@TDgg_MX1#E3)cA#V%vKQ<2Lo?H*!AE&f`43ZnI98)^ChWmCc??DtG9 zRss@Z9xRS>HwHB-*&6(}12rNMLvGV`<}g3lLNF9zeeSP!eb%2To8H9Ae|d)^vp9rB z2~Ju`Ak1B=9v;(jZoiWz^R0VH7bbRmPWdVPaA_pKzp{d7l)-c3n{cvvH+?#^J58(n zyG^6su9BsIjLrDCe`Y%sA#KOnWYp&wRqc$0QVlBgI0^0FvXPFMFhvP`C0O z=LoOHl1y%l5N!P&qV1OVR$#Y^&Rv78OPWMxg`Sl>a%lD^duG9iE7n08tFYC<1Pa1V zW>ah)rq4u%!kmJ{=h5>e`1T+;I&k@(Un_UR%cf!uFw$Q1RM%i^`a@Myxgm#6sh{bn zx%UPb#Ui1gbw@Q>Cl2F!H)h1hjH&bO|b>kQt{Jw;teEA_?hpEpgap3Hi-y7&FeN|d>QgwLzM1z zWtb4SLTbjrr&r z)V#}B>UD;J=3^6vuFApdlBeJC0t=*mFveH59!1NL+|q{^OBj$Y703VRjxxuDH^&qCzDusi5>n(2dhNOs1g#L2a$DpZ3u4%?^?i&{UiJn~5kgAznabP5&7-1yIRQ$_7+8w41_g$~~b ze70lA;M^)WPct15f{}3+>760ANZX%Fc2~2|^*;8%?uy4jhO;m#5|sXifTcV5xvt>GFjisnaRflMsd<*r9qr zryiyZ%|ETZ#EF;_mYTJnVezGmGGTIC)@zcV-i*teYS;L|EQpAfxi3WXfe3RoyW6Y2 zw&!9oepZI&?I9@mGeotZb=+d%cl)8wSpba@%pSHAYYn(r)V>XPb|kWU-y0r8`r%j1 zvMqPM)m&@*C~k%(9s!p0ei!V)vb1WAF2-ro66Cn3L}mnG@~Z(ibzHNa%}*thxx8^9 zNt!Zqb9T-l_A(~BYiJofmqKa=hS)Pf+sW_MvTv|YF)RVl@z|Z6w&xA0U;{PGDoKLa z1fAcJX#j9((XX6OD5@Bti2Y{t!xSe0vBbiQw8nx0qV=Y~L(vI3waSQX*tG>NG0^+@ zgX{LF6(aPgeIl6Bg_NNwZH~QNwaiIj`K{*;=j@c3HZr0zmNBmO0*CB!Q7&$jjIw;+ zs*;B#pc#@eS2Jwm#O!WnlUnP|swFDxxB@EctvcYj>6rC}mYeI-xxBWA8=Cy$_cM() z-l)y58Oh-A?J~C_So}MeTxGh7P^o>~>aaC}{rCB8-`QypXnViphv)7neP|K(pN#I< zzOZ)U~tTZaJ{oGFk1t8KGe?}Cj79YRW6;^b0e>NYJ(bosl!{U|HVaP{^Fr#YLeUWO{{yDv!E0Wve$8M%|$AL63mU5Y1> zjG6%MEHx&wJYuXs3x-2+IR0&xc#zxh8{AVAbbj)5D*I;{~zuQ0AK+Ah)M|o6JX4-Q(lcY zq?8&@AT{VO6I%2H5`i-QCxrG!LmdtPdZk4FEP`V6KM)ZBKo9s=^OaEp>H@F-uZbA{ zLycYqUa8T)0{@R2_#XoLlK;IZ!oSwwKXX!`UO-Y1zrufqkWzNNfJ&f0ivK<-lYadI z4R0VN#edpt008lSh$krj`~Iu*hW^)f`&WF?`&GQ&>LY78ARJv1XoKNWz16`itB6&JtyG zK;;EowF%}gDJ(0))RnJ!c4Dvq0Co@nz>sDM0a7FUfkcD^0MN$28AKjf}dDaa$~K)}a#7DLe&}j+Ol8e5{NZh^Th{P3>ZF z+<1KasedQR57kME6k>j%*Wy)O)@?- zHpcX5p#Qw!G1nyfXuFx50GEOI=e~tPYdv8*wX1JGhT;X zUQ&(`AoWcfL`)^0gq0+RdypK8BNFA%{K#FQs9+Eui9sewWtu0gx65E@_Wf@keKqWe zSB<&#nsttcb=B(JE3nR!zr0fXo40zR*I77!2f;}DW~4n9!2~JAT^7a6vUk8h0H70; z_E{Rp2iLvJ-Cy(cAp&4wZ{6kgpH4sdyVJZNRo`KvPq=%ls+mgu1HJED1h_KyvN%Z# zygLoI=Lu4s@*{OLsg2Q%Q$wW~U~S|lV$wmAkw0(bqo_DHFW*D*-Y-s4=_5Z!*L~Ed zuB_NY@zaTPjIbdud_N@9sxuF-G0(54dR$kQ0hDHX!wXNn#@P=-M3VcjGbY)|@p zF)v$^z-Kv#2dTytq9Foq`H^PIIkC~1;!hKp#na&jJI_lpX{RPW%~d*bj3uyY(|U$2 ziYkQ-=hWBkMga}y0>GlYmJx8l8j9m7LI32a5u^LG=cf#Es14fq$s^W|mY>%Ya_zBP zokyp+dAG!nYr-&f+ponlN=IYU4@csJMWrA_kY$`-$re{x0{#O{Ym?T$BHOs^MEFYu z$z{EY#T@l zUp}Z0JwvshZG}BUOtod(>g)@m9{O6`6g1!bGT=)l_>3*We^4CE@7kkXd&KfCPVEkBJj*<2!4vR02-mz*+S^*9)jrBQMAf{Fw#dIpl(pny`w?x4q95{3KwwQ_}jv$FuqOW|pJw!AaNhd|xNOR3m73gNVf} zxMS(1#G8+ ztLNSlnxS>SKr9;QS-naloBuFb$x{-`Z@B z(Et`={WB8M0yP5*w#i~;}{S4uO7+%5hS2qcEz2}OKYrho1Klz3N~YyK6o{RPVZ`qL%ca~SWYWGcRU zs103tihKNe;vu*u4lHH$I2eImGOWFDz08`^;ql2aC+~xiBb_JZ;hlBMwr!O(BabR_ zC0sW+%QHPv4USP-Ix(VSRk?7cFr?1%524uHohDHD*`iM}_3%T|X!riGl6b%AM>G~W z!lbE7=JDPpS}a+#z-ss|hl)B4kuTM04_7>$sGoBVb#y3HnpjFv)8m_c|F}`oTD?EK zXBSa1ZBCUJ<@-TV@F$Al{WA@so-v%qE8xR!)c4J0qW3~`WY@V2%BEP_MXo|8XMzd& zxCOoKEdoM5tb}cL17wS^=XJ){S^_KkO5daZh!cjcmTx}GGnR&vfy=4+&tI-GgJ{F)pAe&t^24&-#IJ@Bc6BQ@1HzN6w1VlBWPlS$MbNYa*`Cfb?@b?Z#q1p!H=M7 zs;RYuS+xZTUoE5cukyDq)@jPD3cfuR#Wx76)*%O80Jo+?;Sdjod7Py;1}N`3*MkvM zbyoyBma$bVU7h`>D={MSYh4$ErHdr=;S1^3Hr!#R7qT~3gCVe>_+WAtMjBVz6w)mp zrqk__R%R`%h0~*5zz@Pu8fTN50tLa@zN%K+I5dw{qtxIBHlMSf&$LiB#70a z#=D?hocv9ExCRgTgk1{-fy)&LjBvjRfAfsSpn_7yF3em2^Vzq|6`Dt+z_RJHNY;)E z!5*;!c5hL3K)=VAsPp}L(D5x^GAVq)azSj~YR-QC0mgluv)%d|BWYX>j$><1Sx0Hc zk#JI&yv4o~cb!3#BQHgO9Nh}Oj&n6Q#w&jXD|ej{{+h8tV~lz_BoWU=QIBMWhEtI( zGHf9}Sb5wVFK+GAfp(M-D-8KitjqIH>KqNxDRiPd#${jKJQ^<|F8oz?&I)$Sf6t(U94U&=*Adm$DoAzzeDd5l+Nay?aD^@K7&v!4L;RLrg7PG8!5#n=%#S`t z^0N~!VeP455JgN9cKtU9VL;srI%i+aVuL=X@X}et?v!$1XyF^AlYTkEjFku(AVQLr zAUtqDi zG!OaLVAv>iSva92v%l;r*83inqv>L6-vZGIJN(bdP9-8sZT4X$Nv9D3L0C70!s2A8 zqb`ba?hdFk9n!-?nv>9x*&skz00WmSPn!Zz(tI|S@sed0hSi=UVbrB>AHtqhICE1| z*_`oDE4ZKIDmoQ^a-)*;sc@r`YIh1}P7V^Zj2PrphpKcn$e_u@tSdr9Tl|8gvJ0uQ zp5X?Yu?RB%VifCeeSbx;rVEQDseXUHwi8}KDwF10F24tYZ67 z>n9OekIV8Dv5S+;t=oxURV?vJEy@NqxKTB(&50_j`gJp}3#qa7rW4bfjdVHI{Sv5l z)P=w%)Pj896|xvhdbFf0O1p(HBF?*>lC~V;r5Oq7WXDXU2U!Po+eM9h+yL+%T(CNb|?-ImMQqpidbijpuHA|1EM$7zQ&s^mWc=gra4VqFMTY(dDydY*DKGqJPG z+%oTu1X;i}Q|_{+ccb`kd|e9b5lnK^QL=ao;41e8a@u-WFsZLd% zY}>rHNyGtBtm*wTNM0@?ne*$D_-5`jmX?WL4SJS^giXrf!q?;{#4FexUG1z@BZhVk z{V_PUnwr8rt;SM%XEYOIe=;-5Q@2}ET?cZ0B=yI)AKMa|3QpVeiaU@>in1*UkjRI7 zy_}g$7?$c)+)a&Epn^|59wBuTRFE3DA3-=77-!d`ON6F&=&@JTp6Rs>5Mlcu;&u#gA14?>sQfJXdGV7su;+;}>7`}4j>Xm` zO5H_Bag8Ls)P-&WKBjx7d|*P^wzd$hK($A+Y zY*fA3s6oYSh)tQM?x^i2NkWI;5v1E+Ev0D4Fbtg=9KSuj>eAn6?6VATl#Sw+_LdV+ zztS=BqMIEta(xX~sTg#TP;IBxvF$heFyRf^`^9_gR&d1ghxMhkW?w%tz?dG^kWUls z`)+bpGH`$#wqBNk*CIJz=;n?a!>*tP1?w)A>9teZJ)SzMy9v-2ouCAi+>qSFDaDuV0_eJp0-2|TBh)P9*sec?;sb?hd(El6WWho z>lcVv4%WW&fIqnesB#cO^Q5_CrD%Sb#lj<-%iLDq^=7M$d%z%R8=N=mbxE1rHbcWq zsO%oIt1J!BP#2??RRTRtGXb`+92+N6UyUq$UfE*8$ehWFT$d80aH z-|prt3BZ}-oR;Ztx4nzJ4`Q9(_nuf)j4xqa>Dix0q*54s%qL(?Vk@{3`T6izA=D)M z?gNrSslB8$r+IID#HOSUs94aQ1U=h}x5!AhK6v}7@xv26#7H&!G&*scnK1)XS{v~y z@f>?w{6LI4o(-?P7-kl68hh`oRBx}XiCA}tXcE5sF%#s;mRV#*`HohaQ3dB-V+8-eU9^h0+r77OC9!yj_RUOq~G+k#cZ<)I& z`VC)(pJd7HIbYL`L9S2oAamd6H}mouF;>y>&ey)@TggVzA5IoNO63@&O%Z7tlBUO% z?HcF*Dp+tliP?6*Jzi&V&@bK|D6PxJ01%_4e7nUTJ)mx7a4v@jF+= z$F+S}c{86D4H;um0_HPPLpR>rP$oi6Xe&x)*=Q2;-oWf_#ec2sx>#53D3^jl| z;e01EuBtY*&03a=U=@&J@>npRTagb}#xF%scUeoRTh zSl`hU=u0iajn+kQ*xnb@!Im#LN?{*un<*sTOcD`bwWFj7gnlEd zIk7W+#VPSQwHN}_z@ivG*+e#<3lgQe6ctZ*8up{eXu`m2-b20_G)NI!RwLgz|EAn> z&tajHCCb;P+E5`4?J#t^-$rOJ6*DO!wPROcG=Z3XGMNH8w2W#SQb6C8tkeUB}>Vk}uQ`@JNaT|y4T#wt_ zy?r*jwl>L>fjYyt*ep)CrA>A>=ouEjv9{0)*>bfniCaN@?02tZ4c-*KV8;t0- zA%^OJDSCc7@Go!ofdAyafJc}^@XKeDO}G-=pSYoYxB|G=r@M?;gsomJoXm!4tz?DS z>6^&6x#aYcQu20Xx`DftsB8R7IQ|3=_>*5Gb9>d9q@L*LGD+Q2iX9X{Dxw@;g}V|_ zekt`XgjqHo&Kx(rIgxFb+E`sOsssv#%7!WhzG`Yt9N*bQiKs6o!Y_mwvaxkXgIduor}o znLsx$np=AY&%Grm9J?LUZ(Xo^Tzoszku*Y+4RZ$F^G0-<%JKhj_k85JpG#IaT5YGo zcDCp0j6SO$5OQF(&qgkSL^bHcEWt$PSI>fPs)#IhXrV;#U*@+o%GghJDexh}4qW9! zahZVf4@C%P4IT1Jf(%NYA=bly1hAayM(t^KzH#kIP6u)Q16W)Godc6{1Rf;_YV5IH zZ2pEyqt4-CU8Qr+lbxw=OgB91_Q;pNy;0p5`T8dm`U9spk{)jFX zCXz+#P0PUD`$kSt)&611Se>69`sDk^y*7%M^Ktas99@aUTW$B|ES9)JH{1G>MB(V@ zdr*b*X~LhF@2FO1X+x_06J%X%@Epuz*RFn);^7WVD4jao1N z+&$?Qf#;?p1Ms8Vw3_Qbj$FRQy@hui@pt#2OE%$)Q|{(wui`dJrdvUqjf8TK&3m$0eUsyFV?*R*vT0VCQ0;o#Qb&n;hmEN9@ z=_+t#i|{L}yr)87_x-{|#9$5Ub(N$-jKwFLEF;qpxjC}l>Q2XD#5Ql&R|jFW_D4vX z)Rd~$zCwc~%!BF_QKgv#0SVF$EP;6cP@Qv2AeaGk2iDVQ-vh-!cUV1*!XF4ub9fK5!2fTm zo;LFyDD{`3|Me~ZUrc-L50n7iA=gaDJVtSQs91Av5SNpK*? zKk%&;4rBni|Bs6lU;jA{0Cb1r{t3+b|6m+|?jQDl2lfFCfusMi@h_kw{!8cnz47mW zyO@JY{}JNone + + Download Acfun video by vid. + + Call Acfun API, decide which site to use, and pass the job to its + extractor. + """ + + #first call the main parasing API + info = loads(get_html('http://www.acfun.tv/video/getVideo.aspx?id=' + vid)) + + sourceType = info['sourceType'] + + #decide sourceId to know which extractor to use + sourceId = info.get('sourceId', '') + # danmakuId = info['danmakuId'] + + #call extractor decided by sourceId + if sourceType == 'sina': + sina_download_by_vid(sourceId) + elif sourceType == 'youku': + youku_download_by_vid(sourceId, **kwargs) + elif sourceType == 'tudou': + tudou_download_by_iid(sourceId) + elif sourceType == 'qq': + qq_download_by_vid(sourceId) + elif sourceType == 'letv': + letvcloud_download_by_vu(sourceId, '2d8c027396') + elif sourceType == 'zhuzhan': + #As in Jul.28.2016, Acfun is using embsig to anti hotlink so we need to pass this + #In Mar. 2017 there is a dedicated ``acfun_proxy'' in youku cloud player + #old code removed + url = 'http://www.acfun.cn/v/ac' + vid + yk_streams = self.youku_acfun_proxy(info['sourceId'], info['encode'], url) + seq = ['mp4hd3', 'mp4hd2', 'mp4hd', 'flvhd', 'm3u8_flv'] + for t in seq: + if yk_streams.get(t): + preferred = yk_streams[t] + break + + return preferred[0] + else: + raise NotImplementedError(sourceType) + + + def video_from_url(self, url, **kwargs): + assert re.match(r'http://[^\.]*\.*acfun\.[^\.]+/\D/\D\D(\d+)', url) + html = get_html(url) + + title = r1(r'data-title="([^"]+)"', html) + assert title + if match1(url, r'_(\d+)$'): # current P + title = title + " " + r1(r'active">([^<]*)', html) + + vid = r1('data-vid="(\d+)"', html) + up = r1('data-name="([^"]+)"', html) + p_title = r1('active">([^<]+)', html) + title = '%s (%s)' % (title, up) + if p_title: + title = '%s - %s' % (title, p_title) + return self.video_from_vid(vid, **kwargs) + +site = ACfun() +video_from_url = site.video_from_url diff --git a/plugin.video.rrsp/resources/lib/rrmj.py b/plugin.video.rrsp/resources/lib/rrmj.py index dd07341..b2f977a 100644 --- a/plugin.video.rrsp/resources/lib/rrmj.py +++ b/plugin.video.rrsp/resources/lib/rrmj.py @@ -152,7 +152,6 @@ def get_token(self): def get_by_sid(self, episodeSid, quality='super'): API = '/video/findM3u8ByEpisodeSid' API = '/video/findM3u8ByEpisodeSidAuth' - url = SERVER + API headers = self.header body = { 'episodeSid': episodeSid, @@ -160,8 +159,7 @@ def get_by_sid(self, episodeSid, quality='super'): 'seasonId': 0, 'token': headers['token'] } - ppp = get_html(url, data=urlencode(body), headers=headers) - data = loads(ppp) + data = self.get_json(API, data=urlencode(body)) if data['code'] != '0000': return None, None else: diff --git a/plugin.video.rrsp/scratch.py b/plugin.video.rrsp/scratch.py new file mode 100644 index 0000000..9ad3a65 --- /dev/null +++ b/plugin.video.rrsp/scratch.py @@ -0,0 +1,88 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import urllib2 +from urllib import urlencode +import json +import gzip +import StringIO +import re + +SERVER = "https://api.rr.tv" +TOKEN = '0cd2626c822d49d5a27c4424a299dbaa' +TOKEN = 'a65cb45354614c23bf3e30ca12e043d3' +TOKEN = '8e575ee9b50643368d1c0792eb1a3f22' +#TOKEN = '1d71c7d377bc4b81b0c607b622b84b4b' +#TOKEN = "79e7dc7de5814908bc11e62972b6b819" +TOKEN = '6b6cfdd3e90843c0a0914425638db7ef' +FAKE_HEADERS = { + "clientType": "android_RRMJ", + "clientVersion": "3.6.2", + "token": TOKEN, + 'deviceId': '861134030056126', + 'signature': '643c184f77372e364550e77adc0360cd', + "Authentication": "RRTV 470164b995ea4aa5a53f9e5cbceded472:IxIYBj:LPWfRb:I9gvePR5R2N8muXD7NWPCj" +}; + + +UserAgent = 'PUClient/3.5.5 (iPhone; iOS 10.0.1; Scale/2.00)' +UserAgent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0' + +def GetHttpData(url, data=None, cookie=None, headers=None): +# print 'url: %s, data: %s, headers: %s' % (url, data, headers) + req = urllib2.Request(url, data) + req.add_header('User-Agent', UserAgent) + req.add_header('Accept-encoding', 'gzip') + if cookie is not None: + req.add_header('Cookie', cookie) + if headers is not None: + for header in headers: + req.add_header(header, headers[header]) + + response = urllib2.urlopen(req, timeout=3) + httpdata = response.read() + if response.headers.get('content-encoding', None) == 'gzip': + httpdata = gzip.GzipFile(fileobj=StringIO.StringIO(httpdata)).read() + response.close() + match = re.compile('encoding=(.+?)"').findall(httpdata) + if not match: + match = re.compile('meta charset="(.+?)"').findall(httpdata) + if match: + charset = match[0].lower() + if (charset != 'utf-8') and (charset != 'utf8'): + httpdata = unicode(httpdata, charset).encode('utf8') +# print httpdata + return httpdata + + +class RenRenMeiJu(): + """docstring for RenRenMeiJu""" + + def __init__(self): + self.header = FAKE_HEADERS + + def get_json(self, api, data=None, pretty=False): + headers = self.header + html = GetHttpData(SERVER+api, data=data, headers=FAKE_HEADERS) + s = json.loads(html) + if pretty: + print headers + print json.dumps(s, sort_keys=True, + indent=4, separators=(',', ': ')) + return html + + def func(self, API='/v3plus', **kwargs): + return self.get_json(API, data=urlencode(kwargs)) + +#x = GetTokenX() +meiju=RenRenMeiJu() +API='/v3plus/season/detail' + +for x in range(13000,14000): + html = meiju.func(API=API,seasonId=x) + js = json.loads(html) + if js['code'] != '0000': + print js['msg'] + continue + print js['data']['season']['title'], js['data']['season']['id'] + diff --git a/plugin.video.youku2/addon.xml b/plugin.video.youku2/addon.xml index 8720dc7..4072d2d 100644 --- a/plugin.video.youku2/addon.xml +++ b/plugin.video.youku2/addon.xml @@ -1,8 +1,9 @@ + diff --git a/plugin.video.youku2/default.py b/plugin.video.youku2/default.py index 8aa5485..93da37b 100644 --- a/plugin.video.youku2/default.py +++ b/plugin.video.youku2/default.py @@ -1,17 +1,13 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -import xbmc -from xbmcgui import Dialog, ListItem -import xbmcplugin +from xbmcswift2 import Plugin, xbmcgui, xbmc import xbmcaddon -from urlparse import parse_qsl from urllib import quote_plus -import sys from json import loads from bs4 import BeautifulSoup from common import get_html, match1 -from youku import video_from_url as video_from_url +from youku import video_from_url, video_from_vid ######################################################################## # 优酷 www.youku.com @@ -19,70 +15,16 @@ # Plugin constants __addon__ = xbmcaddon.Addon() -__addonid__ = __addon__.getAddonInfo('id') __addonname__ = __addon__.getAddonInfo('name') -__profile__ = xbmc.translatePath(__addon__.getAddonInfo('profile')) - -UserAgent = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' -UserAgent = 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' -#UserAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' -UserAgent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0' LIST_URL = 'http://list.youku.com' BANNER_FMT = '[COLOR FFDEB887][%s][/COLOR]' -TIMER_FMT = '[COLOR FF8040C0](%s)[/COLOR]' -INDENT_FMT0 = '[COLOR FFDEB887] %s[/COLOR]' -INDENT_FMT1 = '[COLOR FFDEB8FF] %s[/COLOR]' +plugin = Plugin() +url_for = plugin.url_for ############################################################################ -def PlayVideo(params): - url = params['url'] - title = params['title'] - thumb = params.get('thumb') - level = int(__addon__.getSetting('resolution')) - playmode = __addon__.getSetting('video_vplaycont') - - if level == 4: - dialog = Dialog() - level = dialog.select('清晰度选择', ['流畅', '高清', '超清', '1080P']) - level = max(0, level) - - playlistA = xbmc.PlayList(1) - playlist = xbmc.PlayList(0) - playlist.clear() - - title = title.split('.') - v_pos = int(title[0]) - title = '.'.join(title[1:]) - psize = playlistA.size() - - for x in range(v_pos, psize): - p_item = playlistA.__getitem__(x) - p_url = p_item.getfilename(x) - p_list = p_item.getdescription(x) - li = p_item # pass all li items including the embedded thumb image - - urls = video_from_url(url, level=level) - - ulen = len(urls) - if ulen < 1: - Dialog().ok(__addonname__, '未匹配到VID') - return - - for i in range(ulen): - name = title + '(%d/%d)' % (i + 1, ulen) - li = ListItem(name, thumbnailImage=thumb) - li.setInfo(type='Video', infoLabels={'Title': name}) - playlist.add(urls[i], li) - - if x == v_pos: - xbmc.Player(0).play(playlist) - xbmc.sleep(1500) - if playmode == 'false': - break - def httphead(url): if len(url) < 2: @@ -95,93 +37,34 @@ def httphead(url): return url -def mainMenu(): - li = ListItem('[COLOR FF00FF00] 【优酷视频 - 搜索】[/COLOR]') - u = sys.argv[0] + '?mode=search' - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) +@plugin.route('/stay') +def stay(): + pass - html = get_html(LIST_URL) - tree = BeautifulSoup(html, 'html.parser') - soup = tree.find_all('div', {'class': 'yk-filter'}) - grp = soup[0].find_all('li') - for prog in grp[1:]: - try: - href = prog.a['href'] - except: - break - name = prog.text - href = httphead(href) +@plugin.route('/playvideo/') +def playvideo(url): + level = int(__addon__.getSetting('resolution')) - li = ListItem(name) - u = sys.argv[0] + '?url=' + href - u += '&mode=videolist&name=' + name - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) + urls = video_from_url(url, level=level) - xbmcplugin.endOfDirectory(int(sys.argv[1])) + stackurl = 'stack://' + ' , '.join(urls) + plugin.set_resolved_url(stackurl) -def listSubMenu(params): - name = params['name'] - url = params['url'] - filter = params.get('filter', '') - sort = params.get('sort', '') +@plugin.route('/playvid/') +def playvid(vid): + level = int(__addon__.getSetting('resolution')) - li = ListItem(BANNER_FMT % (name+'(分类过滤 %s)' % filter.encode('utf-8'))) - u = sys.argv[0] + '?url=' + url - u += '&mode=select&name=' + name - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) + urls = video_from_vid(vid, level=level) - html = get_html(url) - tree = BeautifulSoup(html, 'html.parser') - # 分页 - soup = tree.find_all('ul', {'class': 'yk-pages'}) - pages = soup[0].find_all('li') - for page in pages: - try: - href = page.a['href'] - except: - continue - title = page.text - href = httphead(href) - li = ListItem(BANNER_FMT % title) - u = sys.argv[0] + '?url=' + href - u += '&mode=videolist&name=' + quote_plus(name) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) + stackurl = 'stack://' + ' , '.join(urls) + plugin.set_resolved_url(stackurl) - # 剧目清单 - #items = soup[0].find_all('div', {'class': 'p-thumb'}) - items = tree.find_all('div', {'class': 'yk-pack'}) - for item in items: - title = item.a['title'] - href = httphead(item.a['href']) - img = httphead(item.img['src']) - pay = item.find('span', {'class': 'vip-free'}) - if pay: - pay = '([COLOR FFFF00FF]%s' + pay.text + '[/COLOR])' - else: - pay = '%s' - pt = item.find('span', {'class': 'p-time'}) - try: - ptime = pt.text + ' ' - except: - ptime = '' - li = ListItem(title + pay % (ptime), - iconImage=img, thumbnailImage=img) - u = sys.argv[0] + '?url=' + href - u += '&name=' + quote_plus(name) - u += '&mode=episodelist&title=' + title - u += '&thumb=' + img - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) - - xbmcplugin.setContent(int(sys.argv[1]), 'movies') - xbmcplugin.endOfDirectory(int(sys.argv[1])) - - -def normalSelect(params): - url = params.get('url') - name = params.get('name') - filter = params.get('filter', '') + +@plugin.route('/select/') +def select(url): + filter = '' surl = url.split('/') purl = surl[-1][:-5].split('_') keystate = {'a': 0, # 地区 @@ -202,9 +85,9 @@ def normalSelect(params): html = get_html(url) tree = BeautifulSoup(html, 'html.parser') - color = '[COLOR FF00FF00]%s[/COLOR]' + color = '[COLOR purple]%s[/COLOR]' - list = [] + lists = [] soup = tree.find_all('div', {'class': 'item'}) for iclass in soup[1:]: x = [] @@ -219,7 +102,7 @@ def normalSelect(params): href = subitem.a['href'].encode('utf-8') x.append(dict({title: href})) - list.append(dict({label: x})) + lists.append(dict({label: x})) sort = tree.find_all('div', {'class': 'yk-sort-item'}) for iclass in sort: @@ -231,11 +114,11 @@ def normalSelect(params): href = subitem.a['href'].encode('utf-8') x.append(dict({title: href})) - list.append(dict({label: x})) + lists.append(dict({label: x})) - dialog = Dialog() + dialog = xbmcgui.Dialog() - for item in list: + for item in lists: title = item.keys()[0] y = item[title] l = [x.keys()[0] for x in y] @@ -268,7 +151,6 @@ def normalSelect(params): if purl[index+1] not in keyword: oldv = purl.pop(index+1) purl.insert(index+1, v) - except: purl += [k, v] @@ -277,86 +159,69 @@ def normalSelect(params): surl[-1] = '_'.join(purl) + '.html' url = '/'.join(surl) - params['url'] = url - params['filter'] = filter - listSubMenu(params) + return videolist(url=url, filter=filter.encode('utf-8')) -def episodesList(params): - url = params['url'] - thumb = params['thumb'] +@plugin.route('/episodelist/') +def episodelist(url): + plugin.set_content('video') html = get_html(url) tree = BeautifulSoup(html, 'html.parser') - - playlist = xbmc.PlayList(1) - playlist.clear() - j = 0 + items = [] # 主题视频 #soup = tree.find_all('div', {'class': 'lists'}) - items = tree.find_all('div', {'class': 'program'}) - if len(items) < 1: - desc = tree.find_all('meta', {'name': 'description'}) - info = desc[0]['content'] - title = params['title'] - p_thumb = params['thumb'] - u = sys.argv[0] + '?url=' + url - u += '&mode=playvideo' - u += '&title=%d.%s' % (j, title) - u += '&thumb=' + p_thumb - li = ListItem(title, - iconImage=p_thumb, thumbnailImage=p_thumb) - li.setInfo(type='Video', infoLabels={'Title': title, 'Plot': info}) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - playlist.add(url, li) - j += 1 + programs = tree.find_all('div', {'class': 'program'}) + if len(programs) < 1: + info = tree.find('meta', {'name': 'description'})['content'] + title = tree.find('meta', {'name': 'title'})['content'] + items.append({ + 'label': title, + 'path': url_for('playvideo', url=url), + 'is_playable': True, + 'info': {'title': title, 'plot': info} + }) else: - for item in items: - title = item['title'] - href = httphead(item.a['href']) - img = item.img['src'] - t = item.find('span', {'class': 'c-time'}) - time = t.text - u = sys.argv[0] + '?url=' + href + '&mode=playvideo' - u += '&title=%d.%s' % (j, title) + '&thumb=' + img - li = ListItem(title + '(' + time + ')', - iconImage=img, thumbnailImage=img) - li.setInfo(type='Video', infoLabels={'Title': title}) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - playlist.add(href, li) - j += 1 - - items = tree.find_all('div', {'class': 'item '}) - - for item in items: - title = item['title'] - href = httphead(item.a['href']) - u = sys.argv[0] + '?url=' + href + '&mode=playvideo' - u += '&title=%d.%s' % (j, title) + '&thumb=' + thumb - li = ListItem(title, iconImage=thumb, thumbnailImage=thumb) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - playlist.add(href, li) - j += 1 - - li = ListItem(BANNER_FMT % '相关视频') - u = sys.argv[0] - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) + for item in programs: + dr = item.find('span', {'class': 'c-time'}).text + duration = 0 + for t in dr.split(':'): + duration = duration * 60 + int(t) + items.append({ + 'label': item['title'], + 'path': url_for('playvideo', url=httphead(item.a['href'])), + 'thumbnail': item.img['src'], + 'is_playable': True, + 'info': {'title': item['title'], 'duration': duration} + }) + + programs = tree.find_all('div', {'class': 'item '}) + + for item in programs: + intro = item.find('div', {'class': 'show_aspect'}) + items.append({ + 'label': item['title'], + 'path': url_for('playvideo', url=httphead(item.a['href'])), + 'is_playable': True, + 'info': {'title': item['title'], 'plot': intro.text} + }) # 相关视频 + items.append({ + 'label': BANNER_FMT % '相关视频', + 'path': url_for('stay') + }) soup = tree.find_all('div', {'class': 'textlists'}) try: - items = soup[0].find_all('li') - for item in items: - title = item['title'] - href = httphead(item.a['href']) - u = sys.argv[0] + '?url=' + href - u += '&mode=playvideo&title=%d.%s' % (j, title) - li = ListItem(title) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - playlist.add(href, li) - j += 1 - + lists = soup[0].find_all('li') + for item in lists: + items.append({ + 'label': item['title'], + 'path': url_for('playvideo', url=httphead(item.a['href'])), + 'is_playable': True, + 'info': {'title': item['title']} + }) except: pass @@ -373,21 +238,18 @@ def episodesList(params): jsdata = loads(html.encode('utf-8')) jsdata = jsdata['data'] for item in jsdata: - title = item['title'] - href = httphead(item['playLink']) - img = item['picUrl'] - u = sys.argv[0] + '?url=' + href - u += '&mode=playvideo&title=%d.%s' % (j, title) + '&thumb=' + img - li = ListItem(title, iconImage=img, thumbnailImage=img) - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - playlist.add(href, li) - j += 1 - - xbmcplugin.setContent(int(sys.argv[1]), 'episodes') - xbmcplugin.endOfDirectory(int(sys.argv[1])) - - -def searchInYouku(params): + items.append({ + 'label': item['title'], + 'path': url_for('playvideo', url=httphead(item['playLink'])), + 'thumbnail': item['picUrl'], + 'is_playable': True, + 'info': {'title': item['title']} + }) + return items + + +@plugin.route('/search/') +def search(): keyboard = xbmc.Keyboard('', '请输入搜索内容') xbmc.sleep(1500) keyboard.doModal() @@ -395,52 +257,110 @@ def searchInYouku(params): return keyword = keyboard.getText() key = quote_plus(keyword) - p_url = 'http://www.soku.com/search_video/q_' + searchapi = 'http://tv.api.3g.youku.com/openapi-wireless/videos/search/{}?pid=0ce22bfd5ef5d2c5&pz=500' - link = get_html(p_url + key) + link = get_html(searchapi.format(key)) if link is None: - li = ListItem(' 抱歉,没有找到[COLOR FFFF0000] ' + keyword + ' [/COL OR]的相关视频') - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, False) - xbmcplugin.endOfDirectory(int(sys.argv[1])) - return + xbmcgui.Dialog().ok(__addonname__, + ' 抱歉,没有找到[COLOR FFFF0000] ' + keyword + + ' [/COLOR]的相关视频') + return [] # fetch and build the video series episode list - content = BeautifulSoup(link, 'html.parser') - soup1 = content.find_all('div', {'class': 's_movie clearfix'}) - soup2 = content.find_all('div', {'class': 's_tv clearfix'}) - - for item in soup1 + soup2: - img = item.img['src'] - detail = item.find('div', {'class': 's_detail'}) - href = detail.a['href'] - title = detail.a.text - info = item.find('div', {'class': 'info_cont'}) - info = info.span.text - - li = ListItem(title, iconImage='', thumbnailImage=img) - li.setInfo(type='Video', infoLabels={'Title': title, 'Plot': info}) - u = sys.argv[0] + '?url=' + href + '&mode=episodelist' - u += '&thumb=' + img + '&title=' + title - xbmcplugin.addDirectoryItem(int(sys.argv[1]), u, li, True) - - xbmcplugin.setContent(int(sys.argv[1]), 'episodes') - xbmcplugin.endOfDirectory(int(sys.argv[1])) - - -# main programs goes here ######################################### -params = sys.argv[2][1:] -params = dict(parse_qsl(params)) - -mode = params.get('mode') - -runlist = { - None: 'mainMenu()', - 'videolist': 'listSubMenu(params)', - 'episodelist': 'episodesList(params)', - 'playvideo': 'PlayVideo(params)', - 'search': 'searchInYouku(params)', - 'select': 'normalSelect(params)' -} - -exec(runlist[mode]) + finds = loads(link) + items = [] + for item in finds['results']: + img = item['img'] + videoid = item['videoid'] + title = item['title'] + info = item['desc'] + duration = 0 + for t in item['duration'].split(':'): + duration = duration*60 + int(t) + + items.append({ + 'label': item['title'], + 'path': url_for('playvid', vid=videoid), + 'thumbnail': item['img'], + 'is_playable': True, + 'info': {'title': item['title'], 'plot': item['desc'], + 'duration': duration} + }) + return items + + +@plugin.route('/videolist//') +def videolist(url, filter): + filter1 = '' if filter == '0' else filter + items = [{ + 'label': BANNER_FMT % ('分类过滤: ' + filter1), + 'path': url_for('select', url=url) + }] + + html = get_html(url) + tree = BeautifulSoup(html, 'html.parser') + # 分页 + soup = tree.find_all('ul', {'class': 'yk-pages'}) + try: + pages = soup[0].find_all('li') + for page in pages: + try: + href = page.a['href'] + except: + continue + items.append({ + 'label': BANNER_FMT % page.text, + 'path': url_for('videolist', url=httphead(href), filter=filter) + }) + except: + pass + + # 剧目清单 + #items = soup[0].find_all('div', {'class': 'p-thumb'}) + lists = tree.find_all('div', {'class': 'yk-pack'}) + for item in lists: + pay = item.find('span', {'class': 'vip-free'}) + if pay: + pay = '([COLOR pink]%s' + pay.text + '[/COLOR])' + else: + pay = '%s' + pt = item.find('span', {'class': 'p-time'}) + try: + ptime = pt.text + ' ' + except: + ptime = '' + + items.append({ + 'label': item.a['title'] + pay % (ptime), + 'path': url_for('episodelist', url=httphead(item.a['href'])), + 'thumbnail': httphead(item.img['src']), + }) + return items + + +@plugin.route('/') +def index(): + yield { + 'label': '[COLOR green] 【优酷视频 - 搜索】[/COLOR]', + 'path': url_for('search') + } + + html = get_html(LIST_URL) + tree = BeautifulSoup(html, 'html.parser') + soup = tree.find_all('div', {'class': 'yk-filter'}) + + grp = soup[0].find_all('li') + for prog in grp[1:]: + try: + href = prog.a['href'] + except: + continue + yield { + 'label': prog.text, + 'path': url_for('videolist', url=httphead(href), filter='0') + } + + +if __name__ == '__main__': + plugin.run() diff --git a/plugin.video.youku2/plugin.video.youku2-1.0.1.zip b/plugin.video.youku2/plugin.video.youku2-1.0.2.zip similarity index 92% rename from plugin.video.youku2/plugin.video.youku2-1.0.1.zip rename to plugin.video.youku2/plugin.video.youku2-1.0.2.zip index a9b806982322cd2268944134b8397b30ee1cce40..61b1b93725ae5faf52689b65df6be63ef892aa49 100644 GIT binary patch delta 4247 zcmZXXXEfYh*T!cuGkOg&T6Do6h>2kI-bS=ACKA2(Ai6)%Ze5g&p4>uo5{zh3qD6Fq zh!&mbT_SkMeSdhL=RIrfz0O+aTKk-{*R?P!Q;5a*F{xSw@cnSRX)Q2?vo_FCS76 z7`h4pf&QdG{hs&{VcJLcn?CME^yiAv6jLk2N76CX1hM>8=r&C6^ZMDX2SCWbI_|O6XW7twT<%rPVSW9U&Cz4eS zer!TY(X&N6kq7zyw`^ost9ypH9NLj62??y!l7Np0Ksua0s7(N(@#Np@Ae7jMef=d! zM!QS8V}%L&%=-a#(~gNZT;4J42)1GM>ggKOYh6kfzKJA7wvI1%8U)NbYz5RY0T9&C|uxY~cGkQ1U( zW~JZ?*gVnL`SnXac!fMqk^d}cf9ppVZm7cbrO|fth40x9>|eZMg7}f@0Yz~gF@-9o z+i#ruvI*_ATkiI%97A}dRH2l@@f_PUQU()331TzvwC$CImy-Xnkg_(4q3f7?Nz-%?dx2rBS{P>HuQ*<@XkMSp(r!T$Quhq=G|B~XxIWk;`T@Oq z#Izw{$fEe3qJ+7f=imk>Z(sg^GFOzj0!d_OM1h(kPB)Z5{5Myaj80pc0axtPP$J3n zy6ftq%2WYL&&d5M2!r zPEG+#1`vZF7MIPrivQ_A2lm31xr6TF>^vIApDt}NJMqSTjn60p^jrsGpuQ?JK4Kq; z^3L&b^=>eAVlB#NqgJ5O;YG-EU%y7zDkR6tw@9jSK|f!0rhgIMbZleeYU}OH`Xwbf z;5}-8CNurmS!Tb}14uxQh&z-MH8aE~kG53w8IvXmV$NFV&fi++cbm--I~9!*=n7Yg z8L6E4D3T>vYsP+L(EWjpwsQs2qrd_(XwnNkhvK9#aOPjI3*P!`)fk}qN=A(NV2C>22#@&yA9xATtI6Op zFPS({%F==Z?GAX+f|tN~`u>Nifk#Tk{rW;#{&S69M;jvpS-$g8re3J7d6xq9xJPUh zOIec+d&1npimp^jgIuSK#dE7p?1xKxA>o>srFh3S`a?ru0V&k+QvPV)Uwp~ zhd-$njC$^THFgs8E)y%Qny}Kxu685aOKBKrj**#w1!C8VX@k`4ZnQweb+0V=6a9?(_{A#9%3#?rm_@; z6j4iy?O}Zu-`lPhOM+B%i1OaIgR;NO>(B1y^Z60jDp-p+&RE20hOqIsd)2Yj#nW?S zbUs=EZg-C<{5Tb=@g->@(ZtVf+rf*&&IL&0>bg#&%=IQxs#fHDh`S0cw6ry}iJF+) zSEHcq!gnDPq0sE`e3t^eTV;v8U$jkJg1G`QVSP`pxuB!_%;&)6(#_2GHM6xwRV1v- zWHIe>{>Mi%p+*S1@t*2}3!OLXMzPJuyC{D^sM%4raew&;?~ihwF2+qvk<@fQ1g4vg zaoutEZ{3p>@JLyXhfJS1t(2TvV=FBFZZHjMI-N+pv&qXhvK4r8*w*0c+I-}YfAIF% z!ra-hx9e=#t2l%~(B{lhgAmSMGp{h2X?A0}_R$-3iJfe%wD0y<|N5*}xq({3^EL$F zrWV)i?Y(z68_oRi+ql@XPcWmA$Kx%850&9AJA(zseouUVsBy%f+rNT7{0NSajT?-z zVBt&HB4lxv^lN*@OC&ubePcz8Kd)_*La})y)f}oYN8aT?7PfuFJW!R+KQGEa(r%tSn^ zb%%smRNKgn5m{)*P_L~t?;h>TA>z9WnS8MYQJ!=#KQ!#_#3mW6i2Qt|(m-;x|znr6&uuhdoYek_~) z39Ve_c5^fT=&vV77@-0N2}+%vVX}!xB3z8+kGR6BF+7Vs9PLtgZ#E53T8O3&z**jr z`#Smx?q3#bXf~LL42Hgf^-v~3;PEe8JjU^h!bHv;CNIi6Bc_Fil*~ZM@vcX{X(@yp zwL}^}UiH=EbBpaL;18I2K9;foO(u603ckcDYbJvb=1^f!0mtSXHC%Znb7eQaWzc zFsyJ1A5vjE_}cc=?CHtb^nFtpR3OtPj5kH^u%Aw)Rrrb8fq6i*fk*Lv)s5iD)%>Cl z;j%<~cbvuMqZF?dwS)FdSdKZVhus}ZX3RALofuCfCt10|?T&ysp8T~BtCe#xv0~g* zY@&@5aLI0jXOUl6U!|pJZ0Yaf$7a;-lto!|l(t?X8Zmct*#|w0(HKgyP+zb`z{c!n zOiFy8LFz0V|E-V6gY&~Z4QF;w;kd7+YVAaa4^&_-j1qQaoF41$e1vt+XCT-IiNZW= z{sFzemN=jyIduSyXdkl~bDLcCOa3yil^)MX27dmtG)%$cip12?H?Qetsr{xR=*dw6 z@xM|zS#3Pj4XPXJSco9`h}GeQhY@Llsq;Z{g-N)#Wh7D$j+lhev}rE-N$?5+CTSiD z@b$GF+4iuiwCzHzW6oz4c3}cU@^D%P72e|5hW*y;%@V+L<<6GO`oLHYe^iXfCw))8XQ7srntknRkC@nN3>nPc{>RDiAz;I zPn*||`Xz9qFtcwL+kQI27(}CL7oiQrHB>exc#HHdc0xWU3$Go$JMj?!%!-(U7<}*o z;hiTijUt?QLS!x=-`GCc)oPpM{%KOPtBsu`grR`N_2QS$DxTGp%XscBqbOfU<-XpA zWK?JuMI%4Q%@o~id0tjYvSvETPyTfq{oL&rwt(Tf&auQ?#e+rs{8MOq?uEr-YQ%3= z8Z%;VUL-oBP(Tr-3*gfqyxK+2s)AZfiJ6P%=hm8bQHL&~7@5hly~%09Z5PustG%PX z>`7MFWCT-+7q$XWeqB~J5xur(!_hIL9N}OBYB&;~b zfxltsn3yEu-|HNCS|}!B$pTz*&AiU8dJI&xS6RQ3;xPwf0;LBvUGTWv!p8_u)(}*1mg~d+i26byI7o_gDBXSz(5jw+xxvH?7Br&GXZ5 zi|4Xf+G2;oU-CQ2h?jNA43o8ZL<8-Xn>l0?vZ$~ir@!b$0`Xqgp$N`H`J{5e%QhTf39 zbt&M)(u3WpYD5@P^@WZ7!0#8Zw4fRNW8nc8n_^0z~3>RqMUS>k5JQW#zf;! zB+2Q6%w%Uws^5m`QT$9&)?hwds)%D#T6KQ@X(N#kXgMelq~cZC!>VtY?MsylH2 zRAuu$&)P`(+`gt}$33>!{A=o1=5#(VVPMNtt!j0es6bdk$&YIp*Iyv^c-Z~Ii}d+iK|weHMfOrtxa=Q&d_FJu}JlmEqR)hq@*N=!c=cSBHU(l z!)TI)*8nsy7GAsDBcy7tAj2w>SrF)e?-`9k2%cJ<*bUTMYKg_^+J@A{KYo)0cODGXkGO z5s9S12b*cmv-bBM>UWvg(UuHlJSjpKRC&caFhQ?^2b1$z?4BlQH0VLK9j!&`ybc1CVtlL5+v_EmF?MjK$qLzP2Pwr z(B2)J)vZKPVbSBOSjd0J3KSO0LxLpk09@CGk|!-YZgaYa-8Y0Sr%i0NUADdZy2En( zn3LZqi5et6BTk-9XhRo+8?Jmh-9V9A%u#4gtSo4YAjV{;m84H=7f6CV>Y3PyiF!5F z-0FlCN4MIUAyyZJSr@OVKE~;Zwl>mINnKUBe`?JUSY#!q9K34)+Wq3`kG4Oa=m*zs zi@IZ1j~bZnp|i8+HZe|O6_v$=>^pj0q8(tD+gC}7>?xN6p%WsB3IZlUyys*Z$8h~O zBV{9;nKkJ_R2_o}R4SdS1+dEMP>apwiDi#tox+5>&ibt<`}f-bDT7d@e_mlNm62N; zX=1jL#z*a&LL?agfE7o*p$76ISQ)2HRye2s_Zo*8uicq?j!!Qi;&a%aG6e2_J#Y7{ z(v>BwN2U-;$@|D;Pd9p>^af(S?B%>jQ6{DYDugLeM5L(_8WOwWMNqO4A#WhvsI!tA zlHmQ}p^(cUZF8)F_5N_n>G$2s9Pu@oHiVANCF6HnSY*J*t`E4iXN%Xs@wEoNbi>LmDCL9fo8;YM70oZ< zJxFaik04>fPaKMtSb+#_>D}2lr(cn6w1;A&BsBFNGSs1)Pe-7z1bb62I7B*E`Hg2S z>l|XCO?dw}81n5fpcUjAqq4j4e)Dy04!utrBaYp|PUR6zf2pfyW&E1!@@uq}TcQ43 ztp=-Z&jPF5Y|AehjK@m&6HU7Iy}hw$ysydD^2Ba*Xg6vjtn0WYX81rj<;S2ztlV*F zcojGtZ3T$}j^EEUY24Y$aCL-KIiE;`x+Cts27vYmp3nF;6~>n_>cN`xUMOFEqzCVq z=_Mjf>rFpok@$POjKNSOj(%^Ub?t*V6U0kSJPB!|pNk`v>-_%R{+&&Hvz}aMPOZfk z40+82$GD#UiqTr|S}`yj5loYd2@n{=T^~b8dot&sSW&{#-`% z|5lmx_g-zWv{eaSS{XU)DcODR>v0=WaG36yzNK>;V6`{dB<~;VXVk(Mm`0Gd`>81$ zGVr}c30{t!JnRkQ6?69;Zm(eGxZ+*QHJYmx_5M|a{5(m*(oMU**KN?3PzCd8wqlC% zIeFHzT|W>ITp9xZCBFvo9Vdm)n3W-R`_8TO;cY-2`1CYv@=NsTpXp0)aiT$vl;$A zLmSxVSaIv*z<cSffaF$9fxHA>Z?A7Sr@nDP?-84BmRGEOxKO;?2ki00@G5fR>BC*23!zA}4; zk7%y;+^oz*Rg#9>io0fs)^{`tEClWoOFL!Wo&f*{TQ`2s)(vn!-h7W?C#||pVSo&u zfsYEfx@#@=7_Vjsc=LKRBklbDA*7<-J+@L6-)O)yY74qi2y0Ke!=*;dn)Q=+B_5En-q|nR6*SU9j zCEza8CER9phUIApQToHQ( zLZfWk^8Aq4CME&2h`$?u9JzwiV!j#L1A0X9PqDxB=BSodv{ZT%Kt>tBYX%O(T z!xY-fg4X9#)aN@`4p8z6x!o86VBm*B_C(Zju5(%|af83!js&?tJ6rwnTOyIuVG(W>ey{=g}DMP2zIA5rY0XI;|%?xI}WSE0d=`Jok71Fk6)TbU+STm zOWns&L~@8#XFV;UF;VS9F<+6DL>>&l1p5|rR% zSC@VS%~trKBzxj`(d%3}e|Zsoc^lw!&}Es+S%|3OPYb7w28+#zVqs4g>gxA-eLet^ zr&D?0>XUWfZepqrfacz0xD+lSSG(kLyHa@K$LzR~8AHrRwjgml!IuU&tQ~4V7e($K z9GVl6m~-wakx{x1y)V}yF9a36PFuws)7CpXyD|uV9BgTWgX29{V1q{TyC2)(Q`0lwz490;-;LyqtWwmv=f)Mjn(()WYX_ZbpHUrf1w4w zBk3ryWd5v-{g#|RXku9Cv(qJ&1^mgbeuELj8=p_rF(9i$iPSwl^1WUZgP)4$Ye@fjL_ZUCDYLy7dbdx>MzwTVU2#@11v*+ zIBtP5t~wtBy{mWdWG2wGX1m~TWE}R^*z$W+_35cHa#_p}-Z;GF5-iKi`fC9@@?6B@ zF$d8SZqf#7O|#CA2gia!_t#hR?ZVMr4YJ2!iN4ppy^MauC&g$De^_X1u=np0lm_fs zT$Rc@aHo&@baYM7?;^irOylA_{P=5YqnlxzgAoySxm?a|{=91$Tk>j$l?FoGvZgR2 z8(mXKxRcuQGphs!$p9v(+v@FG`#T5Jubflxq^btU$4Bn6n96p<8yH!j=%O| z1Zb>Ca(Pmmmt3D?Od@ts9U*Y4|zd?M=LVIzYkyID&^UfH_ZbHxofQF2cYnawj%l|#iA(KyIn`Ygq_W{Pii)swOXpn8kIh z@7YEK5VLbf@k%0n^#+U`e*L{Hc~Ex=MrV^wIg9up^E`jxn^7~gIV!3!~3iH(E*8Pcav5gLo=hy zIUS!=5dq5ibwuJx8}Kag)Q_Z~#IS7v0zNRIYE|CPT}oq9b;0LvJ|irQ8&(!v$TL!$ z)hk}tPQht@+6|Tj^BS!)R^+$Y*zrWYp0akK2nr2lydS}YlQmTNVO+<%sD}kTP$qqU z@d%bT&+S#w0|CLRZAWQ?i;N4FbD}sy0c?2hX$$fM5?Dv7jc9C_e*46j7e1PaVxr?^ z)0J0u=gduBh*nVM6-DSdma9KE>Wh^a5N^P6Q=~f#`H;4Z!)~7(L`M)C6eYSOK}Zlfy6d=Va|uco@n2+^?(72MF@xz){Nl_K7Y{6Nofiu@_GmAQ=+$Y(Je& z)(Oa}VnKn@LNOe!zM-(~tcMds9vBvU_w-1*ZPEgXO6Zs)<6&gknmm8^@~o>eTo zwQ$F<=$DK>rF4n?J!s9Gp;m`-@duc< z`XFIfn0s=eO8v@)pUO5zRO>2BXQM^$1&@hq&<`=|nG-}uU;~-0s+36n?wZLU!{8e9 zk?C$g1n)Mayo=qQ65C4V?rMInY=iw(yE542#qS*uP?Y_WM-XW<9#HJIa3Rl8t8%S` zyVEc8BNbxj>J!n8i3HzRg5rZ*6B_-yHT!x)&`o}2eEkXZ!=@8&wm;XOKv|*B^3<1A zh4A{TKnNl8lSi}u@`w+BlD))2HloR+UElVUGUj^h1u^o`rw_(mG){2s9vtU& zpeZM~qui09E}LiFz^Icz-C9EnCiz6|NqC0+2gYhbo9Lf)o5c;dpDv%f99+!25~#Sj z>=Vboy@GpOZ!d4_Fjg+~XR)t=1?SKOGu;R(Gsy?ApF_gsfryY#oJ;#@F?-!1UKvST z3aF*u;_#T9D z^|||l%4tk$HTH%FTU+ieWygT1 diff --git a/plugin.video.youku2/resources/settings.xml b/plugin.video.youku2/resources/settings.xml index 8475d28..2080f94 100644 --- a/plugin.video.youku2/resources/settings.xml +++ b/plugin.video.youku2/resources/settings.xml @@ -1,5 +1,4 @@ - - + diff --git a/plugin.video.youkuvideo/LICENSE b/plugin.video.youkuvideo/LICENSE deleted file mode 100644 index 80ee640..0000000 --- a/plugin.video.youkuvideo/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - 网易公开课XBMC插件 - Copyright (C) 2013 tacy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/plugin.video.youkuvideo/README.md b/plugin.video.youkuvideo/README.md deleted file mode 100644 index 46c735c..0000000 --- a/plugin.video.youkuvideo/README.md +++ /dev/null @@ -1,2 +0,0 @@ -fork from https://github.com/XinFanTV/plugin.video.youku2 -========== diff --git a/plugin.video.youkuvideo/addon.py b/plugin.video.youkuvideo/addon.py deleted file mode 100644 index 8345fb8..0000000 --- a/plugin.video.youkuvideo/addon.py +++ /dev/null @@ -1,551 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -from xbmcswift2 import xbmc, Plugin, xbmcgui -import re -from json import loads -import gzip -import urllib -import urllib2 -import httplib -import base64 -import time -from StringIO import StringIO -from collections_backport import OrderedDict - -plugin = Plugin() -dialog = xbmcgui.Dialog() -filters = plugin.get_storage('ftcache', TTL=1440) -epcache = plugin.get_storage('epcache', TTL=1440) - -@plugin.route('/') -def showcatalog(): - """ - show catalog list - """ - url = 'http://www.youku.com/v/' - if url in epcache: return epcache[url] - result = _http(url) - catastr = re.search(r'yk-filter-panel">(.*?)yk-filter-handle', - result, re.S) - catalogs = re.findall(r'href="(.*?)".*?>(.*?)', catastr.group(1)) - menus = [{ - 'label': catalog[-1].decode('utf-8'), - 'path': plugin.url_for('showmovie', - url='http://www.youku.com{0}'.format(catalog[0])), - } for catalog in catalogs] - menus.insert(0, {'label': '【搜索视频】选择', 'path': plugin.url_for( - 'searchvideo', url='http://www.soku.com/search_video/q_')}) - menus.append({'label': '手动清除缓存【缓存24小时自动失效】', - 'path': plugin.url_for('clscache')}) - epcache[url] = menus - return menus - -@plugin.route('/searchvideo/') -def searchvideo(url): - """ - search video - """ - source = [('http://v.youku.com', 'youku'), - ('http://tv.sohu.com', 'sohu'), - ('http://v.qq.com', 'qq'), - ('http://www.iqiyi.com', 'iqiyi'), - ('http://www.letv.com', 'letv'), - ('http://v.pps.tv', 'pps'), - ('http://www.tudou.com', 'tudou')] - kb = xbmc.Keyboard('',u'请输入搜索关键字') - kb.doModal() - if not kb.isConfirmed(): return - sstr = kb.getText() - if not sstr: return - url = url + urllib2.quote(sstr) - result = _http(url) - movstr = re.findall(r'
(.*?)', result, re.S) - vitempat = re.compile( - r'{0}{1}'.format('p_link">.*?title="(.*?)".*?p_thumb.*?src="(.*?)"', - '.*?status="(.*?)"'), re.S) - menus = [] - site = None - for movitem in movstr: - if 'p_ispaid' in movitem or 'nosource' in movitem: continue - psrc = re.compile(r'pgm-source(.*?)
', re.S).search(movitem) - if not psrc: continue - for k in source: - if k[0] in psrc.group(1): - site = k - break - if not site: continue - vitem = vitempat.search(movitem) - - if 'class="movie"' in movitem: - eps = re.search(r'(%s.*?html)' % site[0], movitem, re.S).group(1) - menus.append({ - 'label': '%s【%s】(%s)' % ( - vitem.group(1), vitem.group(3), site[1]), - 'path': plugin.url_for('playsearch', url=eps, source=site[1]), - 'thumbnail': vitem.group(2),}) - - if 'class="tv"' in movitem or 'class="zy"' in movitem: - if 'class="tv"' in movitem: - epss = re.findall( - r'(%s.*?html).*?>([\w ."]+?)' % site[0], movitem, re.S) - else: - epss = re.findall(r'{0}{1}{2}'.format( - '"(?:(?:date)|(?:phases))">([\d-]+)\s+([^>]+?)<(?:(?:em)|(?:/a))(?s)'), - movitem) - epss = [(i[1], '[%s]%s' % (i[0], i[2])) for i in epss] - #epss = reversed([(k, v) for k,v in OrderedDict(reversed(epss)). - # iteritems() if '查看全部' not in v]) - epss = [(v[0], site[1], v[1]) for v in epss] - menus.append({ - 'label': '%s【%s】(%s)' % ( - vitem.group(1), vitem.group(3), site[1]), - 'path': plugin.url_for('showsearch', url=str(epss)), - 'thumbnail': vitem.group(2),}) - return menus - -@plugin.route('/showsearch/') -def showsearch(url): - """ - url: 0 is url, 1 is play site, 2 is title - """ - items = eval(url) - if len(items)>100: - items = sorted(list(set(items)), key=lambda item: int(item[2])) - menus = [{'label': item[2], - 'path': plugin.url_for('playsearch', url=item[0], source=item[1]), - } for item in items] - return menus - -@plugin.route('/movies/') -def showmovie(url): - """ - show movie list - """ - #filter key, e.g. 'http://www.youku.com/v_showlist/c90' - urlsps = re.findall(r'(.*?/[a-z]_*\d+)', url) - key = urlsps[0] - #filter movie by filters - if 'change' in url: - url = key - for k, v in filters[key].iteritems(): - if '筛选' in k: continue - fts = [m[1] for m in v] - selitem = dialog.select(k, fts) - if selitem is -1: return - url = '{0}{1}'.format(url,v[selitem][0]) - url='{0}.html'.format(url) - print '*'*80, url - - if url in epcache: return epcache[url] - - result = _http(url) - - #get catalog filter list, filter will be cache - #filters item example: - # key:'http://www.youku.com/v_olist/c_97' - # value: '{'地区':('_a_大陆', '大陆', ...)} - if key not in filters: - filterstr = re.search(r'yk-filter-panel">(.*?)yk-filter-handle', - result, re.S) - filtertypes = re.findall(r'