From 1249881879fa629c2be66c6c82e028550537165b Mon Sep 17 00:00:00 2001 From: yfang1644 Date: Wed, 29 Aug 2018 20:02:41 +0800 Subject: [PATCH] new structure for all plugins --- addons.xml | 167 +++-- plugin.audio.baidu/addon.xml | 10 +- plugin.audio.baidu/default.py | 8 +- ...1.0.1.zip => plugin.audio.baidu-1.1.0.zip} | Bin 12657 -> 12593 bytes .../plugin.audio.baidufm-0.0.5.zip | Bin 40911 -> 0 bytes plugin.audio.kuwo/addon.xml | 4 +- ...-2.2.4.zip => plugin.audio.kuwo-2.3.0.zip} | Bin 49637 -> 48519 bytes plugin.audio.kuwobox/addon.xml | 18 - plugin.audio.kuwobox/changelog.txt | 24 - plugin.audio.kuwobox/default.py | 605 ------------------ plugin.audio.kuwobox/icon.png | Bin 44838 -> 0 bytes .../plugin.audio.kuwobox-1.1.5.zip | Bin 52395 -> 0 bytes .../plugin.audio.qingting-1.0.1.zip | Bin 40101 -> 40101 bytes plugin.audio.xiami/addon.py | 337 ++++++++++ plugin.audio.xiami/addon.xml | 24 + plugin.audio.xiami/changelog.txt | 3 + plugin.audio.xiami/icon.png | Bin 0 -> 18620 bytes .../plugin.audio.xiami-1.0.1.zip | Bin 0 -> 21848 bytes plugin.audio.ximalaya/addon.py | 2 - plugin.audio.ximalaya/addon.xml | 4 +- ....4.zip => plugin.audio.ximalaya-1.1.0.zip} | Bin 25507 -> 25481 bytes plugin.video.baidu/addon.xml | 12 +- ...1.0.0.zip => plugin.video.baidu-1.1.0.zip} | Bin 33062 -> 33118 bytes plugin.video.bilibili/addon.xml | 8 +- plugin.video.bilibili/changelog.txt | 2 + plugin.video.bilibili/default.py | 9 +- plugin.video.bilibili/lib/.cookie | 9 + .../{resources => lib}/__init__.py | 0 .../{resources => }/lib/bilibili.py | 5 +- .../{resources => }/lib/bilibili_config.py | 0 plugin.video.bilibili/lib/biliparser.py | 64 ++ plugin.video.bilibili/lib/bilivideo.py | 142 ++++ .../{resources => }/lib/login_dialog.py | 0 .../{resources => }/lib/niconvert.py | 0 .../{resources => }/lib/pyasn1/__init__.py | 0 .../lib/pyasn1/codec/__init__.py | 0 .../lib/pyasn1/codec/ber/__init__.py | 0 .../lib/pyasn1/codec/ber/decoder.py | 0 .../lib/pyasn1/codec/ber/encoder.py | 0 .../lib/pyasn1/codec/ber/eoo.py | 0 .../lib/pyasn1/codec/cer/__init__.py | 0 .../lib/pyasn1/codec/cer/decoder.py | 0 .../lib/pyasn1/codec/cer/encoder.py | 0 .../lib/pyasn1/codec/der/__init__.py | 0 .../lib/pyasn1/codec/der/decoder.py | 0 .../lib/pyasn1/codec/der/encoder.py | 0 .../lib/pyasn1/compat/__init__.py | 0 .../lib/pyasn1/compat/octets.py | 0 .../{resources => }/lib/pyasn1/debug.py | 0 .../{resources => }/lib/pyasn1/error.py | 0 .../lib/pyasn1/type/__init__.py | 0 .../{resources => }/lib/pyasn1/type/base.py | 0 .../{resources => }/lib/pyasn1/type/char.py | 0 .../lib/pyasn1/type/constraint.py | 0 .../{resources => }/lib/pyasn1/type/error.py | 0 .../lib/pyasn1/type/namedtype.py | 0 .../lib/pyasn1/type/namedval.py | 0 .../{resources => }/lib/pyasn1/type/tag.py | 0 .../{resources => }/lib/pyasn1/type/tagmap.py | 0 .../{resources => }/lib/pyasn1/type/univ.py | 0 .../{resources => }/lib/pyasn1/type/useful.py | 0 .../{resources => }/lib/rsa/__init__.py | 0 .../{resources => }/lib/rsa/_compat.py | 0 .../{resources => }/lib/rsa/_version133.py | 0 .../{resources => }/lib/rsa/_version200.py | 0 .../{resources => }/lib/rsa/asn1.py | 0 .../{resources => }/lib/rsa/bigfile.py | 0 .../{resources => }/lib/rsa/cli.py | 0 .../{resources => }/lib/rsa/common.py | 0 .../{resources => }/lib/rsa/core.py | 0 .../{resources => }/lib/rsa/key.py | 0 .../{resources => }/lib/rsa/parallel.py | 0 .../{resources => }/lib/rsa/pem.py | 0 .../{resources => }/lib/rsa/pkcs1.py | 0 .../{resources => }/lib/rsa/prime.py | 0 .../{resources => }/lib/rsa/randnum.py | 0 .../{resources => }/lib/rsa/transform.py | 0 .../{resources => }/lib/rsa/util.py | 0 .../{resources => }/lib/rsa/varblock.py | 0 .../{resources => }/lib/subtitle.py | 0 ....6.zip => plugin.video.bilibili-1.1.0.zip} | Bin 396869 -> 398918 bytes plugin.video.cntv-live/addon.py | 3 +- .../plugin.video.cntv-live-2.0.10.zip | Bin 1170551 -> 1170553 bytes plugin.video.cntv-video/addon.xml | 13 +- plugin.video.cntv-video/default.py | 39 +- ....zip => plugin.video.cntv-video-1.2.0.zip} | Bin 79710 -> 56287 bytes plugin.video.funshion/addon.xml | 5 +- plugin.video.funshion/default.py | 2 +- .../lib/__init__.py | 0 .../lib/funshion.py | 0 ....1.zip => plugin.video.funshion-2.1.0.zip} | Bin 38191 -> 40979 bytes plugin.video.iqiyi/addon.xml | 5 +- plugin.video.iqiyi/default.py | 30 +- plugin.video.iqiyi/lib/__init__.py | 0 .../lib/iqiyi.py | 0 ...2.3.0.zip => plugin.video.iqiyi-2.4.0.zip} | Bin 52411 -> 54350 bytes plugin.video.letv/addon.xml | 5 +- plugin.video.letv/default.py | 2 +- plugin.video.letv/lib/__init__.py | 0 .../lib/letv.py | 0 ...-2.0.0.zip => plugin.video.letv-2.1.0.zip} | Bin 44776 -> 47551 bytes plugin.video.mgtv/addon.xml | 5 +- plugin.video.mgtv/default.py | 3 +- plugin.video.mgtv/lib/__init__.py | 0 .../lib/mgtv.py | 0 ...-1.0.2.zip => plugin.video.mgtv-1.1.0.zip} | Bin 12190 -> 13955 bytes plugin.video.pptv/addon.xml | 17 +- plugin.video.pptv/default.py | 4 +- plugin.video.pptv/lib/__init__.py | 0 .../lib/pptv.py | 0 ...-2.0.0.zip => plugin.video.pptv-2.1.0.zip} | Bin 142917 -> 146000 bytes plugin.video.qq/addon.xml | 5 +- plugin.video.qq/default.py | 2 +- plugin.video.qq/lib/__init__.py | 0 .../lib/qq.py | 0 .../lib/qq2.py | 0 ...qq-1.0.4.zip => plugin.video.qq-1.1.0.zip} | Bin 55280 -> 58210 bytes plugin.video.rrsp/addon.xml | 8 +- plugin.video.rrsp/default.py | 2 +- plugin.video.rrsp/lib/__init__.py | 0 .../{resources => }/lib/acfun.py | 0 plugin.video.rrsp/{resources => }/lib/rrmj.py | 0 ...-1.0.6.zip => plugin.video.rrsp-1.1.0.zip} | Bin 164633 -> 164791 bytes plugin.video.sohuvideo/addon.xml | 11 +- plugin.video.sohuvideo/default.py | 2 +- plugin.video.sohuvideo/lib/__init__.py | 0 .../lib/sohu.py | 0 ...1.zip => plugin.video.sohuvideo-2.6.0.zip} | Bin 62960 -> 64770 bytes plugin.video.tudou/addon.py | 20 +- plugin.video.tudou/addon.xml | 5 +- plugin.video.tudou/lib/__init__.py | 0 .../lib/tudou.py | 0 ...1.0.1.zip => plugin.video.tudou-1.1.0.zip} | Bin 79154 -> 80696 bytes plugin.video.tvonline/addon.xml | 39 +- plugin.video.tvonline/default.py | 1 - ....0.zip => plugin.video.tvonline-1.0.1.zip} | Bin 80381 -> 80398 bytes plugin.video.yinyuetai/addon.py | 164 +++++ plugin.video.yinyuetai/addon.xml | 7 +- plugin.video.yinyuetai/default.py | 7 +- plugin.video.yinyuetai/lib/__init__.py | 0 .../lib/yinyuetai.py | 0 ...1.zip => plugin.video.yinyuetai-1.9.0.zip} | Bin 23007 -> 24758 bytes plugin.video.yongjiu/addon.xml | 4 +- plugin.video.yongjiu/default.py | 6 +- ...0.2.zip => plugin.video.yongjiu-1.1.0.zip} | Bin 14193 -> 14172 bytes plugin.video.youku/addon.xml | 9 +- plugin.video.youku/default.py | 4 +- plugin.video.youku/lib/__init__.py | 0 .../lib/youku.py | 5 +- ...1.0.0.zip => plugin.video.youku-1.1.0.zip} | Bin 80925 -> 83540 bytes plugin.video.youkutv/addon.py | 16 +- plugin.video.youkutv/addon.xml | 5 +- ...7.9.zip => plugin.video.youkutv-1.8.0.zip} | Bin 870871 -> 870882 bytes script.module.geturl/addon.xml | 16 + script.module.geturl/changelog.txt | 2 + .../lib/common.py | 0 .../script.module.geturl-1.0.0.zip | Bin 0 -> 2705 bytes 157 files changed, 1057 insertions(+), 873 deletions(-) rename plugin.audio.baidu/{plugin.audio.baidu-1.0.1.zip => plugin.audio.baidu-1.1.0.zip} (72%) delete mode 100644 plugin.audio.baidufm/plugin.audio.baidufm-0.0.5.zip rename plugin.audio.kuwo/{plugin.audio.kuwo-2.2.4.zip => plugin.audio.kuwo-2.3.0.zip} (89%) delete mode 100644 plugin.audio.kuwobox/addon.xml delete mode 100644 plugin.audio.kuwobox/changelog.txt delete mode 100644 plugin.audio.kuwobox/default.py delete mode 100644 plugin.audio.kuwobox/icon.png delete mode 100644 plugin.audio.kuwobox/plugin.audio.kuwobox-1.1.5.zip create mode 100644 plugin.audio.xiami/addon.py create mode 100644 plugin.audio.xiami/addon.xml create mode 100644 plugin.audio.xiami/changelog.txt create mode 100644 plugin.audio.xiami/icon.png create mode 100644 plugin.audio.xiami/plugin.audio.xiami-1.0.1.zip rename plugin.audio.ximalaya/{plugin.audio.ximalaya-1.0.4.zip => plugin.audio.ximalaya-1.1.0.zip} (79%) rename plugin.video.baidu/{plugin.video.baidu-1.0.0.zip => plugin.video.baidu-1.1.0.zip} (96%) create mode 100644 plugin.video.bilibili/lib/.cookie rename plugin.video.bilibili/{resources => lib}/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/bilibili.py (99%) rename plugin.video.bilibili/{resources => }/lib/bilibili_config.py (100%) create mode 100644 plugin.video.bilibili/lib/biliparser.py create mode 100644 plugin.video.bilibili/lib/bilivideo.py rename plugin.video.bilibili/{resources => }/lib/login_dialog.py (100%) rename plugin.video.bilibili/{resources => }/lib/niconvert.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/ber/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/ber/decoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/ber/encoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/ber/eoo.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/cer/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/cer/decoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/cer/encoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/der/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/der/decoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/codec/der/encoder.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/compat/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/compat/octets.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/debug.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/error.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/base.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/char.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/constraint.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/error.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/namedtype.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/namedval.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/tag.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/tagmap.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/univ.py (100%) rename plugin.video.bilibili/{resources => }/lib/pyasn1/type/useful.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/__init__.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/_compat.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/_version133.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/_version200.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/asn1.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/bigfile.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/cli.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/common.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/core.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/key.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/parallel.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/pem.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/pkcs1.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/prime.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/randnum.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/transform.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/util.py (100%) rename plugin.video.bilibili/{resources => }/lib/rsa/varblock.py (100%) rename plugin.video.bilibili/{resources => }/lib/subtitle.py (100%) rename plugin.video.bilibili/{plugin.video.bilibili-1.0.6.zip => plugin.video.bilibili-1.1.0.zip} (90%) rename plugin.video.cntv-video/{plugin.video.cntv-video-1.1.7.zip => plugin.video.cntv-video-1.2.0.zip} (62%) rename {plugin.video.bilibili/resources => plugin.video.funshion}/lib/__init__.py (100%) rename {plugin.video.cntv-video => plugin.video.funshion}/lib/funshion.py (100%) rename plugin.video.funshion/{plugin.video.funshion-2.0.1.zip => plugin.video.funshion-2.1.0.zip} (80%) create mode 100644 plugin.video.iqiyi/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.iqiyi}/lib/iqiyi.py (100%) rename plugin.video.iqiyi/{plugin.video.iqiyi-2.3.0.zip => plugin.video.iqiyi-2.4.0.zip} (85%) create mode 100644 plugin.video.letv/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.letv}/lib/letv.py (100%) rename plugin.video.letv/{plugin.video.letv-2.0.0.zip => plugin.video.letv-2.1.0.zip} (82%) create mode 100644 plugin.video.mgtv/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.mgtv}/lib/mgtv.py (100%) rename plugin.video.mgtv/{plugin.video.mgtv-1.0.2.zip => plugin.video.mgtv-1.1.0.zip} (56%) create mode 100644 plugin.video.pptv/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.pptv}/lib/pptv.py (100%) rename plugin.video.pptv/{plugin.video.pptv-2.0.0.zip => plugin.video.pptv-2.1.0.zip} (94%) create mode 100644 plugin.video.qq/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.qq}/lib/qq.py (100%) rename {plugin.video.cntv-video => plugin.video.qq}/lib/qq2.py (100%) rename plugin.video.qq/{plugin.video.qq-1.0.4.zip => plugin.video.qq-1.1.0.zip} (82%) create mode 100644 plugin.video.rrsp/lib/__init__.py rename plugin.video.rrsp/{resources => }/lib/acfun.py (100%) rename plugin.video.rrsp/{resources => }/lib/rrmj.py (100%) rename plugin.video.rrsp/{plugin.video.rrsp-1.0.6.zip => plugin.video.rrsp-1.1.0.zip} (94%) create mode 100644 plugin.video.sohuvideo/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.sohuvideo}/lib/sohu.py (100%) rename plugin.video.sohuvideo/{plugin.video.sohuvideo-2.5.1.zip => plugin.video.sohuvideo-2.6.0.zip} (86%) create mode 100644 plugin.video.tudou/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.tudou}/lib/tudou.py (100%) rename plugin.video.tudou/{plugin.video.tudou-1.0.1.zip => plugin.video.tudou-1.1.0.zip} (92%) rename plugin.video.tvonline/{plugin.video.tvonline-1.0.0.zip => plugin.video.tvonline-1.0.1.zip} (96%) create mode 100644 plugin.video.yinyuetai/addon.py create mode 100644 plugin.video.yinyuetai/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.yinyuetai}/lib/yinyuetai.py (100%) rename plugin.video.yinyuetai/{plugin.video.yinyuetai-1.8.1.zip => plugin.video.yinyuetai-1.9.0.zip} (77%) rename plugin.video.yongjiu/{plugin.video.yongjiu-1.0.2.zip => plugin.video.yongjiu-1.1.0.zip} (73%) create mode 100644 plugin.video.youku/lib/__init__.py rename {plugin.video.cntv-video => plugin.video.youku}/lib/youku.py (97%) rename plugin.video.youku/{plugin.video.youku-1.0.0.zip => plugin.video.youku-1.1.0.zip} (91%) rename plugin.video.youkutv/{plugin.video.youkutv-1.7.9.zip => plugin.video.youkutv-1.8.0.zip} (97%) create mode 100644 script.module.geturl/addon.xml create mode 100644 script.module.geturl/changelog.txt rename {plugin.video.cntv-video => script.module.geturl}/lib/common.py (100%) create mode 100644 script.module.geturl/script.module.geturl-1.0.0.zip diff --git a/addons.xml b/addons.xml index 3b919a5..919a3e1 100644 --- a/addons.xml +++ b/addons.xml @@ -2,18 +2,19 @@ - + video + LeTV video plugin 乐视网插件 @@ -27,36 +28,41 @@ + + + video + YinYueTai video plugin 音悦台视频插件 Online MV from yinyuetai.com 观看音悦台在线MV https://github.com/yfang1644/kodi_plugins/plugin.video.yinyuetai - yfang1644@gmail.com + yfang1644@gmail.com all - + video + PPTV video plugin PPTV视频插件 @@ -119,18 +125,23 @@ - + + + + + video + SoHu Video plugin 搜狐视频插件 @@ -251,13 +262,15 @@ + + + point="xbmc.python.pluginsource" library="addon.py"> audio @@ -295,12 +308,14 @@ version="1.0.2" provider-name="yfang1644"> + - + video + Mangguo Video plugin MGTV 视频插件 @@ -362,16 +377,17 @@ - + video + IQIYI Video plugin 爱奇艺视频插件 @@ -415,44 +431,44 @@ - - - - - - video - - - - TV Live plugin - 地方电视台直播 - Stream live Nanjing TV and other local TV programs - 电视台直播 + + + + + + video + + + TV Live plugin + 地方电视台直播 + Stream live Nanjing TV and other local TV programs + 电视台直播 http://www.nbs.cn, http://www.haoqu.net/3/ - - GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007 - - + + GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007 + + https://github.com/yfang1644/kodi_plugins/plugin.video.tvonline yfang1644@gmail.com - all - + all + - + video + Funshion Video plugin 风行网视频插件 @@ -466,15 +482,16 @@ - + video + Tencent Video plugin QQ视频插件 @@ -488,15 +505,18 @@ - + + + video + 人人视频 人人视频 @@ -527,22 +547,23 @@ - + video + YouKu Video (plain version) 优酷视频插件(平铺版) online video from youku.com 优酷(www.youku.com)在线网络视频 https://github.com/yfang1644/kodi_plugins/plugin.video.youku - yfang1644@gmail.com + yfang1644@gmail.com all @@ -553,7 +574,8 @@ - + + video @@ -571,15 +593,17 @@ - + + video + 优酷TV @@ -592,17 +616,20 @@ + - + + video + Tudou video plugin 土豆在线视频 @@ -653,15 +680,24 @@ + + + " + + + + + + video - + CNTV video plugin CNTV 视频插件 @@ -679,7 +715,7 @@ - + audio @@ -737,12 +773,13 @@ + version="1.1.0" + provider-name="yfang1644"> - + + video @@ -759,12 +796,12 @@ - + video @@ -781,13 +818,15 @@ - + + + + - audio @@ -804,12 +843,20 @@ - + + + + + + + + + diff --git a/plugin.audio.baidu/addon.xml b/plugin.audio.baidu/addon.xml index 6475c45..1e16074 100644 --- a/plugin.audio.baidu/addon.xml +++ b/plugin.audio.baidu/addon.xml @@ -1,13 +1,15 @@ - + + + + - audio @@ -17,7 +19,7 @@ Baidu Music Kodi Plugin 百度音乐插件 https://github.com/yfang1644/kodi_plugins/plugin.audio.baidu - yfang1644@gmail.com + yfang1644@gmail.com all diff --git a/plugin.audio.baidu/default.py b/plugin.audio.baidu/default.py index 9bb2412..8846b5d 100644 --- a/plugin.audio.baidu/default.py +++ b/plugin.audio.baidu/default.py @@ -1,16 +1,12 @@ # -*- coding: utf-8 -*- from xbmcswift2 import Plugin -from urllib import quote_plus -import urllib2 from json import loads +from bs4 import BeautifulSoup +import re from common import get_html from iqiyi import video_from_vid as IQIYI_from_vid from yinyuetai import video_from_vid as YINYUETAI_from_vid -from bs4 import BeautifulSoup -import re - -__UserAgent = 'Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2' plugin = Plugin() url_for = plugin.url_for diff --git a/plugin.audio.baidu/plugin.audio.baidu-1.0.1.zip b/plugin.audio.baidu/plugin.audio.baidu-1.1.0.zip similarity index 72% rename from plugin.audio.baidu/plugin.audio.baidu-1.0.1.zip rename to plugin.audio.baidu/plugin.audio.baidu-1.1.0.zip index b702216e180c1b84d0c5b3241d401e1119555144..4d10c80d46ceb711451fa08b7210f389ff20fa74 100644 GIT binary patch delta 2851 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 diff --git a/plugin.audio.baidufm/plugin.audio.baidufm-0.0.5.zip b/plugin.audio.baidufm/plugin.audio.baidufm-0.0.5.zip deleted file mode 100644 index 08d77daa6536ffac308a15f3d3d2b7a0aa8c5645..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40911 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 z

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 - + diff --git a/plugin.audio.kuwo/plugin.audio.kuwo-2.2.4.zip b/plugin.audio.kuwo/plugin.audio.kuwo-2.3.0.zip similarity index 89% rename from plugin.audio.kuwo/plugin.audio.kuwo-2.2.4.zip rename to plugin.audio.kuwo/plugin.audio.kuwo-2.3.0.zip index abb090f8ffd4b14807fe161f0fb07315484e5ff1..03ffd3597c8d83f5a7a0f3c7d7d87bd959ca9a19 100644 GIT binary patch delta 3365 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 Hbq@apZG9Z- delta 4466 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 l&tvLlVdKDK>*nFW`@i!Q=-+%5Z`w+YyZX - - - audio - - -

KuwoBox audio plugin - 酷我音乐盒音乐插件 - KuwoBox audio plugin - 酷我音乐盒在线音乐 - https://github.com/yfang1644/kodi_plugins/plugin.audio.kuwobox - yfang1644@gmail.com - all -
-
diff --git a/plugin.audio.kuwobox/changelog.txt b/plugin.audio.kuwobox/changelog.txt deleted file mode 100644 index 7ec65f9..0000000 --- a/plugin.audio.kuwobox/changelog.txt +++ /dev/null @@ -1,24 +0,0 @@ -v1.1.5 (2015/01/04 osfans) -- 修正安卓脚本错误 -- 修正“分类”歌曲重复 - -v1.1.4 (2014/12/23 osfans) -- 修复所有栏目。 -- 使用beautifulsoup4 - -v1.1.3 (2013/06/13) -- 修复“歌手”栏目。 - -v1.1.2 (2013/06/05 by wenli380@gamil.com) -- 修正网站变化造成无法获取歌曲播放地址。 - -v1.1.1 (2012/10/28 by runner6502@gamil.com) -- change AAC to the first download. - -v1.1.0 (2011/12/04 by d44000) -- 全面支持酷我站内的音乐内容,增加音乐分类,专辑,等等。 -- 增加搜索功能,支持基于百度输入法的中文输入法插件 -- 暂不支持MV播放。(酷我网站不支持基于HTTP的MV播放,如有其它方法,请告知。) - -v1.0.0 (2009/11/08 by robinttt) -- 初始版本 diff --git a/plugin.audio.kuwobox/default.py b/plugin.audio.kuwobox/default.py deleted file mode 100644 index 1db9b50..0000000 --- a/plugin.audio.kuwobox/default.py +++ /dev/null @@ -1,605 +0,0 @@ -# -*- coding: utf-8 -*- - -#v1.0.0 2009/11/08 by robinttt, initial release -#v1.1.0 2011/12/04 by d744000, full web scraping, added search. - -import xbmc -import xbmcplugin -import xbmcgui -import xbmcaddon -import urllib -import urllib2 -import os -import re -import sys -import gzip -import StringIO #playvideo -import hashlib -import time -from bs4 import BeautifulSoup - - -UserAgent = 'Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0' -URL_BASE = 'http://yinyue.kuwo.cn' -MAX_TEST = 300 -INDENT_STR = ' ' -BANNER_FMT = '[COLOR FFDEB887]【%s】[/COLOR]' - - -# -# Web process engine -# -def getUrlTree(url, data=None): - if data and not isinstance(data, str): - # 2-item tuple or param dict, assume utf-8 - data = urllib.urlencode(data) - req = urllib2.Request(url, data, {'User-Agent': UserAgent}) - response = urllib2.urlopen(req) - httpdata = response.read() - response.close() - if response.headers.get('content-encoding', None) == 'gzip': - httpdata = gzip.GzipFile(fileobj=StringIO.StringIO(httpdata)).read() - # BeautifulSoup handles encoding, thus skip transcoding here. - - tree = BeautifulSoup(httpdata, "html.parser") - return tree - - -def make_param(query, url=None): - if url is None: - url = sys.argv[0] - param = "%s?%s" % (url, urllib.urlencode(query)) - return param - - -def addDir(name, url, mode, iconimage='DefaultFolder.png', context={}, folder=True, total=0): - if url == '#@': - url = params['url'] - elif url.startswith('/'): - url = URL_BASE + url - - param = {"url": url, "mode": mode} - param.update(context) - u = make_param(param) - - item = xbmcgui.ListItem(name, iconImage=iconimage, thumbnailImage=iconimage) - xbmcplugin.addDirectoryItem(pluginhandle, url=u, listitem=item, isFolder=folder, totalItems=total) - - -def endDir(cache=True): - xbmcplugin.endOfDirectory(pluginhandle, cacheToDisc=True) - - -context_params = {} - - -def driller(tree, lCont): - # global item - global context_params - if not isinstance(lCont, list): - lCont = [lCont] - - for cont in lCont: - result = None - context_params = cont.get('context', {}) - items = tree.find_all(*cont['tag']) - # print("to find:", cont) - for item in items: - # print('found') - if cont.get('vect', None): - try: - result = cont['vect'](item) - except: - pass - if result != 'DRILLER_NO_DEEPER': - if cont.get('child', None): - driller(item, cont['child']) - - -def processWebPage(tagHandler): - global tree - url = params['url'] - post = params.get('urlpost', None) - tree = getUrlTree(url, post) - driller(tree, tagHandler) - endDir() - - -def get_params(params): - param = {} - if len(params) >= 2: - if len(params) == 2: - params = params[1] - param = dict(urllib2.urlparse.parse_qsl(params)) - return param - - -# -# Keyboard for search -# -def processSearch(url): - key = get_params(url).get('key', None) - params['url'] = url - params['indent'] = INDENT_STR - params['search_key'] = key - processWebPage(searchList) - - -def searchDefaultKeyboard(key=None, mode='all'): - if key: - url = make_param({"key": key, 'type': mode}, 'http://sou.kuwo.cn/ws/NSearch') - processSearch(url) - else: - keyb = xbmc.Keyboard('', '搜索(可用拼音)') - keyb.doModal() - if keyb.isConfirmed(): - key = keyb.getText() - - -def searchChineseKeyboard(key=None, mode='all', pn=0): - if key: - url = make_param({"key": key, 'type': mode}, 'http://sou.kuwo.cn/ws/NSearch') - processSearch(url) - else: - # Somehow, current chinese keyboard implementation works differently than the - # default keyboard. The doModal doesn't prevent xbmcplugin from popping up the - # directory-scanning window, which covers up the keyboard window. - # A workaround is to terminate the directory, doModal, pass in keyboard input - # as new param of the container, then relaunch the container. - xbmcplugin.endOfDirectory(int(sys.argv[1])) - # 中文输入法 - keyboard = ChineseKeyboard.Keyboard('', '搜索') - keyboard.doModal() - if keyboard.isConfirmed(): - keyword = keyboard.getText() - if keyword: - u = make_param({'url': '', 'mode': 'search("%s")' % keyword}) - xbmc.executebuiltin('Container.Update(%s,replace)' % u) - - -# -# Media player -# -def get_content_by_tag(tree, tag): - f = tree.find(tag) - if f and f.contents: - return f.contents[0].encode('utf-8') - else: - return '' - - -def PlayMusic(): - mids = params['url'] - - playlist = xbmc.PlayList(xbmc.PLAYLIST_MUSIC) - playlist.clear() - mids = mids.split('/') - for mid in mids: - if mid == '': - continue - tree = getUrlTree('http://player.kuwo.cn/webmusic/st/getNewMuiseByRid?rid=MUSIC_'+mid) - title = get_content_by_tag(tree, 'name') - # kuwo has names like "song name(抢听版)", causing lyrics look up failure - true_title = title.split('(')[0].rstrip() - artist = get_content_by_tag(tree, 'artist') - iconimage = get_content_by_tag(tree, 'artist_pic240') - - # prefer AAC or WMA, somehow it starts or loads faster than the mp3 link, - # change AAC to the first download. edit by runner6502@gamil.com - path = get_content_by_tag(tree, 'aacpath') - dl = get_content_by_tag(tree, 'aacdl') - if not (path and dl): - path = get_content_by_tag(tree, 'path') - dl = get_content_by_tag(tree, 'wmadl') - if not (path and dl): - path = get_content_by_tag(tree, 'mp3path') - dl = get_content_by_tag(tree, 'mp3dl') - - if path and dl: - timestamp = ("%x" % int(time.time()))[:8] - hashstr = hashlib.md5("kuwo_web@1906/resource/%s%s" % (path, timestamp)).hexdigest() - url = 'http://%s/%s/%s/resource/%s' % (dl, hashstr, timestamp, path) - - listitem = xbmcgui.ListItem(title, iconImage=iconimage, thumbnailImage=iconimage) - listitem.setInfo(type="Music", infoLabels={"Title": true_title, "Artist": artist}) - playlist.add(url, listitem) - - xbmc.Player().play(playlist) - - -# -# Utilities -# -def addBanner(name): - ''' Add a banner, a button without action, but to separate groups of other buttons. ''' - # Burlywood color - if name: - name = BANNER_FMT % name - addDir(name, '', 'pass', '', folder=False) - - -def addH1Banner(item): - addBanner(item.h1.text.encode('utf-8')) - - -def addNav(item, mode): - item_url = extractHref(item) - if item_url == '#@': - return - name = extractName(item) - addDir(name, item_url, mode, '') - - -# -# Kuwo tag handlers -# -def extractName(item): - if not item: - return '' - name = '' - span_name = item.find('span') - if span_name: - name = span_name.contents[0] - elif item.has_attr('title'): - name = item['title'] - elif item.contents: - content = item.contents[0] - if 'String' in str(type(content)): - #BeautifulSoup NavigableString - name = content - else: - try: - name = content['title'] - except: - pass - return name.encode('utf-8') - - -def extractHref(item): - if item and item.has_attr('href'): - return item['href'].encode('utf-8') - return '' - - -def extractImg(item): - if item: - for k in ['lazy_src', 'sr', 'src', 'init_src']: - if item.has_attr(k): - return item[k].encode('utf-8') - return '' - - -def extractImgSearch(item, name=''): - iconimage = extractImg(item.find('img')) - if (not iconimage) and name: - attrs = {'title': unicode(name, 'utf-8')} - iconimage = extractImg(item.findChild('img', attrs)) - if not iconimage: - iconimage = extractImg(item.findPreviousSibling('img', attrs)) - if not iconimage: - iconimage = extractImg(item.findParent().findPreviousSibling('img', attrs)) - return iconimage - - -# -# XBMC plugin -# -def addLink(title, artist, url, mode, iconimage='', total=0, video=False): - u = make_param({'url': url, 'mode': mode}) - displayname = artist + ' - ' + title if artist else title - displayname = INDENT_STR + displayname - itemType = 'Video' if video else 'Music' - - item = xbmcgui.ListItem(displayname, iconImage=iconimage, thumbnailImage=iconimage) - item.setInfo(type=itemType, infoLabels={'Title': title, 'Artist': artist}) - xbmcplugin.addDirectoryItem(pluginhandle, url=u, listitem=item, isFolder=False, totalItems=total) - - -def addBillboardPhase(item): - nxt_idx = None - cur_idx = params.get('billboard_idx', item.find('li')['idx'].encode('utf-8')) - cur_item = item.find('li', {'idx': cur_idx}) - if cur_item: - tabDef = cur_item.find('p') - if tabDef and tabDef.contents: - params['playall_title'] = ('播放' + tabDef.contents[0].encode('utf-8') + '歌曲') - nxt_item = cur_item.findNextSibling('li') - if nxt_item: - nxt_idx = nxt_item['idx'].encode('utf-8') - - # previous billboard phase - if nxt_idx: - rgtArrow = item.find(attrs={'id': 'goRight', 'class': 'jtRig'}) - if rgtArrow and rgtArrow.has_attr('onclick'): - catId = re.search("getData\((\d+),1\)", rgtArrow['onclick']) - if catId: - catId = catId.groups()[0].encode('utf-8') - url = 'http://yinyue.kuwo.cn/yy/dd/BillBoardIndex' - post = 'cat='+catId+'&phase='+nxt_idx - context = {'urlpost': post, 'billboard_idx': nxt_idx, 'billboard_phases': str(item)} - addDir('查看前一期', url, 'processWebPage([songList])', '', context=context) - - -# 排行榜 -def addBoardMusic(item): - mid = item.find(attrs={'type': 'checkbox'}) - if not (mid and mid.has_attr('mid')): - return - mid = mid['mid'] - title = item.find(attrs={'class': 'songName'}).a['title'].encode('utf-8') - # artist page has album name in 'class songer', not artist name - artist = params.get('artist', '') - if not artist: - chld = item.find(attrs={'class': 'songer'}) - if chld and chld.findChild('a'): - chld = chld.findChild('a') - if chld.has_attr('title'): - artist = chld['title'].encode('utf-8') - addLink(title, artist, mid, 'PlayMusic()', '') - - -def addBoardMusicList(item): - if 'billboard_phases' in params: - print(params['billboard_phases']) - phase_item = BeautifulSoup(params['billboard_phases'], "html.parser") - addBillboardPhase(phase_item) - mids = item.find_all(attrs={'type': 'checkbox'}) - mids = [x['mid'] for x in mids if x.has_attr('mid')] - if mids: - mids = '/'.join(mids) - disp_title = params.get('playall_title', '播放全部歌曲') - iconimg = params.get('playall_icon', '') - addDir(disp_title, mids, 'PlayMusic()', iconimg, folder=False) - - -def addBoard(item): - name = extractName(item) - item_url = extractHref(item) - iconimage = extractImgSearch(item, name) - mode = 'processWebPage(boardMusicList)' - playall_title = '播放【%s】所含曲目' % name - context = {'indent': INDENT_STR, 'playall_title': playall_title, 'playall_icon': iconimage} - addDir(name, item_url, mode, iconimage, context=context) - - -# 歌手 -def addArtistMusicNav(item): - addNav(item, 'processWebPage(artistMusicPage)') - - -def addArtistNav(item): - addNav(item, 'processWebPage(artistListPage)') - - -def addArtistList(item): - item_url = extractHref(item.a) + "music.htm" - name = INDENT_STR + extractName(item.a) - iconimage = extractImg(item.a.img) - addDir(name, item_url, 'processWebPage(artistMusicPage)', iconimage) - - -def addArtistCategory(item): - item = item.h1 - item_url = "http://www.kuwo.cn%s" % extractHref(item.a) - name = item.contents[0].encode('utf-8') - addDir(name, item_url, 'processWebPage(artistListPage)', '') - - -# 分类 -def addHotMusic(item): - l = re.findall('"musiclist":(\[.+\]),"rids"', item.text) - if not l: - return - l = eval(l[0]) - mids = "/".join([d['musicrid'] for d in l]) - disp_title = params.get('playall_title', '播放全部歌曲') - iconimg = params.get('playall_icon', '') - addDir(disp_title, mids, 'PlayMusic()', iconimg, folder=False) - for d in l: - title = d['name'] - artist = d['artist'] - mid = d['musicrid'] - addLink(title, artist, mid, 'PlayMusic()', '') - - -def addHotMusicList(item): - ''' playlist item ''' - url = extractHref(item.a) - name = extractName(item.a) - iconimg = extractImg(item.a.img) - playall_title = '播放【%s】所含曲目' % name - context = {'indent': INDENT_STR, 'playall_title': playall_title, 'playall_icon': iconimg} - addDir(INDENT_STR + name, url, 'processWebPage(hotMusic)', iconimg, context=context) - - -def addHotList(item): - ''' playlist item ''' - url = extractHref(item.a) - name = extractName(item.a) - iconimg = extractImg(item.a.img) - playall_title = '' - context = {'indent': INDENT_STR, 'playall_title': playall_title, 'playall_icon': iconimg} - if name in hotSubList: - addDir(name, url, 'processWebPage(hotList)', iconimg, context=context) - else: - addDir(INDENT_STR + name, url, 'processWebPage(hotMusicListPage)', iconimg, context=context) - - -# 专辑 -def addMusic(item): - '''for mingxing and album''' - artist = item.find(attrs={'class': 's_name'}).a['title'].encode('utf-8') - title = item.find(attrs={'class': 'm_name'}).a['title'].encode('utf-8') - mid = item.find(attrs={'class': 'number'}).input['mid'].encode('utf-8') - addLink(title, artist, mid, 'PlayMusic()', '') - - -def addAlbumMusicList(item): - disp_title = params.get('playall_title', '播放全部歌曲') - iconimg = params.get('playall_icon', '') - mids = [i.input['mid'] for i in item.find_all(attrs={'class': 'number'})] - mids = "/".join(mids) - addDir(disp_title, mids, 'PlayMusic()', iconimg, folder=False) - - -def addAlbum(item): - # album item - url = extractHref(item.a) - title = extractName(item.a) - iconimg = extractImg(item.find('img')) - albumCont = item.findNextSibling(attrs={'class': 'albumCont'}) - playall_title = '播放【' + title + '】所含曲目' - dispname = title - context = {'indent': INDENT_STR, 'playall_title': playall_title, 'playall_icon': iconimg} - dispname = params.get('indent', '') + dispname - addDir(dispname, url, 'processWebPage(albumMusicList)', iconimg, context=context) - - -def addAlbumNav(item): - mode = 'processWebPage(albums)' - addNav(item, mode) - - -def addAlbumList(item): - item_url = extractHref(item.a) - name = item.a.string.encode('utf-8') - mode = 'processWebPage(albums)' - addDir(name, item_url, mode, '') - - -# 淘歌单 -def addPlaylistMusic(item): - s = item.string - if not s: - return - l = re.findall('wbarr =(.*?);', s) - if not l: - return - l = eval(l[0]) - mids = "/".join([d['rid'].split('_')[1] for d in l]) - disp_title = params.get('playall_title', '播放全部歌曲') - iconimg = params.get('playall_icon', '') - addDir(disp_title, mids, 'PlayMusic()', iconimg) - for d in l: - title = d['name'] - artist = d['art'] - mid = d['rid'].split('_')[1] - addLink(title, artist, mid, 'PlayMusic()', '') - - -def addPlaylistAlbum(item): - iconimg = extractImg(item.find('img')) - item = item.find('a', attrs={'class': 'gdPlay'}) - url = extractHref(item) - title = extractName(item.find_previous_sibling('a')) - playall_title = '播放【%s】' % title - playall_icon = iconimg - score = item.find_next_sibling().text.encode('utf-8') - dispname = '%s【%s】' % (title, score) - context = {'indent': INDENT_STR, 'playall_title': playall_title, 'playall_icon': iconimg} - dispname = params.get('indent', '') + dispname - addDir(dispname, url, 'processWebPage(playlistMusic)', iconimg, context=context) - - -def addPlaylist(item): - addBanner(item.text.encode('utf-8')) - items = item.find_next_sibling().find_all('li') - for item in items: - item = item.a - name = extractName(item) - item_url = extractHref(item) - iconimage = extractImgSearch(item, name) - addDir(name, item_url, 'processWebPage(playlistAlbum)', iconimage) - - -# 搜索 -def addSearch(item): - name = BANNER_FMT % item.h1.text.encode('utf-8') - item_url = extractHref(item.h1.a) - if item_url: - mode = 'processSearch("%s")' % item_url - else: - mode = 'pass' - addDir(name, item_url, mode, '') - - -def addSearchNav(item): - item_url = extractHref(item) - mode = 'processSearch("http://sou.kuwo.cn%s")' % item_url - addNav(item, mode) - - -# 标签 -boardMusic = {'tag': (None, {'class':'itemUl'}), 'vect':addBoardMusic} -boardMusicList = {'tag': (None, {'id':'container'}), 'vect':addBoardMusicList, 'child': boardMusic} -board = {'tag':('a',{}), 'vect':addBoard} -boardPage = {'tag':('ul',{'class':['borLr', 'chartList']}), 'child': board} - -artistMusic = {'tag': ('li', {'class': 'clearfix'}), 'vect': addMusic} -artistMusicNav = {'tag': ('a', {}), 'vect': addArtistMusicNav} -artistMusicNavPage = {'tag': ('div', {'class': 'page'}), 'child': artistMusicNav} -artistMusicPage = [artistMusic, artistMusicNavPage] -artistListItem = {'tag': ('li', {}), 'vect': addArtistList} -artistList = {'tag': ('ul', {'class': ['singer_pic_list', 'singer_name_list']}), 'child': artistListItem} -artistNav = {'tag': ('a', {}), 'vect': addArtistNav} -artistNavPage = {'tag': ('div', {'class': 'page'}), 'child': artistNav} -artistListPage = [artistList, artistNavPage] -artistCategory = {'tag': ('div', {'class': 'top'}), 'vect': addArtistCategory} -artistPage = {'tag': ('div', {'class': 'singer'}), 'child': artistCategory} - -hotMusic = {'tag': ('script', {}), 'vect': addHotMusic} -hotMusicList = {'tag': ('li', {}), 'vect': addHotMusicList} -hotMusicListPage = {'tag': ('ul', {'class': 'singer_list clearfix'}), 'child': hotMusicList} -hotList = {'tag': ('li', {}), 'vect': addHotList} -hotPage = {'tag': ('div', {'class': 'hotlist'}), 'vect': addH1Banner, 'child': hotList} -hotSubList = {'评书', '有声读物', '歌手'} - - -albumMusic = {'tag': ('li', {}), 'vect': addMusic} -albumMusicList = {'tag': ('div', {'class': 'm_list'}), 'vect': addAlbumMusicList, 'child': albumMusic} -album = {'tag': (None, {'class': 'music clearfix'}), 'vect': addAlbum, 'child': None} -albumNav = {'tag': ('a', {}), 'vect': addAlbumNav} -albumNavPage = {'tag': ('div', {'class': 'page'}), 'child': albumNav} -albums = [album, albumNavPage] -albumList = {'tag': ('li', {}), 'vect': addAlbumList, 'child': None} -albumPage = {'tag': (None, {'class': 'sdlist clearfix'}), 'vect': addH1Banner, 'child': albumList} - -playlistMusic = {'tag': ('script', {}), 'vect': addPlaylistMusic} -playlistAlbum = {'tag': ('div', {'class': 'albumItem'}), 'vect': addPlaylistAlbum} -playlistBanner = {'tag': ('p', {'class': ['mTitBg', 'titYh', "titYh titLr"]}), 'vect': addPlaylist} -playlistPage = {'tag': ('div', {'class': 'mw300'}), 'child': playlistBanner} - -searchArtist = {'tag': ('div', {'class': 'hotSinger'}), 'vect': addSearch, 'child': artistListItem} -searchMusic = {'tag': ('div', {'class': 'm_list'}), 'vect': addSearch, 'child': albumMusic} -searchAlbumItem = {'tag': ('li', {}), 'vect': addAlbum} -searchAlbum = {'tag': ('div', {'class': 'album'}), 'vect': addSearch, 'child': searchAlbumItem} -searchNav = {'tag': ('a', {}), 'vect': addSearchNav} -searchNavPage = {'tag': ('div', {'class': 'page'}), 'child': searchNav} -searchList = [searchArtist, searchMusic, searchAlbum, searchNavPage] - - -# main program goes here ###################### -# Choose ChineseKeyboard if script.module.keyboard.chinese is installed. -try: - import ChineseKeyboard - search = searchChineseKeyboard -except: - search = searchDefaultKeyboard - - -pluginhandle = int(sys.argv[1]) -params = sys.argv[2][1:] -params = dict(urllib2.urlparse.parse_qsl(params)) -mode = params.get('mode', None) -if mode: - exec(mode) -else: - # params['url'] = URL_BASE - addDir('搜索', '', 'search()') - addDir('排行榜', 'http://yinyue.kuwo.cn/billboard_%E9%9B%AA%E7%A2%A7%E6%98%8E%E6%98%9F%E6%A6%9C.htm', 'processWebPage(boardPage)') - addDir('歌手', 'http://www.kuwo.cn/mingxing', 'processWebPage(artistPage)') - addDir('分类', 'http://yinyue.kuwo.cn/category.htm', 'processWebPage(hotPage)') - addDir('专辑', 'http://www.kuwo.cn/album', 'processWebPage(albumPage)') - addDir('淘歌单', 'http://fang.kuwo.cn/p/st/PlCat', 'processWebPage(playlistPage)'); - - endDir() diff --git a/plugin.audio.kuwobox/icon.png b/plugin.audio.kuwobox/icon.png deleted file mode 100644 index dc518ebb940e1a7da57d7e7b8d8070e2e98c3210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44838 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

FDw%khn>IcF7< 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

Pux1cu7PAQ&333QXzI# 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////') +def playMV(source, tvid, vid, mvid, url): + if source == 'iqiyi': + urls = IQIYI_from_vid(tvid, vid) + + elif source == 'yinyuetai': + match = re.search('yinyuetai.com.*/(\d+)', url) + urls = YINYUETAI_from_vid(match.group(1)) + + url = 'stack://' + ' , '.join(urls) + plugin.set_resolved_url(url) + +@plugin.route('/MVList/') +def MVList(url): + if url[0] == '/': + url = HOST + url + page = get_html(url) + songs= re.findall('data.push\((.+)\)', page) + items = [] + + for str_item in songs: + item = loads(str_item) + songId = item['songId'] + albumId = item['albumId'] + albumTitle = item['albumTitle'] + author = item['author'] + authorId = item['authorId'] + tvid = item['tvid'] + vid = item['vid'] + mvid = item['mvid'] + file_link = item.get('file_link') + if file_link is None: + file_link = '' + + items.append({ + 'label': item['title'], + 'path': url_for('playMV', + source=item['source'], + tvid='0' if tvid == '' else tvid, + vid='0' if vid == '' else vid, + mvid='0' if mvid == '' else mvid, + url=file_link), + 'info': {'title': item['title'], 'duration': item['time']}, + 'is_playable': True + }) + + return items + + +@plugin.route('/musiclist/') +def musiclist(url): + if url[0] == '/': + url = HOST + url + + page = get_html(url, decoded=True) + tree = BeautifulSoup(page, 'html.parser') + soup = tree.find_all('li', {'class': 'mv-item'}) + + items = [{ + 'label': item.a['title'], + 'thumbnail': item.img['org_src'], + 'path': url_for('MVList', url=item.a['href']), + } for item in soup] + + items += pageList(tree, 'musiclist') + + return items + + +@plugin.route('/mv') +def mv(): + page = get_html(HOST + '/mv/ml') + tree = BeautifulSoup(page, 'html.parser') + soups = tree.find_all('ul', {'class': 'clearfix'}) + + items = [] + for soup in soups: + p = soup.find_all('li') + for item in p: + items.append({ + 'label': item.text.strip(), + 'path': url_for('musiclist', url=item.a['href']) + }) + + return items + +@plugin.route('/playBD/') +def playBD(sid): + data = loads(get_html( + HOST + '/data/music/fmlink?songIds=%s' % sid + ))['data'] + + if data['xcode'] != '': # inside china mainland + url = data['songList'][0]['songLink'] + plugin.set_resolved_url(url) + + +@plugin.route('/taglist/') +def taglist(url): + if url[0] == '/': + url = HOST + url + + page = get_html(url, decoded=False) + tree = BeautifulSoup(page, 'html.parser') + soups= tree.find_all('span', {'class': 'music-icon-hook'}) + + items = [] + + for item in soups: + js = loads(item['data-musicicon']) + albumId = js['albumId'] + + items.append({ + 'label': js['songTitle'], + 'path': url_for('playBD', sid=js['id']), + 'is_playable': True, + 'info': {'title': js['songTitle']} + }) + + items += pageList(tree, 'taglist') + return items + +@plugin.route('/tag') +def tag(): + page = get_html(HOST + '/tag') + tree = BeautifulSoup(page, 'html.parser') + items = [] + soups = tree.find_all('dl', {'class': 'tag-mod'}) + + for soup in soups: + items += [{'label': BANNER_FMT % soup.dt.text, 'path': url_for('stay')}] + p = soup.find_all('span', {'class': 'tag-list clearfix'}) + for item in p: + items.append({ + 'label': item.text.strip(), + 'path': url_for('taglist', url=item.a['href']) + }) + + return items + +@plugin.route('/artistAlbum/') +def artistAlbum(url): + if url[0] == '/': + url = HOST + url + + page = get_html(url, decoded=False) + tree = BeautifulSoup(page, 'html.parser') + pages = tree.find_all('div', {'class': 'page-inner'}) + + items = [] + + # songs + items += [{'label': '单曲', 'path': url_for('stay')}] + soup1 = tree.find_all('div', {'class': 'song-list-wrap'}) + soups = soup1[0].find_all('span', {'class': 'music-icon-hook'}) + for item in soups: + js = loads(item['data-musicicon']) + albumId = js['albumId'] + + items.append({ + 'label': js['songTitle'], + 'path': url_for('playBD', sid=js['id']), + 'is_playable': True, + 'info': {'title': js['songTitle']} + }) + + items += pageList(pages[0], 'artistAlbum') + + # albums + items += [{'label': '专辑', 'path': url_for('stay')}] + soup2 = tree.find_all('div', {'class': 'album-list-wrap'}) + soups = soup2[0].find_all('div', {'class': 'album-cover'}) + for item in soups: + js = loads(item['data-albumdata']) + items.append({ + 'label': js['albumTitle'], + 'thumbnail': js['albumPic'], + 'path': url_for('taglist', url='/album/'+js['id']), + }) + + items += pageList(pages[1], 'artistAlbum') + + # mvs + items += [{'label': 'MV', 'path': url_for('stay')}] + soup3 = tree.find_all('div', {'class': 'mv-list-wrap'}) + soups = soup3[0].find_all('li', {'class': 'mv-item'}) + for item in soups: + items.append({ + 'label': item.a['title'], + 'thumbnail': item.img['org_src'], + 'path': url_for('MVList', url=item.a['href']), + }) + items += pageList(pages[2], 'artistAlbum') + return items + + +@plugin.route('/artistName/') +def artistName(url): + if url[0] == '/': + url = HOST + url + + page = get_html(url) + tree = BeautifulSoup(page, 'html.parser') + soups = tree.find_all('ul', {'class': 'clearfix'}) + items = [] + for soup in soups: + p = soup.find_all('li') + for item in p: + try: + items.append({ + 'label': item.text.strip(), + 'path': url_for('artistAlbum', url=item.a['href']) + }) + except: + pass + + return items + +@plugin.route('/artist') +def artist(): + page = get_html(HOST + '/artist') + tree = BeautifulSoup(page, 'html.parser') + soups = tree.find_all('dl', {'class': 'tree_main'}) + + items = [] + for soup in soups: + p = soup.find_all('dd') + for item in p: + items.append({ + 'label': item.text.strip(), + 'path': url_for('artistName', url=item.a['href']) + }) + + return items + +#排行榜 +@plugin.route('/chart') +def chart(): + pass +#专辑 +@plugin.route('/album/') +def album(url): + thisPage = [ + ('全部', 'all'), + ('华语', 'huayu'), + ('欧美', 'oumei'), + ('日本', 'ri'), + ('韩国', 'han')] + if url == '0' + url = HOST + '/music/newalbum?' + + for x in thisPage: + yield { + 'label': x[0], + 'path' : url_for('album', url=url+'type='+x[1]) + } + +#艺人 +@plugin.route('/artist/') +def artist(url): + pass +#曲风 +@plugin.route('/genre/') +def genre(url): + pass + + +@plugin.route('/homepage/') +def homepage(url): + page = get_html(HOST) + tree = BeautifulSoup(page, 'html.parser') + soup = tree.find_all('div', {'class': 'songlist-tag'}) + soups = soup[0].find_all('dl') + + items = [] + for soup in soups: + items += [{'label': BANNER_FMT % soup.dt.text, 'path': url_for('stay')}] + p = soup.find_all('dd') + for item in p: + items.append({ + 'label': item.text.strip(), + 'path': url_for('albumlist', url=item.a['href'].encode('utf-8')) + }) + + return items + + +@plugin.route('/') +def root(): + mainlist = [ + {'热门': 'homepage'}, + {'排行榜': 'chart'}, + {'专辑': 'album'}, + {'艺人': 'artist'}, + {'风格': 'genre'} + ] + + items = [{ + 'label': item, + 'path': url_for(mainlist[item], url=HOST), + } for item in mainlist] + + return items + +if __name__ == '__main__': + plugin.run() diff --git a/plugin.audio.xiami/addon.xml b/plugin.audio.xiami/addon.xml new file mode 100644 index 0000000..760feba --- /dev/null +++ b/plugin.audio.xiami/addon.xml @@ -0,0 +1,24 @@ + + + + + + + + + + audio + + +

Xiami audio plugin + 虾米音乐插件 + Xiami Music Kodi Plugin + 虾米音乐插件 + https://github.com/yfang1644/kodi_plugins/plugin.audio.xiami + yfang1644@gmail.com + all +
+
diff --git a/plugin.audio.xiami/changelog.txt b/plugin.audio.xiami/changelog.txt new file mode 100644 index 0000000..0876c1b --- /dev/null +++ b/plugin.audio.xiami/changelog.txt @@ -0,0 +1,3 @@ + +2017.11.18 +- 初始版本 diff --git a/plugin.audio.xiami/icon.png b/plugin.audio.xiami/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c08b69d8ed214a4804c7553744464440d476b1e6 GIT binary patch literal 18620 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 literal 0 HcmV?d00001 diff --git a/plugin.audio.xiami/plugin.audio.xiami-1.0.1.zip b/plugin.audio.xiami/plugin.audio.xiami-1.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..babc9e9560766506d30a885beffb4f7a92517585 GIT binary patch literal 21848 zcmZshLyRzh5~RoTk8RtwZQHhO+qP}nwr$(C_q~@rZMKuD^rgRhS4v(A7z7gFzoVIh zBlExI{~8hiHh{ggi2yzY#0PsJP z{|^lLKj;4doYfqqz@Sur3nM#QT6a=P>z1RT|Pjo6-Y--C#QxZ%S%v z&xzni7VVWo^m&VjNCPu4qU01mFyxDDS_oAV5eI(9Yl>&+|9OWsqun9uJqT5h5)r3(F$zye>{!t&5X zJ||w^_0vCB-Jj^1GkEB}T`YgrWcNv5Id`F^y}ZJ{ zFOc39=t|ukmkjCBSEa534Z=!4Xi$&P^B2;G02YFI#Upq@58W1X5r4@A97I?;i!G3Q z213;$xFTHnnbt~nSVlsIgX|8eG5~HhHzc>4zl9@CL}hQ|^6Gmy1~L3sLEZ{?y>HJ5 z?}5&Puy+d1;2db({~ZeE4vjLm{z8^U@j-NpJEd?V#uW=G5MA=y`5z$Y_-)3bGfAXP zAVNqj(9po~@&VUEQ8f_p!mOlK_=aWZz!P-qD;F%b-I)tEyjA?QdP0tiF?Qs&jhs#) z3@+@0ocpHidr=nSbz44=_DC)W;Mi1&fFlb=81fTAk_m?3b7llczI24_+-sA=q5@v` zfV)wEUYkJYi|MCB4xshcf9d2ez(k@QaS;1z!5ofl1Jp1%e+%pR5k2A_HLO*wAd+MH zPA!xW91gORgGDCJD#@X1wvM_h5IQo!=nUByk%a0E+#BNJ*f7Y$ZV>$AYp1G?34&#i zeQy`p&EtIqZh3+IwFGmPKAqc3{Z@curPo6H#%#lYhZUAFC9ET8RY)dp0A6>Y9kH{J_pRccMvR0Ggp2xH>J!sIh+nW3pKXahKZy(fPet$)1`Xs=0kwU z^zhNE_n$re?T&d7a{rwgfmC+->pVDBGeXpp4fc7*^ymO|thh3Xp(rkmcKJdA+#pYoH?G4Gc_ zEGO^&gyqcv9bZ#;nUoF6Emuf08iWZmpE_N>pOQxLoc!mw90ijJ{(Q|^ zeQ_f+ie^=w@h(#N;?ZPwdj>dAmO$X>?AI?{Ky_b8r1Bg?hycNc%LnA_DC;ME}|&Vf6bt#6$l z5;d`YweTk&KhQlU>YH>34R@;mBsmGrjo`(Xw@srEFD}$Ok3a4N!}t9U>U#<-qL@-3 z=Z_+19ODxkAPmHl45*sIoJY1$uZqd{z->A9oBDmHYPSuc=C}P1WqI=21|$aa90->s z0}obUgCD#+_<;c2D!s=!<3&%U$VG&=ckifkU?Y)3UBRS1KARQ-O|oV}Ne* z<3`HJlB9qeXt}@5v!__uq?&uRcMIzW8ZgH~-U;cK`q`-oB6f;-0=(cyA?db;jEkBL z?>7<}GR|I8*FQjS;{i^w?U};7H9sCfR6Z~pzM)vqFZh&rUCh#sS2nCoV-ywu4$Ce# z(9Vn2PF-$Mepx?8{@`l8sSbJQJV|T$h^g@frJ$;M8KC?$_$`haP2t@h$M&CPq+cKS z%%KQMRX#4rH41|4KeERGsOArsLNv4;Oza5`4?lS4SRrk|c*AfU1hV$MV6HJwxczLx zrsI35f9-?}QuM13hBcRp!uYb4i|XO;X0+1C^JI!4_(05bl9F_)XwUCo?lSD7!wCnt_rQC)lnY>!xIp7OrI++@uKY$cwE1l zLzJDxC|)@F~;~*yo@ShD}{+-RdsbS08*#=yHKDV3^odOlPSGKum^<6f{LCA4gh&58@ z>BCxx^y+&Eh^@%@>zo(3JoNrn!DHJ@eOKt-d!?wU)B=Bb`JWHlu&v)gM3UvK&BbJX zVAy!kY_2rky8?ySa`O}Ak~tQoy=|6K8|+I1fCM^Fsjq9qVy%D}n zn5s*nK6&aFjqX~7b_AigOHb%#{yb7m_VP)5GfbvGOq+C8^w)d zZtL}m!FlvMG06aJ!eos?6%gyB7-N)=xaD_=VOG4Iea~EwW-<2yG=Gq3B5Sf=r~)n* zZy?&TS4Wm0#+bgc3LPKKd`z1n!D4eehis_<<;NCI7Kev5g&Dr zI=y6}7Z?pHcn}gSXYGjn%qR%;^73u-*EVeCrpMUO@2n++0$sOV*vl;6EmShOeALOe zO6!dQpOt^D_1OHPR=x)$_S4?#9>`{^olDo8fMem`a_twNkIn5%BSc(GRX$M-f$S5Z zO5!*uMYhq>+%H%^K&6fKso(j=Mr{7bpFzgM-tmqIGEOe*1sSI!h=+S30UtO(UaCOw zkv`e*9uWf%yj01Qn=`qjW&_Cn^mh*PrRMwiM0SCQi)>LNb`VTpyvFJHBeGk(H5tvI zq-Q96K0zjqAYPjXsj$iES@0>^(&nH}47s%KmC{(c2J=)dS`#5dTBxF_rwBN?llu;lIqKobJ(Vw??; zJi(@zzP?7RK@=Y%9P?FU+BFlKe46Qu2T83vlT1qu+jnVIu|EACj&YTJ5e?cW+Gi`x zhZZMJ1xb5{1L$@eMq8=P>R;ueNS;Z_QEdU(y1T1KM$%Geq=)JZ z!H0EcMc*8}tA~hNXKh?Le6%SaNM#1eiQnqK?kIx$Z6mJhS%JuG@wUQ;VfmZG6hU@! z9CD)@q`cjunvbm^QU)|<7xesKOlbOW?jWLdo>cF|1wlgb*1NtxvZ<5Cnd;B4eFrKG znx8KL%ZI*>Hoa*y9aDXS69h|OVFCZnwfhlUm;8fmAgn?$d0~LiQz^m)lzKem#R!C}?_sap} zV~x*uXQi%L@;Y0{y-4}C%jix~_?RohL8_vojNQrN@%m1*_)YS5f8wOWTvwv|(%6Skx2p`L4za~>O@_N{h$nHznbmD3mffqq}a+@z3w?5^{b z>2qmr=DYt!WNkCAjpH+VVC~YVDMe`kHMK20fQxsAy)_1dOCNOMMT*#h#AgLyqK*sQ zbGEo;%x}0YTGHNffZG5fUe;XIr=Nlg2@l@4fL{5)B?C&GUzZh9^NDWl1{KaPkrXa= z+0A;5tQDL^yAdZk`)m8+_ESr4ZruEM^go{X4_=U53N0WmI7PFv>Kw!o^ljMZQqM9E zf$iQTgh+OUit-7IH1$;*+!gxi1fkMC#67@T?x0RZ@a@AI2wRS2&jjz%fzt+L1Y9Yd z9-To-Hz0`LjKE#2F#sphp3lj9TK#?VgsiDc=k6FH`xE@c&N#dJ7)YHLpwqh0ZTeb% zjda=*{(;W&XuiYoWTjD#&!zJKM2f_m#Oi%D?bF&64%Q=!ShDO+c-1LX07fHwdG{wV zzby`9&aIki&ZmVXdP-SuX9sSJPXfkV5U_spFqluoGx70$aIKmzin)v)|MO`cHUXwC zZIvH1ytZ@R%_OI0H=*U*T_HoJ-V3{H-ac5B@O5yLpe8QnRrMusOowkIi}MtW%buCn zl~>%y`79HzJ`f0QbKwRr-Wac-%Q2Tru>U*u{t!(B!j+@$NBYgfR>slk$9S?@?d zv2i6N^h=~#QXHr%%$v7Xo=ctPEgRD5 zO#N+o^w?6udCZYRW?PN0sPFt*{R;HwR=>7tH<(2*M1rsFXs6o~t11vEon0FN4e=hVcMZ?t?7@^D#6YhY=&M*{#asg- zsl7TrguxlaePFWwUMe3MjsUMAK;8&MTP0usR1@q`!?(g#P5fk3U_xhRVJZsNjgP?e5 zPMef({C!@;;*R|A^QWM{2eDc2w6n^-~1#^LT+y15@&*U8D`vwBVj=D zq>HZ77eWtUcx68N>s2@*iha*&`=qmt(ukfe$}c(KAuRZL zpmR?1(m>vAkHS@hE_1^0Kra*J(#L^6AZ=Zl(wRDkMz#I+Oe|5sKm|E0oW}Pq=>RW@ zL*ToN`_iF^pa01K*1l_f0YJ{|O0)VGvjY2PY{@$dsVIn!hTXr!TvWbEy7kuHnd=*u z>^Zzk7teo&)&~g!5F;9!ak6in#y-X*k-l&=G5w|tx00X}f!vDQ+r*8#{|2AJBL#J= z)@b-DM)ev@2TKk>Ypg4moig*eK(ym=*-Ra}!8OA0PMp!NMeN;PUf?;1ddttRM(REP z5GVqqpaOKJQ$?a->|Q0h^8NrB!)9jQWZ#k9?}GdyNSLLSYU>ndRkXoM3nk@}phxOb`+E7}`EB+*~fuhS9&fcl?Wshdj8lUAPtzBOf zU}@c8UEO#fa2k{0g~_icF4N7~hiZ%Nzx?YYg`v&80en@1#6Hy-U3s%p4=SF@=c_05 zd!68oKX#Dnjzkx(Z(=bZJRf#D-c)ZY1B8AdA3KLDr9Vu`9Q8n>92$vUpSRdWl}h&C zni~2v_DrheAT7EuT^u69Ix2~YC0Dc(g?<%54Lw-(jR`&Yg7H8qSvo_9f?d5B#^iYN z3(eL%6K>4xOx1N;VsOTCuE|lyUy-R&@Kf)0nL-Mt<8FsTNowJjAqmj19QuAa=;J$u zr!S1!G;$ls_5Q#pg-H#>Do=FX3rBHSz&C}?5@gn!@+aEYF^MSVVVJzIlIg@H8OyL*HY}F`#OMYIcNe=M#q6vcsAY`UTs#<3 z0{A&hn4)uQ2CANOW_`gVCl#&}WRsJ3kmR)Q@<&HqZ}CROb%nb@xs=+u<|LGo>NGHM zN4e_Y1B(Y8SQ}X}`ecjmqz{N|^RY^UuS_x1*`PBFN`d4S1#eo{k! zZqd?IL^i^(=7w$he>@hG(mmBodMXk?9D_G9vA+kOvzW$XTyUMP*Q%hcopx#kjXHVW z_=Cg?v9^d99j=u9909Uakrv{9#5Q#=l|k1_*M@*d(yWI}z0L{RKHkFUgGPcg2cLwIATt4PvirN! z@`jtKs+dwgC#T9^V63ze|jH%luq4R6p&XAfxKCYFc$49|-QGb*?Wq zd!u|@x)f0pq@3KtJn;G7QijD;6J1r46k1vN^3h`hHfYmTN>jfJW^Vmxt83q6VYZOL z-Yw!hAK$K_`8!xtMh7sQ`pov%Yl@j_?>qV}gMuzsu(32eQOoA&O9^7w0v*c|$+tnS zbES1t>IAgp(}XnNHnXKi34)_5z$fZLoWeq6>_iL#USvUD%UES{rSj;?G&Q;;9N*~? za%#Pz?^%L%ijxYW&euS*_@e06r-g#o266mm$h1~N+aJ?+D!ArC_ zAj?U54Gd`gy^}HTRK@0nnVvMkRM>J%6blIyMz!@GyYr(U;)k(K4K3ThTa#NNOhRcv z@9!S)R^2S>H@d>)R8}B0O=-m*>#FFi<2KDvgr-WkcbBUU7mHe`+tS-qJAfEU0F@RW ztPes%=|dWXZ$4xlRM(D$35FncpO`tlLmp6liL^)922;Fvl&gDbIy6X`CpK`qUR59i zxCBolJ@bOEhbfwcasz7;skT#T~EvevN=UfLcGcB zhj;}j+ebu9rKBMWFl1IwV?EXSfC=qh?Gi8DmynuuqO7Hd1!w`e8s_5MCh&#eZvzya z4&g7;FFmv+-*K`-<3fKlMr56JCegC)lK-dDn$(rj9|Kq_ zo0YAYMz|#}5Uej$ohO!u54p9{<-&QY$sui@jZPQkJ*KmOT~B41*=N?0ymAFQ+-mSM zsPL`9GEjA1>wP9kBs5YFD|5DuA}E-sUXPw%){c0-CQ5_EJ2n*yNYB7FJfeFc{;z~h zd>C>iDcr{EzrYJ`*C$EVFKwQol}AF=!lx`KvhD`EPy4oO1^0Y2EI@vZRz*urosX_t zS1;e8)h`?WVCFwVpBu;*ob?H2bz0r?B$TMa9u1?%Qfxj74TgE3YFvQ%`0lBnFs$5Q zlq!o=yGKgt*Uk+x&Nx;hlmaE-Z}OI!BC(^+721_$tBbcL&aujsTuz@;$`;8FD^jW8 z*JUK6S2*Y$F27{ED|v3=`%MP~<;3dhpU=4GSNC}rxCVQrT9gWlwh+$Tl6@@9_lPTi zSo0oNDozmAl4E1t*()|Oy%|2r=vo(wVvKaN@P_>3=X8Y(4B)~30Hn(6YqR0{Z)@-z zB{2)1a}(?(y=aYX#fA}*madOTB`b{j9NrGq>`MRAJ0qL$E3gMVjeDFYCGbS%SQLDS zf7lh0>d07B=v*)LOZihNd~1XtQW;yBlmnwNf%kHSDChElQnG@ty5L=D zE*>jZpF`fS61%PICnJ(jJE^QMKeHzK0uu(bJ3M>EL+?R@x#NmBoB`Md?u%xrRSp zPtc@5pHQVjxO;d${jbf1PK6MVfbfXSC^m=$JTmKz zZ@3}FYOF^n-m)>Ny-fu5T%{I!;K+L4U5V7!T58gVda(J>FNy!i>DZ);9Wh-Gx)7R7 z?sCMhUCqnlzi-InMUK%6Q2rXqRPBQtDA1WE<_KNA8u!JP@e2NRve!;uVsy+!y4Hwp z(S2|3Eu>3hA-pg_OPLqfJGziFyQ@km_eRU`dK$?QE6Vgn5qLm!H72J)4p3#jd|_pq zNz~I|ekRD*iT?(d90mOip0X7xmX7mVkx)J}7_FJ53V|g@ZuX2LNw+;pNQ~6km$u{9 zkJ`zc5pvjU$%4Ajx4ofj5Sr-6u$6*!{Voe|vKre7@5>#O&dQI^CQ7s<<20}rfoO149v1V|%($+4FKL-PknN931MoJ?kEOcy-fxK%WM*Chs>bvqZylYNWA?xvw zo^TII>hc(gfoc_nF(di}RT?pNAx>Prf)G z>AMME)O~EtI{rK8&tO-aGM_{TnMGM+DDyhiH?@ogN}(+$qyCv8Y{H8;xJ|&K_J6s3 zJp;!!Vgm;BrfDHa*Ru?%@9+KvQ6&_-Ky&RX;qF+tjBG4|W##yIzLwfJY?f12aCcTP z^ifhr>l?|z>y==!^{yLKq%e6SMWf5#KAT`Y1W6QWGi)lvP%9w?i@7Nx?Niv8bxK@U zb233va5=S08xKDbm<8c|v6{m99HDb;}KeUT-g7z34QRCA-1nF^c)?fvGoeO`RIw88(%_#;o}&RMIRl07ME2rL|^MEc_u=iPdQwkAY8*WCUCri%DKpwW9vh`0(C5 zZgR0C!F@u0JuY%|&(Qf>$Qu*?K+}+AK)^z1>8=3XUQrL*?yC0o5SBAP6srC_3A4tQ z3W0Y)>@Aj5yZ3$T~VLK2$l!FSanfvsq~_6T?>2X8Aw?z1M-?bfy%Oyn$P=!Qd1 zK8)G0R?sBvH}Mga6Rl|1W&nilqh+kv`511|P07vb>bymQAc~asJ~<6N%^uLG`~eGl z!;dRmeBc$t$X?7Q-!~y6e{>6l$DB zGFyldBLdzzfIpRYYG9T-HaxR5C29-z%S=d*$O%VE($%yz6aE=te3KJB+)sPj=?HjU zW0w6P^s<-Eqlfu>N`I3?Bny9R()01*H?(U;$ACR1U#mKG!lDbZti9P?i3k4$%iN)R%O{L+sL#{0q|Lpv5BFw?u!waIAUKKA#*w1kH zrwHxbmZrGs&V?+H%mj?cRJiVM&rJ_}^htjzr!-|Wx({kH%d9!r?>*uW^@=zipD%c< zbk@)zebeKyRutgT>j~u{dQ>5@9#IIvyWWU~VM#{1grwTeW!ZHycB*B>A{-*m;dEO z&#SxD#=Hk5=~8#75k!z7^*uRhY4SjcIjIdbaLA*XK#-k7YQsV#01fy(OA1nB@TC`R zwr^fiod(e&IL6ttoEl2P4du?sm)NmOx)Bpnjyes55}n6>_Oe21IGwV4Fm{E7C48p$ zZ{wm@37~6;q^Pnzqs6+1BYFbJ3R>7O8i(SZLCGrUwgdT}x{Rn*8|b`hgQQ23QP;5Z z6!DQ`DGcJ2`qB*Tn@l1OwEm>A_VEif-tf+-__WHDy^@tyn(dskl#-Rp3(sXH#1O?{ ztp@aq4I@8N1Y|c|uOZWk5GW>!@FTMje^j2_vOo?!!1}rK_C)D)qybrIIXk&y^m@9D z@T3zX)RZLUn0unAA7@TRkV_ct$BpYc-BB<_p5$@uR;dA^B~|(d7LL>hZL5lN5vSP?y-CJcmpfsKN5#mN zQj7()#gR{^>q(u30QZ-p=^cJr6T=*tHamPxvMsh-a39AmLAHzp71hzjl0}hu3_FN4 zmc8DyeW$n;#Hrb;dtWfbtEzj3`yNi!o)Rh2ZAU(wd1YTwY~0Ad;AyNi`nD%^#8hrC zU|Xu1&G|IyBHQG;+ExwBV@a7tA{P*~(qDPj7uhuiTMB6qHZjCA3T?+|*~vSK zZ)%Owx8kr5R#U~h`KzRURSJ&_{HV5d+XF9-vNNPuS4oFYx>)8Bu4&g>8Pe#N?nInW z(mWyEm4E5;DKUbH7WFcbVT~7-%vSudfPOKZ=w$PGGONNn^-!iszff?8SL?QVh zY#MEC;dy1@%iZ3MtO;Tq2S7|w&DSd?%F|4^u?TQK zKI6{S@=7-TVSUBcUx)#*^7@%%4#WH63q-ZW>-kG~kRW z&J4vH13TcLKQ~Eiw+lJDlC#iTc&nVk4*Dyk{~9S^A@Jr-FK6HcI=IswDbq5Yr5U?4 zw4RaK7baHeTdhldq;m!E4nj8)k#bux5@n}4A+mQ2i(@oD^IR!%7AGqgu{5Y*MvcPT ziAgJz`;5Zq+peex(os^`Jv#JAe&*@LY3V{P0D*RuA=k|Z%dv+)NTy4fNKjT#=9uu6 z2-751<1ro)(-m3(NnKb%?i4_q;sKMRx9#h)t3r!np6pnr9|b~nGelJ>%1^o)d0khE zj~j_qs2Qxx=3y%i|3V1XAmnU&o`IMXt7PDa;>qC8rRyLZ?oBxT-KC}gCtCc zb&>L(Wf>wU|BQ`><$V{jJc*d+k&gA-`chx+_LVnqw_Lsopem@=2ROe;l`>^^HCk$s z=oL}Gi0#{^v-TSbxc4p0m}Hrl`SE51LUYZpWK{V$(1&v-ee4`1($oZdBV@-(qWj>k zpJ{Z)WMhOKj3!ffl+$?SkJ6UN zmv^^$WraL}HZOEp#Xq?X&6cG(1aoH!vsK;+IdiW*yg)`S~do;u&9;IQ<96-CK-e6p=)@WK07(S`iB>;<|>ic6DErO~zUMdS5-TLb8 zUQXd>Bv4>md2b-yevu8e{Ze|7Z!COLT25jSg8A>En5yP$FeOt?)C9$qpF3}K(CmrV zn07gNI+i0V!t2k@Rog+7b z>MJi)d<(tw{YG0M*FL$QY65$_tQ#kM(z5>&v-g!`!dJ>Lmr0o-g(WWxHN^jhXdd4!d2rL1RL%Z;r9N19M zT~d~9;ZXPGuWWBj+%Sfl3bZ?fA1LT8I4}SujIVY4Hb^rY&DCWvU2NVd8ewn+&r9V= z3e0K-_i~vdd-*X>Q&~fQUVGz&Y!Y(xn~AW;4+%gU{qFV!7acBW+vTEKjt-ftkKLaB#-c#em)uCgKJz?V{jQqBFEwSwuas+I-HNLq?UG1s zoysey+vB~A)34`y%_}P7-+nE%>mkMa3p)h+ z`{`^O!XhI&9Mn>ca-wk2PY$>} zQ}NpLWMu*2ZY$Pvy608h+B%8VP^da>ANl&Hj? ziSMW1<8sMp536>)gpt9ud#l2I)Wd4O(^aiV;8LqY{XAC^1J>k=uJ!|5>bXl@eZM}5 z4Ril}%T+dQ1@0z?;gbjoWBF=%7Jf<#fSHu|%RirR0g{t=gv3Jy{f! zZReXaR1L-nD8a^-)%H_C>?rX)^#^6oH&=V>i>MoK@)gfo_3^^%nc0~&l1hvZqQUi` zi?|3<5IM~2G?8b`Qx%P^k>qtDLRQuR9(}n}i8!<)pFeZcIZZEx~h17UkO z;MGpRLq7^0B=!xA7fd5x?=PFPWgum$iKkI#Ky-qr%q2#<1nc?HMXahhXBO_{eR8xb%YIg|M!oUM3;2ZI_E44xl7`YON${8=2DIEJTnH-#=mh_Bl_=|yABj0)M zmIOngAq^mN%<0*osflZ-*6dm@=Rf5uhsv!A2deLVC8;S%?ht_SDtykn#JTL_#n<24 zrR7YQ1KugGp%ZuE3W%V4?x8iTV%n*aXA?3MoHhCT;TwQHVvRl1RROdmJgE5%Mz|~z zMXi-3R(TAT^Lh6n#)-XOm6Hf9#G9kmyXQ5OCIip>5_8Z<`a zj<|Ie_eahwWmq56mx1sGQ3iX0Zl$9x9Vy96#TnVi0h`R)3P#N|{W&G^N_p3WqIz~R zn5;gM4-5o{5DJ9X6G`Rl2U6?xcP7uBk!9)`BT$oPuEliv?hgT z?ny=+bQ{_36NYPB+{P~<4yp_aLlVU(ulvV0N0gy`(YPmAnLNmHDtKWIxNtg0y7ouk zh$DN6v*sp1Y;XnE^+rvPS4N+tfWw1)4J9!$xO^E0$B}(+Mi7)8*KV^Z=QZF z)@mPd!!CQDLJr3s4Yi_jd6f(iW_}(VSp`9D3g3=QSIO0uTKCMlTZHtb-y&=y+^*o8 z7SQ0^tGbEucEisF(K8VXziL%YJV%d^1xw`sTjxp#qvnd*pF9{5*Vnea8J8N(b4wm;21WTyK zGEqAJ4WY#K+7&zL<76kq11*CucuO`g^@anE_iT@6aLzj%HN1m6-O?b=9C))Zxsnh! zBNF0iQFDoITOr)MQU3I>J_#|QoYe-MZenFI%kEstCP@cgublU&Wa)3l>81H{Z;=TK z23E?{ag4Bm#nU}()|$TCRC{{}yH_fe;V`QxK%O2Yi*u|djwT;!Gd|RQubDFQz&=>Z zRaD-$(Ot_kPW+Rq7fGKa_?t_?7J|~LLXq*$(np5y*mI9pDYn={%-}&po*a+06B{L! zNk*T=kSAz+58HQq#HV{HR|Fi^_kWK6$>E`lONvA$Kp3#M<2Zveb0u+Heb@U(P>Vv5r{Yj{OeiW5!eqiw&yOgelPi%+}P=pD0X ziHdHy3*14IBbA(4#vo2J{%wkm10rZRBR;V^q-I`964fCgSAKzyGj}6%yA{&UfEiU+ zI|9lv=+RG{=`oHD>>_DwPTpBRke9Dn7ZY4>{Bu7{N9<|?!9~c^twbB(g@w!H2WjOo zl7(0cs^^z8L^X)uPb{r!w)HNJ1V2a(ML(C)>I2o8*$$&T@H4cQeyIGkSy+ZsswQOF zGrftKcjAP>Mhg8oOYWBYHl_1A?rZV}IJJkfm5Cf~EY(7VX>&dHWN>Q3Z& zwK;U?#?dk-+ghT}R%221A(6f~NWj(*ZvtVYV}b7&$@v1%bSGwXXYjj#mjl8)eBOLFNs&E7Vy(&e?(J+{QX{Wjm4Y*+1Xku4)aNi)$i+~H9ypQ8Jb zeiHxV?zxRG@B87&_NZa{&WW4z7c9J|uPyfH;{`^^KPBjEF`-evmCm8xTKP%yCy~F5b|EJk3N_1{ z<~0MQwXl(^<7@U$o7`ShiQ0blXw${U)8n}HD+!jmMn7&icJg#ooJ~{7K~XYNG6s#GKF7JEh+5>E*BT6e?)o(S=Jm z)vbEfBu`CI4VdP^6@M0*($KTod5W$!Z-U#6gP5K!8%I2|T|KRvvD)eCQL$6y#U|Om zgdvG}Vw!%$nlv^X6Ew!qWk&sSq%LyCf;1!cJ-KK;c8JFUGP6F)rBg@etU`NKf|?o= z1JaQ@T06E+L2g~zV?1F2&t9&PiFQpSAoEz;j^)zoL9)y^xxV8vHILkUSt(M+KK=c) z47u|CxBYG7VC6IdXU27h+d2`Xgn}g{+k;2CYUGKJhV*YNlFm70!#p%Q<04##a!Qs4Rw@=4sySC(eh#_IQrObFm`c z4t%-pBX4y~2Yjw$i8DI*H5~m0e&Sp=Hu+ZwfOe&cXBqvD(Ymy4R)&$(Ue;V@bxJha zYwnc!5-Dg?I`Rb~rJB(57)eXfP*u)|YBOj^+Ptu$RwE}o3O3imW{voPFz8ZBaM`B8 zBE*zn)-BW_6~his+m=Ic5WB`Oe^(jJ6w3Nj0hW-9kjGsG#uk?Xx<47-qMXAB3z3v*xd~gM_Tc|{|?&O1f z=aVpbYL{@~iV5y-lf4U}upGSM+_P?ieY$poO7EaFtjr=|{4*v@pKB)cQ+4*_sx2<8!e%4nIS$ayH#>%~ z8K zqY(P8XZpX(B=!d+ON>rFmz*3`^YV17UNURV%^h4t`M}p?IUE2cy3IEVB;%)D8)jT# zg?f>H93U3({}b?mQYv>EuKA-%~Il#{YBnJK;4KfAu;la$v+ zm}e2rtSHZPlpPsC4TxTHCzD#r@wR?6QsiTNbDs>E9irYYaF;P4bGlpS=M7wQ)SFpg z_K|^Vxo|MeiL_IpY}hCJ`7TTh{YN|PGbeQX6=-k(#A;NpdxMc}%R7g_9xZ0hy`m*5 zkW!AQbx*{Eyk2nnF~Bo48UK#^#eTDM9z!ROn^`t4KU=)HVJsN5t@+(ZH%M!cMuVrSE1|_!IIEN&WaosU8oG@kWkK;PSgJylP?Tn zFCx>Z8Wf2}^8&_sDf}7O>hekPg-H@3Lmx#Ri(ppF zq_!(~^Gw%u9Tgw&#@Nz2Rqk}lv#j9liI>=VPfXh7!&wQ{<|ch-Nx!xESac&>V%u!| zZeRkD<-|>`0c@y)KR%um!P8?`m6X$+&X`vG6Pn6H^hQi!WoU>aPAu(0li6}#1j7lY z(tW}7{|*w{H^ui9poAWmmQkc#A;odkWuz51K96tZZV@{74^iliVzw(i~2 z>Q?if+%DTPO|$dWkGLYn+EATLytibD_?`vD5+YL--C*#Q2hb~}tn>H{}&q-DgUlI%wEWh$%r;tKuCDO5ciRZ-}3~ zge=f{rZ5ts=)Ih6-lBPF4V~V>%1W~ra!63jky)h90#+Pri^xdCJ6d9QJ75D zO8aJJ2`wswFR-b=8AfH_)-+su;XbeuR1uwr#hOHQH#U)E7mSX1`&>aN?&OtvElLk= z=|b?$4^tDLr@cbOLePqXT>X-hLM4<(lQC_#`Cg^8b)BPQRxW0<;>SALeY$9AQI0QJ zczHE31?A@GM0{!ij51s%z{OW6~prk%-R)djQPYWPp>0gHmMmc-E(H^G)_RAbkmZC>E14YPB zeJJC*?twVTgRM9K=F!R~xTE$tzhEXUFm<5f5Vf;R%r*#|IY+s;9O=F~XX6rf!&(g7nNjc@-U(!~)r;w8REyY1n{zJP0tR{SV@Asa14 zTYqZcK+J1;v5j5@LGYx6Q6?H;gxs?vVelz~Bf0Xmn^K=j5E{-%X@kD)G(Qr$n-|&~ zwA$OgEs_(m8z3j+UtZZE)=X2~H{qHxsiM;F!8XrOx0KcC3^`eswGsP7=2EJNcXSrU zq{Iq=(QENW!RT|@Xz%(a`u82pfLvbpLs;s($aTx}WN|F8uIxy{n1O#k5-Pgm+Z< zs+u}fl0!jM_~?suqNY_+F`gOGQ*;Yj`=Tzq?bWz-cfIl}H|vGE-NG~vKZ>q-f2=g>tx(pPGYV-7-Jv33r5 z7f)!wPQg^2Y0rfeP9nM}>ux@TD%M9}j9rJ=)~E+x22>TdRr+zzabIpUk#y;Hty+vi zP7B=(c=dKmRn$z|3dKJ5l(4RPR6umeZBz%D6Dr>X;KliJUT&`p4-$Ncf`a-K8gFs| zDdL@m9{v08tl-S)pLR+y@Hmp-PLrT_*D(bJ@?H6j?dv(CO2jSPMNTm>F|!ShzEvGW z1m0Y0GrDX^=5=pO-p_<8uVworHllbbDw^8Qk4aVc%Ui~ z$Vs!ec*znP6C;vOcg}^1|BcRvrR9eLI@Uq)*c{DIt)>#@jD%KBO-s1rS(865-AHUK zdl9Q1|EPw3sx=!>fFqGmMyHz#>x=#_Q;GO9B(R&v4}XC3#J))wf&%i8MHK~c`#7DS1HDfKp^~1peZv0S<`Jdy2pp1^DANZ6ln|kiV+yk7gS0(*Se}Eq1~Q#bu#lJY7CV=pYu zrJAg#aO@O0{i}`0nwwAAYaY0t%j*EFcB!bJLfHP@gM@}b2@bNP6|YFBtvxz2Fm{Z^ zr;?0y{m__qEN`eRieDOno|e1o^G5}GX*=OuP$*n&J@3Ii*x74^mP-~8Z{{V+cj3$O z9-WLrFhixW3!*ezbO)kBqpjz5stz)bGOMZ4qVabx*uQ##Xxl0RoY7vA=O;CtY{`^V ze@n3uN?A%bHg~2QhYJVe%_Y9#3{7{e;rhBmX99$t5=NI#=Z!;c z?9rZz?u;;Sv4{89d0R2L#$v9ruGb}HZTpuhO~z(e8@fDuR8Qc;a9`nQVS!;oLefUy z?xoM1v~wT2-iW|XH$dwY0A#>A?+eyjBmco5f4VRhSIm#I)AQ5I(`I;+!9h4gQOy=P z5o|Z|2EFSiE5vx(oXvsr>_Vjz+H1R&-S!|0TsgZ8l3S|Vd(GaA7?ZpTU~58nyq`hs z2$LBLE&>pBFL#bvY|LX{xu~nM2FHcSBrc6)EXb)VTi&r=dLsSPT*_BI|8|9m`6xF= zY+~uu6EFEt$Kx&ZR-SNbjzBp6nSD;~jr*>q_Y`+3gB?-1bD73q(|2~MdO=pii>@3c zJOTZYMu13tO`Cx`k#^F_%ZYrY_yzGY6hLW+=Sb^J5cU0$aLizUrFv^@@ z2Zz{;S35C^^ySmGXeg+xM70J{j|-g4N1f^c!<5S=8LQ3{=D2PiDc`~8UgQ#y0`M|o z`uvMFi02np}|{VO4E| ziJOLdZLvDTYl2j&m$iM9JW=7fRZx&iU*_N;FrLXZ<>9c-RlPrpC8hd?0=LjJIQ(+# zn9QsEk2tK*_6r@pK}XGxnPsa2g;qYpl)EQL7HJ@~QY%v!ti@dnZ_)@uNBV{t>Ci;z|Fre zZjt*G!-1yQf%smvE>SZut3~@#B1@4sdA-8W%*o}!-RzQ@0oaWZOZrs3s(7KoIQCv$ zcTZ3K)&{e`mC&6`&o+K#hK!4p;?b--Vd_v{!_9Yf8|}ba^t7^RKOK}j*^c#rN0ab+ zwQ{AT`uPx9s)FSqB5=x`MMnpWiC_c)oEJqKZK6 zm^phQ+Z%Q+Zn9#W;bHm2XfTmTI+->WMjsgQt+WJ;ZV(hdRDw+ zY7n35yamx$7G>x2AtjG0aqlRmb1A)q5@u}4*FNo%;dQ`b%Vb}C_O9{6@ra0F6owne znaIOD1X^9YlbT#)1n~A>3KJBqF0-h<&nCcLL&;411UtKpq=~#{sQPY3#ag{8`iA1a z`X0Gw7f{y=8|ijf7?}HKyARp#^*zS#-#`0%+-+_CP2LV4h^=p-XzW2D zfESHT+0YY#A!Y)LE3jqdfI%DY!FBQe19!^GN@6x zQsy~*Xk*INtSszTOOTa-7xlR!6Jb#uIz3c0fCWTV(PH?cwzNAF6&f{~5<8)dP}5zZ zh@nLtk08xWiM~cMm`y-G`}FAj^Wb1Rn=N^ERV3+}fh0A#VWtHwc94QdxdFF6RYZ%K zonm6R>;l0c7#CB?NN1PkrHeZ66ktInDnXX1MmvqaHBdva&&{RieOyug(_Eek&?DMy zdIgDMb}VKcIYS)jsjChCxYJcu5?0_a=J+Lha|;%PTV=i-yAIQ)+@S+z!qxGJnV~IE zzFm{pO3QP-1r=+!>4lO+G&h29%C|jkfK`Lw^?A|=y%MD){^TPSNy4|AgGaeB(SQg+ zDSKzHX_?4J!qrM(HehlTEBlMDw?NQP01}f|X7CRWRONh&o6_;fI6EB|>|3IR9%zkO z`=@G*7zSI)FO%_8BV$LhlMUMa>Erm#PZwL^atZU}IBHUUJGzGnkeEB4`ADiaXNr-} zCa3!c>E_4h|iJu@OMwt zk&e7Q*#M642cJITpfS!JVOqXWztaUA8d54Fm5A@e*qV`Vor~NW3Ozg^7ENdYuX>Q+ ztNmz^y{r6bk>g+cMZ@qR%5B_}L?$WTpq1=rNspRR(C)nsWfpZRDr<(c?3Y!RT0l=a zo<8i>`K0wem;x^I3sZvqt4&=EPtrEWw!2(L75WP9#L0kBvShbA8*>z|UU^g7r7p#E zYo%O2AJK-V6H@ev#X8|kLlu^7!|LYZsOd^!Xp@#D-ik1gS(d5ll z>*M;fI8jWARcj2mjfh2>uDfv16H>9q4LW?CoF;S~_AdZ7!NhkBSXiqbs~*>1rbr&4 zD_++tJVm*?pF(C6#;e$nq zx(M@cfWGBU>#4U>2Tk`;U#3M;74lhgXHvKy)ew5wW zs_ZVzbz~Vg2Qn%KjHI%-9{4_x=9hQ3q;*(&%AM;}D#`EFzm~XV+@^`S>d*3Sben3> z@f92tiVixK(6Es@J!sDRK>}r%x7>5Txu|Gt98h;KraQ#&0k8lTs6t_}k`XGZo~UpJ zj2FFv=_EYCcNHGJ zryOyltruMtj7porl*@RK*JejHwobOk{Uz<(vz4GLo)M{IRz3S!?}0#B z4^TF+boAw?H5LTNyX%dY7X{>*X-K@d!B9sTjm_By%YL%rnn-RID0X8iKt`G8sJakL za+d$#cp3H{M|`>cByOlbzwm=xo3&^^Kz$L#kc)v1IUh`Z$)PN{BgGwNz3Yg{l^PW<3u#Naa`Y?bo)xl0!y=i0ix+WDwo3Z~J8w1;ObUhgHPEXtJ1-EB0MsBEH! zfIpz4xgFf*>SEiVyGG&2-x4IQM-S?~9A!hao>FLn^#N0?w8}b&R z0gl(MN(bXHq#DM#0hqwJR1p0%dNvt>1Ypf>5IkRdt1P^0SqLEq_m-Kbzu-E*uQkl} zJ$qM!@-D0>U6&c{gx+ylDBS8Z8_Ou66{4Uw$vvWlWk zV52N90l0>-WKyB`@Vh0xx0+H{{OUc^Ltdpgu_hljae%9q})IpZ*(98LT(X5KEgM^H;-FbPa9~e>za5BMbI6Tw>SJkJIRi%(OO( zL+dokosTreF}fYLt37|Vd_WmF0$5wXg!fb#k>0@IQn2m0ILfu(K@XC%Mf$XMEU6cU z64X>r(`?{q6E(KxztNmP%fu3;REw?EBvDbE9v6Lc)ahYWkP63LE2%X*G`{liOVq_V zRVxJ6^Po049f-ifMDr=am~}bQCiB%?@hQ%vZ3`=%8FD_t|7tRSnl1~R!14=VR}#ogsUb!Ms$?{|huR1S6^4=WJJ3gks)q1+D3+%AgT z4G-JNC`VP6hlK;c|C3;o_*;?0f4$V> literal 0 HcmV?d00001 diff --git a/plugin.audio.ximalaya/addon.py b/plugin.audio.ximalaya/addon.py index 4b9a040..50446ee 100644 --- a/plugin.audio.ximalaya/addon.py +++ b/plugin.audio.ximalaya/addon.py @@ -15,8 +15,6 @@ url_for = plugin.url_for # Plugin constants -__addonid__ = plugin.addon.getAddonInfo('id') -__addonname__ = plugin.addon.getAddonInfo('name') stream_types = [ {'itag': '1', 'container': 'm4a', 'bitrate': 'default'}, diff --git a/plugin.audio.ximalaya/addon.xml b/plugin.audio.ximalaya/addon.xml index 6377fb4..14a9e9b 100644 --- a/plugin.audio.ximalaya/addon.xml +++ b/plugin.audio.ximalaya/addon.xml @@ -1,11 +1,11 @@ - + audio diff --git a/plugin.audio.ximalaya/plugin.audio.ximalaya-1.0.4.zip b/plugin.audio.ximalaya/plugin.audio.ximalaya-1.1.0.zip similarity index 79% rename from plugin.audio.ximalaya/plugin.audio.ximalaya-1.0.4.zip rename to plugin.audio.ximalaya/plugin.audio.ximalaya-1.1.0.zip index d198127bfd257019429297ceca78c612372a99a4..5fc7abeb720626520efc5effbfda3e96dabb736b 100644 GIT binary patch delta 2810 zcmZYBc{CJU9|!QkU>L(ZmO{45)(m3o#@P3zNDUg_u9%9>ie1(7v{P%T@=RNpm?*V>KuW-`OoFW|#4fy_D~+1WHqQLIr?w|LK3 zb!zb;oA(Y5%-A0k@b~xNJeMaHeRG7XXGfWG;7?*=g=T9NUJN{@&qAS)L7v<)$zaxe z7MV_NCx9kK+t^3+=GOk1r|f>O=Wb|K zY>a(}Yre+H3bHgYP^nP&ut*omF;zt0tk2AMTANzmG z7Z0rDANy!~F#u{4^qTF+4~Ihr!g=4$!?T;(!nmpq3ErTSLAV|C?UcM-i< zkp;}?Vyb|seovWfvRz+i(DnY=pVRO_(5U84Ra4V3?D&UZaf@H=SZ(HqU2M54ln~V( zM#G*NDZx1rR-XC%k<9buPFge=x**&rB*zfErjEaJVq^LjCP7u~ifs9lG$#|;S!pvc zaxqLuG@6Ap&JL@24RqY%E~NTR7D++oQbD?B|9E%cU?&EmoMJO2^>cVqY5e8jwj~IK z5Tqm7-z>3bbGb^~(@F~A?&e7}Gwk)6Pz*0Yd^25*9HqO24S*}Fw_wmeB4?n~tkN&3 z_~_cmf%=^nBU&qbq3i88E|*-E@0Md`>Gg+HzuSfumlNfljReL4u! zbap>V6DxeZtcr`+KmL8y_&;nC1S@jXKU$y*+DAzG*P&~^Y`nr*us)|+wl|DDiQ3D| zuXu_}FTT%DMLgH8j%jv=el2x&3aIJQpyI95wuJYKcVOPQh6*;q)IHrsWd0%J{Y3B^ zG9w=yu30SS%$yQ)Ri<0fbS{1GfqsLw{NyeWoI&BW@!^saI-Igppk}|hpv(xT`e>RQ z4GcWgo0R1>t$N*K#p~W-6K6b7P61M&ukR2x)&ijaxF(21cjS2MD5?xCp&|tUd zy5>!%Z<^nxr8_v%wjyFF$*qQSc;tHYr*t6&4Yq-vKtgr|lM{pdJ=s!9P#wr}f4a=& zdo?lf&aTi%&#hqMmejjX6s-w+UmsiI%WbNYimd1}kp5scx(7YMX(bb%h!o&;)hF<` zkI}O~ay1PxHskbbwYAZ0^UixCUNM30?k=d9-WbktD;xQ$N`n)UrWJ6*hgnG`kD?x4 zprwvDSb2rmkS9PjPejXoy=qQ2gDUmB29#@akYDfA?B7@g$AaxyVDPAg>-&XiA6{F(xlY}N%(_D(OWi0Dn3u$W4 zZWc=Tj`#H373`fLu1Mq8GX#L50&kR0^~1Dv)f&DicH}zEhwYb#<}vpQc+c904SZfy z3VJGXNo`!Ric135iIMLdlI4>gwx-J|BCy18PxVESgA&}MeuRoFjqJY2^M>j zS>b}s+ZgZwx}V|EH;F$bJ0~C3ywq}ek;W0PbyJ%vVv6kE6IamY>-LpG!LQf9{O#)NdZf%v#q|_ zwr`;7Grh1*8Fk4KetSVxEbXA}vgFK9>SN>Q&`=f~R%rfR-DwitGzNLePNnB^9q z@knkmAS|;x&psVrGD_t$M#RNNsCDSEFONs3XHl+et8&qELc70Hk=@IeW*oF^e?H%-|&Gd>B&fqMkM>y4m5ryqH~R=^vMcufh{$tw8yz|G9kjVV`< zS|jWy_V{ea{W)P78Rcq)_7FJ^SvUWM=p`xtxA5T}IF*&e`gLI75G!fj z0`aeL7mQ9RuFOEOp@!?K9(Pqgsv2A2dUaVXhc1+6iwnZb&`{P8?ywa3>yV ztuPa@Kn-xX6%}%dmm8EaG_cNGO*&dbIxD-S9JL%$gPY`vZ9^WM=(!9l;pWB{Z)bp4 z5m|#E6O`sR7k$2gtkzJ&sF?&~i=7XlqW5#-^7Sw=bPf^Zw`d4cM;4Nq*b*^eg-Dk6 z<63;&FCw<`tC7~#fL$V1Sf*Fp&B^fyu=jMt{giKIO>%Q=AUuUScKY!rA4*WiQ delta 2851 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 iZWt>e3#$RN;`kkXInEJ|&SH - + + + + + + + + + diff --git a/plugin.video.baidu/plugin.video.baidu-1.0.0.zip b/plugin.video.baidu/plugin.video.baidu-1.1.0.zip similarity index 96% rename from plugin.video.baidu/plugin.video.baidu-1.0.0.zip rename to plugin.video.baidu/plugin.video.baidu-1.1.0.zip index 0c5530fd439c12bb2bd732513afa00f4cbc5d641..8f6e38fda4366054a96768ff32f4fb62deb4c974 100644 GIT binary patch delta 689 zcmV;i0#5y=f&$)x0uE410|W{H00000fVLb>kq#&bk70#dk70#dkv>rb7XyV`v6IJf z6Bw-=O?bq$obmwx0L}#f02}}ulfZuzlkk8Be|T+dRa6N81K?1FTkTMVTXlE~009K( z0{{R7=mP)%om9P!)G!e4_bDv*XLCz*LMZW3(a=JToWx12^H0`4%Z3^upreG60y-Xm zg11>6yai6Yw@J9W)!wGc*z^5(#-8+YBL!G9W4TrtJV%cpV5-n1S9Jzoy?lQ51On@* ze=4caie<247G9D?O3P9!z{?D_!q;4(H7}V)Ipw8?3lKg2FC@q zaZL4@pw(Qt4EA>xwVi9ULXkJzJX0_T1kVjMT?Pl$kOL=%b}z@0!9b=J7$2Tb?{8Fm z5yla?Pj&)1NHofCKYrSN_<8;H-HngCDPs9a<6LW>VqA0A_`KJ|`|*UYg0t7VZsFU5 zFdQ+GjI2yjF36tYS>4C+Bynrf6CA0RRBb1(RohH3Z;Lg9usirk#g5Kac>r0EYLL0U>HxEUB(Kgf#)g4++c9+~)m$_m!k%`x@gPTk(8t!Bh(cf4EJsC?aG!$e#E^#$ACcQ-qE9=liM zkke$~toCY+$-<_E(syzXpOTt$b+P(&4hOGmeLHhmJ7tR#lCtZU&r_@O?0ate{lvoM zJ0c^y4_I*Lta@L)R#`^VY)zMe!)D7ZTlm&~R(o*l)ucDZ@@w}-GR}Q>(pmIkMcS%&wnP8Ym*eWt=0_I;`>&x%l^isB|k6TvZcyWWfilvE~*Hq`K;CXvbW8%$Y1>0$DX21}-d TlF1tzq$le&YOzhO2PHND->50| diff --git a/plugin.video.bilibili/addon.xml b/plugin.video.bilibili/addon.xml index 10ba505..628a6c6 100644 --- a/plugin.video.bilibili/addon.xml +++ b/plugin.video.bilibili/addon.xml @@ -1,16 +1,18 @@ + version="1.1.0" + provider-name="yfang1644"> - + + video + all Plugin for bilibili diff --git a/plugin.video.bilibili/changelog.txt b/plugin.video.bilibili/changelog.txt index 426a23c..d4e94c0 100644 --- a/plugin.video.bilibili/changelog.txt +++ b/plugin.video.bilibili/changelog.txt @@ -1,3 +1,5 @@ +2018.08.27 +- change structures v1/0.4 (2017-06-18) - 修复临时文件夹路径 diff --git a/plugin.video.bilibili/default.py b/plugin.video.bilibili/default.py index 97fa6be..7861f91 100644 --- a/plugin.video.bilibili/default.py +++ b/plugin.video.bilibili/default.py @@ -2,9 +2,10 @@ #coding=utf-8 from xbmcswift2 import Plugin, xbmc, xbmcgui -from resources.lib.bilibili import Bilibili -from resources.lib.subtitle import subtitle_offset -from resources.lib.login_dialog import LoginDialog +from lib.bilibili import Bilibili +from lib.subtitle import subtitle_offset +from lib.login_dialog import LoginDialog +from lib.bilivideo import video_from_vid as bilivideo_from_vid import time import string, os from random import choice @@ -181,7 +182,7 @@ def playmovie(cid, vid, name): if vid != '0': urls = video_from_vid(vid) else: - urls = bilibili.get_video_urls(cid) + urls = bilivideo_from_vid(cid) stack_url = 'stack://' + ' , '.join(urls) danmu = plugin.addon.getSetting('danmu') diff --git a/plugin.video.bilibili/lib/.cookie b/plugin.video.bilibili/lib/.cookie new file mode 100644 index 0000000..02e6243 --- /dev/null +++ b/plugin.video.bilibili/lib/.cookie @@ -0,0 +1,9 @@ +# Netscape HTTP Cookie File +# http://curl.haxx.se/rfc/cookie_spec.html +# This is a generated file! Do not edit. + +.bilibili.com TRUE / FALSE 1509245308 DedeUserID 198750789 +.bilibili.com TRUE / FALSE 1509245308 DedeUserID__ckMd5 2ca427075de91396 +.bilibili.com TRUE / FALSE 1509245308 SESSDATA 44259c14%2C1509245308%2C3287f83f +.bilibili.com TRUE / FALSE 1509245308 bili_jct 03c48bce623e2518e8152c8d4814d40a +.bilibili.com TRUE / FALSE 1538189163 sid 4j161bpl diff --git a/plugin.video.bilibili/resources/__init__.py b/plugin.video.bilibili/lib/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/__init__.py rename to plugin.video.bilibili/lib/__init__.py diff --git a/plugin.video.bilibili/resources/lib/bilibili.py b/plugin.video.bilibili/lib/bilibili.py similarity index 99% rename from plugin.video.bilibili/resources/lib/bilibili.py rename to plugin.video.bilibili/lib/bilibili.py index 8263ff5..eba094c 100644 --- a/plugin.video.bilibili/resources/lib/bilibili.py +++ b/plugin.video.bilibili/lib/bilibili.py @@ -27,7 +27,8 @@ class Bilibili(): api_url = 'http://interface.bilibili.com/playurl?' bangumi_api_url = 'http://bangumi.bilibili.com/player/web_api/playurl?' - SEC1 = '1c15888dc316e05a15fdd0a02ed6584f' + #SEC1 = '1c15888dc316e05a15fdd0a02ed6584f' + SEC1 = '94aba54af9065f71de72f5508f1cd42e' SEC2 = '9b288147e5474dd2aa67085f716c560d' supported_stream_profile = [u'流畅', u'高清', u'超清'] stream_types = [ @@ -43,7 +44,7 @@ class Bilibili(): def __init__(self, appkey=APPKEY, appsecret=APPSECRET, width=720, height=480): self.defaultHeader = {'Referer':'http://www.bilibili.com'} - self.defaultHeader = {} + #self.defaultHeader = {} self.appkey = appkey self.appsecret = appsecret self.WIDTH = width diff --git a/plugin.video.bilibili/resources/lib/bilibili_config.py b/plugin.video.bilibili/lib/bilibili_config.py similarity index 100% rename from plugin.video.bilibili/resources/lib/bilibili_config.py rename to plugin.video.bilibili/lib/bilibili_config.py diff --git a/plugin.video.bilibili/lib/biliparser.py b/plugin.video.bilibili/lib/biliparser.py new file mode 100644 index 0000000..3b73af2 --- /dev/null +++ b/plugin.video.bilibili/lib/biliparser.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import hashlib +import re +from json import loads +from xml.dom.minidom import parseString +from common import get_html, match1 + +appkey='f3bb208b3d081dc8' +SECRETKEY_MINILOADER = '1c15888dc316e05a15fdd0a02ed6584f' + + +class BiliVideo(): + name = u'哔哩哔哩 (Bilibili)' + supported_stream_profile = [u'流畅', u'高清', u'超清'] + + def parse_cid_playurl(self, xml): + urls = [] + doc = parseString(xml.encode('utf-8')) + for durl in doc.getElementsByTagName('durl'): + urls.append(durl.getElementsByTagName('url')[0].firstChild.nodeValue) + return urls + + #https://www.bilibili.com/video/av3851533 + def video_from_url(self, url, **kwargs): + level = kwargs.get('level', 0) # set default to best + level += 1 + self.url = url + self.vid = None + fake_headers={'Referer': 'http://www.bilibili.com'} + + if "#page=" in self.url: + page_index = match1(self.url, '#page=(\d+)') + av_id = match1(self.url, '\/(av\d+)') + self.url = 'http://www.bilibili.com/{}/index_{}.html'.format(av_id, page_index) + if not self.vid: + html = get_html(self.url, headers=fake_headers) + self.vid = match1(html, 'cid=\"*(\d+)') + title = match1(html, '([^<]+)').strip(u"_完结动画_番剧_bilibili_哔哩哔哩") + if not self.vid: + eid = match1(self.url, 'anime/v/(\d+)') or \ + match1(self.url, 'play#(\d+)') or \ + match1(html, 'anime/v/(\d+)') + if eid: + html = get_html('http://bangumi.bilibili.com/web_api/episode/{}.json'.format(eid)) + Episode_info = loads(html)['result']['currentEpisode'] + self.vid = Episode_info['danmaku'] + self.title += ' ' + Episode_info['indexTitle'] + '. ' + Episode_info['longTitle'] + + assert self.vid, "can't play this video: {}".format(url) + + pdata = 'cid={}&from=miniplay&player=1&quality={}{}'.format(self.vid, level, SECRETKEY_MINILOADER) + sign_this = hashlib.md5(pdata.encode('utf-8')).hexdigest() + api_url = 'http://interface.bilibili.com/playurl?cid={}&player=1&quality={}&from=miniplay&sign={}'.format(self.vid, level, sign_this) + html = get_html(api_url, headers=fake_headers) + urls = self.parse_cid_playurl(html) + + return urls + +site = BiliVideo() +video_from_url = site.video_from_url + +print video_from_url("https://www.bilibili.com/video/av3851533") diff --git a/plugin.video.bilibili/lib/bilivideo.py b/plugin.video.bilibili/lib/bilivideo.py new file mode 100644 index 0000000..7c31052 --- /dev/null +++ b/plugin.video.bilibili/lib/bilivideo.py @@ -0,0 +1,142 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from common import get_html +from json import loads +import time +import re +import hashlib +from urllib2 import urlopen, Request + +def get_location(url, headers={}): + response = urlopen(Request(url, headers)) + # urllib will follow redirections and it's too much code to tell urllib + # not to do that + return response.geturl() + +def match1(text, *patterns): + for pattern in patterns: + try: + match = re.search(pattern, text) + except(TypeError): + match = re.search(pattern, str(text)) + if match: + return match.group(1) + + +def matchall(text, patterns): + ret = [] + for pattern in patterns: + try: + match = re.findall(pattern, text) + except(TypeError): + match = re.findall(pattern, str(text)) + ret += match + return ret + +class BiliBase(): + supported_stream_profile = [u'流畅', u'高清', u'超清'] + profile_2_type = {u'超清': 'TD', u'高清': 'HD', u'流畅' :'SD'} + headers = {'Referer': 'https://www.bilibili.com'} + + def parse_cid_playurl(self, xml): + from xml.dom.minidom import parseString + urls = [] + doc = parseString(xml.encode('utf-8')) + ext = doc.getElementsByTagName('format')[0].firstChild.nodeValue + for durl in doc.getElementsByTagName('durl'): + u = durl.getElementsByTagName('url')[0].firstChild.nodeValue + # urls.append(u + '|referer=https://www.bilibili.com') + urls.append(u) + return urls, ext + + def video_from_vid(self, vid, **kwargs): + level = kwargs.get('level', 0) + self.vid = vid + api_url = self.get_api_url(level + 1) + html = get_html(api_url, headers=self.headers) + code = match1(html, '<code>([^<])') + assert not code, "can't play this video: {}".format(match1(html, 'CDATA\[([^\]]+)')) + urls, ext = self.parse_cid_playurl(html) + if ext == 'hdmp4': + ext = 'mp4' + + return urls + + def video_from_url(self, url, **kwargs): + self.url = url + self.vid = '' + self.vid, title = self.get_vid_title() + assert self.vid, "can't play this video: {}".format(self.url) + return self.video_from_vid(self.vid, **kwargs) + + +class BiliBan(BiliBase): + name = u'哔哩哔哩 番剧 (Bilibili Bangumi)' + + def get_vid_title(self): + self.url = get_location(self.url, headers=self.headers) + html = get_html(self.url, headers=self.headers) + title = match1(html, '<h1 title="([^"]+)', '<title>([^<]+)').strip() + + if "movie" in self.url: + aid = match1(html, 'aid=(\d+)', 'aid=\"(\d+)') + form = {"movie_aid" : aid} + vid = loads(get_html("https://bangumi.bilibili.com/web_api/get_source", data=urlencode(form)))["result"]["cid"] + else: + eid = match1(self.url, 'anime/v/(\d+)', 'play#(\d+)', 'ep(\d+)') or match1(html, 'anime/v/(\d+)') + Episode_info = loads(get_content('http://bangumi.bilibili.com/web_api/episode/{}.json'.format(eid)))['result']['currentEpisode'] + vid = Episode_info['danmaku'] + title = title + ' ' + Episode_info['indexTitle'] + '. ' + Episode_info['longTitle'] + + return vid, title + + def get_api_url(self, q): + if "movie" in self.url: + mod = "movie" + else: + mod = "bangumi" + ts = str(int(time.time())) + params_str = 'cid={}&module={}&player=1&quality={}&ts={}'.format(self.vid, mod, q, ts) + SEC2 = '9b288147e5474dd2aa67085f716c560d' + chksum = hashlib.md5(params_str + SEC2).hexdigest() + bangumi_api_url = 'http://bangumi.bilibili.com/player/web_api/playurl?' + return bangumi_api_url + params_str + '&sign=' + chksum + + def prepare_list(self): + sid = match1(html, 'var season_id = "(\d+)";') + j_ = get_content("http://bangumi.bilibili.com/jsonp/seasoninfo/{}.ver".format(sid)) + s_data = loads(j_) + urls = [e['webplay_url'] for e in sorted(s_data['result']['episodes'], key=lambda e: e['index'])] + return urls + + +class BiliVideo(BiliBase): + name = u'哔哩哔哩 (Bilibili)' + + def get_vid_title(self): + if "#page=" in self.url: + page_index = match1(self.url, '#page=(\d+)') + av_id = match1(self.url, '\/(av\d+)') + self.url = 'http://www.bilibili.com/{}/index_{}.html'.format(av_id, page_index) + if not self.vid: + html = get_html(self.url, headers=self.headers) + vid = match1(html, 'cid=(\d+)', 'cid=\"(\d+)') + title = match1(html, '<h1 title="([^"]+)', '<title>([^<]+)').strip() + + return vid, title + + def get_api_url(self, q): + SECRETKEY_MINILOADER = '1c15888dc316e05a15fdd0a02ed6584f' + sign_this = hashlib.md5('cid={}&from=miniplay&player=1&quality={}{}'.format(self.vid, q, SECRETKEY_MINILOADER)).hexdigest() + return 'http://interface.bilibili.com/playurl?cid={}&player=1&quality={}&from=miniplay&sign={}'.format(self.vid, q, sign_this) + + def prepare_list(self): + html = get_html(self.url) + video_list = matchall(html, ['<option value=\'([^\']*)\'']) + if video_list: + return ['http://www.bilibili.com'+v for v in video_list] + +site = BiliVideo() +video_from_url = site.video_from_url +video_from_vid = site.video_from_vid diff --git a/plugin.video.bilibili/resources/lib/login_dialog.py b/plugin.video.bilibili/lib/login_dialog.py similarity index 100% rename from plugin.video.bilibili/resources/lib/login_dialog.py rename to plugin.video.bilibili/lib/login_dialog.py diff --git a/plugin.video.bilibili/resources/lib/niconvert.py b/plugin.video.bilibili/lib/niconvert.py similarity index 100% rename from plugin.video.bilibili/resources/lib/niconvert.py rename to plugin.video.bilibili/lib/niconvert.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/__init__.py b/plugin.video.bilibili/lib/pyasn1/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/__init__.py rename to plugin.video.bilibili/lib/pyasn1/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/__init__.py b/plugin.video.bilibili/lib/pyasn1/codec/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/__init__.py rename to plugin.video.bilibili/lib/pyasn1/codec/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/ber/__init__.py b/plugin.video.bilibili/lib/pyasn1/codec/ber/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/ber/__init__.py rename to plugin.video.bilibili/lib/pyasn1/codec/ber/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/ber/decoder.py b/plugin.video.bilibili/lib/pyasn1/codec/ber/decoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/ber/decoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/ber/decoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/ber/encoder.py b/plugin.video.bilibili/lib/pyasn1/codec/ber/encoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/ber/encoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/ber/encoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/ber/eoo.py b/plugin.video.bilibili/lib/pyasn1/codec/ber/eoo.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/ber/eoo.py rename to plugin.video.bilibili/lib/pyasn1/codec/ber/eoo.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/cer/__init__.py b/plugin.video.bilibili/lib/pyasn1/codec/cer/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/cer/__init__.py rename to plugin.video.bilibili/lib/pyasn1/codec/cer/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/cer/decoder.py b/plugin.video.bilibili/lib/pyasn1/codec/cer/decoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/cer/decoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/cer/decoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/cer/encoder.py b/plugin.video.bilibili/lib/pyasn1/codec/cer/encoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/cer/encoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/cer/encoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/der/__init__.py b/plugin.video.bilibili/lib/pyasn1/codec/der/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/der/__init__.py rename to plugin.video.bilibili/lib/pyasn1/codec/der/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/der/decoder.py b/plugin.video.bilibili/lib/pyasn1/codec/der/decoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/der/decoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/der/decoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/codec/der/encoder.py b/plugin.video.bilibili/lib/pyasn1/codec/der/encoder.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/codec/der/encoder.py rename to plugin.video.bilibili/lib/pyasn1/codec/der/encoder.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/compat/__init__.py b/plugin.video.bilibili/lib/pyasn1/compat/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/compat/__init__.py rename to plugin.video.bilibili/lib/pyasn1/compat/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/compat/octets.py b/plugin.video.bilibili/lib/pyasn1/compat/octets.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/compat/octets.py rename to plugin.video.bilibili/lib/pyasn1/compat/octets.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/debug.py b/plugin.video.bilibili/lib/pyasn1/debug.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/debug.py rename to plugin.video.bilibili/lib/pyasn1/debug.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/error.py b/plugin.video.bilibili/lib/pyasn1/error.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/error.py rename to plugin.video.bilibili/lib/pyasn1/error.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/__init__.py b/plugin.video.bilibili/lib/pyasn1/type/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/__init__.py rename to plugin.video.bilibili/lib/pyasn1/type/__init__.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/base.py b/plugin.video.bilibili/lib/pyasn1/type/base.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/base.py rename to plugin.video.bilibili/lib/pyasn1/type/base.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/char.py b/plugin.video.bilibili/lib/pyasn1/type/char.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/char.py rename to plugin.video.bilibili/lib/pyasn1/type/char.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/constraint.py b/plugin.video.bilibili/lib/pyasn1/type/constraint.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/constraint.py rename to plugin.video.bilibili/lib/pyasn1/type/constraint.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/error.py b/plugin.video.bilibili/lib/pyasn1/type/error.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/error.py rename to plugin.video.bilibili/lib/pyasn1/type/error.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/namedtype.py b/plugin.video.bilibili/lib/pyasn1/type/namedtype.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/namedtype.py rename to plugin.video.bilibili/lib/pyasn1/type/namedtype.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/namedval.py b/plugin.video.bilibili/lib/pyasn1/type/namedval.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/namedval.py rename to plugin.video.bilibili/lib/pyasn1/type/namedval.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/tag.py b/plugin.video.bilibili/lib/pyasn1/type/tag.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/tag.py rename to plugin.video.bilibili/lib/pyasn1/type/tag.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/tagmap.py b/plugin.video.bilibili/lib/pyasn1/type/tagmap.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/tagmap.py rename to plugin.video.bilibili/lib/pyasn1/type/tagmap.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/univ.py b/plugin.video.bilibili/lib/pyasn1/type/univ.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/univ.py rename to plugin.video.bilibili/lib/pyasn1/type/univ.py diff --git a/plugin.video.bilibili/resources/lib/pyasn1/type/useful.py b/plugin.video.bilibili/lib/pyasn1/type/useful.py similarity index 100% rename from plugin.video.bilibili/resources/lib/pyasn1/type/useful.py rename to plugin.video.bilibili/lib/pyasn1/type/useful.py diff --git a/plugin.video.bilibili/resources/lib/rsa/__init__.py b/plugin.video.bilibili/lib/rsa/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/__init__.py rename to plugin.video.bilibili/lib/rsa/__init__.py diff --git a/plugin.video.bilibili/resources/lib/rsa/_compat.py b/plugin.video.bilibili/lib/rsa/_compat.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/_compat.py rename to plugin.video.bilibili/lib/rsa/_compat.py diff --git a/plugin.video.bilibili/resources/lib/rsa/_version133.py b/plugin.video.bilibili/lib/rsa/_version133.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/_version133.py rename to plugin.video.bilibili/lib/rsa/_version133.py diff --git a/plugin.video.bilibili/resources/lib/rsa/_version200.py b/plugin.video.bilibili/lib/rsa/_version200.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/_version200.py rename to plugin.video.bilibili/lib/rsa/_version200.py diff --git a/plugin.video.bilibili/resources/lib/rsa/asn1.py b/plugin.video.bilibili/lib/rsa/asn1.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/asn1.py rename to plugin.video.bilibili/lib/rsa/asn1.py diff --git a/plugin.video.bilibili/resources/lib/rsa/bigfile.py b/plugin.video.bilibili/lib/rsa/bigfile.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/bigfile.py rename to plugin.video.bilibili/lib/rsa/bigfile.py diff --git a/plugin.video.bilibili/resources/lib/rsa/cli.py b/plugin.video.bilibili/lib/rsa/cli.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/cli.py rename to plugin.video.bilibili/lib/rsa/cli.py diff --git a/plugin.video.bilibili/resources/lib/rsa/common.py b/plugin.video.bilibili/lib/rsa/common.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/common.py rename to plugin.video.bilibili/lib/rsa/common.py diff --git a/plugin.video.bilibili/resources/lib/rsa/core.py b/plugin.video.bilibili/lib/rsa/core.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/core.py rename to plugin.video.bilibili/lib/rsa/core.py diff --git a/plugin.video.bilibili/resources/lib/rsa/key.py b/plugin.video.bilibili/lib/rsa/key.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/key.py rename to plugin.video.bilibili/lib/rsa/key.py diff --git a/plugin.video.bilibili/resources/lib/rsa/parallel.py b/plugin.video.bilibili/lib/rsa/parallel.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/parallel.py rename to plugin.video.bilibili/lib/rsa/parallel.py diff --git a/plugin.video.bilibili/resources/lib/rsa/pem.py b/plugin.video.bilibili/lib/rsa/pem.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/pem.py rename to plugin.video.bilibili/lib/rsa/pem.py diff --git a/plugin.video.bilibili/resources/lib/rsa/pkcs1.py b/plugin.video.bilibili/lib/rsa/pkcs1.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/pkcs1.py rename to plugin.video.bilibili/lib/rsa/pkcs1.py diff --git a/plugin.video.bilibili/resources/lib/rsa/prime.py b/plugin.video.bilibili/lib/rsa/prime.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/prime.py rename to plugin.video.bilibili/lib/rsa/prime.py diff --git a/plugin.video.bilibili/resources/lib/rsa/randnum.py b/plugin.video.bilibili/lib/rsa/randnum.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/randnum.py rename to plugin.video.bilibili/lib/rsa/randnum.py diff --git a/plugin.video.bilibili/resources/lib/rsa/transform.py b/plugin.video.bilibili/lib/rsa/transform.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/transform.py rename to plugin.video.bilibili/lib/rsa/transform.py diff --git a/plugin.video.bilibili/resources/lib/rsa/util.py b/plugin.video.bilibili/lib/rsa/util.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/util.py rename to plugin.video.bilibili/lib/rsa/util.py diff --git a/plugin.video.bilibili/resources/lib/rsa/varblock.py b/plugin.video.bilibili/lib/rsa/varblock.py similarity index 100% rename from plugin.video.bilibili/resources/lib/rsa/varblock.py rename to plugin.video.bilibili/lib/rsa/varblock.py diff --git a/plugin.video.bilibili/resources/lib/subtitle.py b/plugin.video.bilibili/lib/subtitle.py similarity index 100% rename from plugin.video.bilibili/resources/lib/subtitle.py rename to plugin.video.bilibili/lib/subtitle.py diff --git a/plugin.video.bilibili/plugin.video.bilibili-1.0.6.zip b/plugin.video.bilibili/plugin.video.bilibili-1.1.0.zip similarity index 90% rename from plugin.video.bilibili/plugin.video.bilibili-1.0.6.zip rename to plugin.video.bilibili/plugin.video.bilibili-1.1.0.zip index c5b0dfdfa6b2059e2a65ee8fd71a0123cf83110d..285b45e8aa5a77e3120cd239dabef5ce40f91eb6 100644 GIT binary patch delta 18098 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 DgU&!U delta 15375 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�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 N77osK0|<NN{tsY8P4)l) diff --git a/plugin.video.cntv-live/addon.py b/plugin.video.cntv-live/addon.py index 48db036..2fc13f3 100644 --- a/plugin.video.cntv-live/addon.py +++ b/plugin.video.cntv-live/addon.py @@ -23,7 +23,8 @@ cityList = [{"area": "安徽", 'id': 'anhui', 'channel': []}, {"area": "北京", 'id': 'beijing', - 'channel': [{"btv2": "BTV文艺"}, + 'channel': [{"btv1": "BTV综合"}, + {"btv2": "BTV文艺"}, {"btv3": "BTV科教"}, {"btv4": "BTV影视"}, {"btv5": "BTV财经"}, diff --git a/plugin.video.cntv-live/plugin.video.cntv-live-2.0.10.zip b/plugin.video.cntv-live/plugin.video.cntv-live-2.0.10.zip index 827211783424a3c9a9de7f4e3cd9ca3c87b53b7a..94d9b78d36c36fb884495a48f206d686fbba2f77 100644 GIT binary patch delta 3954 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 b_Fil)G!F&wd8ih!>qA$O&J?29chCO;Sww<( delta 3937 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 diff --git a/plugin.video.cntv-video/addon.xml b/plugin.video.cntv-video/addon.xml index 22160a3..ee90e96 100644 --- a/plugin.video.cntv-video/addon.xml +++ b/plugin.video.cntv-video/addon.xml @@ -1,15 +1,24 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.cntv-video" name="CNTV 视频" - version="1.1.7" + version="1.2.0" provider-name="yfang1644"> <requires> <import addon="script.module.beautifulsoup4" version="4.3.2"/> + <import addon="script.module.geturl" version="1.0.0"/> + <import addon="plugin.video.iqiyi" version="2.4.0"/> + <import addon="plugin.video.qq" version="1.1.0"/>" + <import addon="plugin.video.funshion" version="2.1.0"/> + <import addon="plugin.video.youku" version="1.1.0"/> + <import addon="plugin.video.pptv" version="2.1.0"/> + <import addon="plugin.video.mgtv" version="1.1.0"/> + <import addon="plugin.video.letv" version="2.1.0"/> + <import addon="plugin.video.sohuvideo" version="2.6.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> - <extension point="xbmc.python.module" library="lib" /> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">CNTV video plugin</summary> <summary lang="zh">CNTV 视频插件</summary> diff --git a/plugin.video.cntv-video/default.py b/plugin.video.cntv-video/default.py index 0fe9a41..c7ad991 100644 --- a/plugin.video.cntv-video/default.py +++ b/plugin.video.cntv-video/default.py @@ -10,7 +10,18 @@ import re from bs4 import BeautifulSoup from json import loads -from lib.common import get_html +from common import get_html + +from lib.cntv import video_from_url as video_from_cntv + +from iqiyi import video_from_url as video_from_iqiyi +from qq import video_from_url as video_from_qq +from funshion import video_from_url as video_from_fun +from youku import video_from_url as video_from_youku +from pptv import video_from_url as video_from_pptv +from mgtv import video_from_url as video_from_mgtv +from letv import video_from_url as video_from_letv +from sohu import video_from_url as video_from_sohu # Plugin constants __addon__ = xbmcaddon.Addon() @@ -338,41 +349,37 @@ def PlayVideo(playurl, title, thumb): videoRes = int(__addon__.getSetting('resolution')) if ('le.com' in playurl) or ('letv.com' in playurl): - import lib.letv as letv - video = letv.LeTV() - videourl = video.video_from_url(playurl, - level=videoRes, - m3u8=__m3u8__) + videourl = video_from_letv(playurl, + level=videoRes, + m3u8=__m3u8__) li = ListItem(title, thumbnailImage=thumb) li.setInfo(type="Video", infoLabels={"Title": title}) xbmc.Player().play(__m3u8__, li) return if 'sohu.com' in playurl: - from lib.sohu import video_from_url + videourl = video_from_sohu(playurl, level=videoRes) elif 'qq.com' in playurl: - from lib.qq import video_from_url + videourl = video_from_qq(playurl, level=videoRes) elif 'qiyi.com' in playurl: - from lib.iqiyi import video_from_url + videourl = video_from_iqiyi(playurl, level=videoRes) elif 'fun.tv' in playurl: - from lib.funshion import video_from_url + videourl = video_from_fun(playurl, level=videoRes) elif 'youku.com' in playurl: - from lib.youku import video_from_url + videourl = video_from_youku(playurl, level=videoRes) elif ('cntv.cn' in playurl) or ('cctv.com' in playurl): - from lib.cntv import video_from_url + videourl = video_from_cntv(playurl, level=videoRes) elif 'mgtv.com' in playurl: - from lib.mgtv import video_from_url + videourl = video_from_mgtv(playurl, level=videoRes) elif 'pptv.com' in playurl: - from lib.pptv import video_from_url - - videourl = video_from_url(playurl, level=videoRes) + videourl = video_from_pptv(playurl, level=videoRes) ulen = len(videourl) diff --git a/plugin.video.cntv-video/plugin.video.cntv-video-1.1.7.zip b/plugin.video.cntv-video/plugin.video.cntv-video-1.2.0.zip similarity index 62% rename from plugin.video.cntv-video/plugin.video.cntv-video-1.1.7.zip rename to plugin.video.cntv-video/plugin.video.cntv-video-1.2.0.zip index 2607a7d03effaa8a55f4b3a7f81c4eba2e8ebe09..ec244c50d5f58b32788a2405c63d09cc9e7be8cf 100644 GIT binary patch delta 4661 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 delta 27390 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 diff --git a/plugin.video.funshion/addon.xml b/plugin.video.funshion/addon.xml index 3038577..f72610b 100644 --- a/plugin.video.funshion/addon.xml +++ b/plugin.video.funshion/addon.xml @@ -1,16 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.funshion" name="风行视频(Funshion)" - version="2.0.1" + version="2.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.1.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">Funshion Video plugin</summary> <summary lang="zh">风行网视频插件</summary> diff --git a/plugin.video.funshion/default.py b/plugin.video.funshion/default.py index 9643e03..48bdc89 100644 --- a/plugin.video.funshion/default.py +++ b/plugin.video.funshion/default.py @@ -6,7 +6,7 @@ from bs4 import BeautifulSoup from json import loads from common import get_html, r1 -from funshion import video_from_url +from lib.funshion import video_from_url BANNER_FMT = '[COLOR FFDEB887]%s[/COLOR]' EXTRA = '[COLOR FF8080FF]%s[/COLOR]' diff --git a/plugin.video.bilibili/resources/lib/__init__.py b/plugin.video.funshion/lib/__init__.py similarity index 100% rename from plugin.video.bilibili/resources/lib/__init__.py rename to plugin.video.funshion/lib/__init__.py diff --git a/plugin.video.cntv-video/lib/funshion.py b/plugin.video.funshion/lib/funshion.py similarity index 100% rename from plugin.video.cntv-video/lib/funshion.py rename to plugin.video.funshion/lib/funshion.py diff --git a/plugin.video.funshion/plugin.video.funshion-2.0.1.zip b/plugin.video.funshion/plugin.video.funshion-2.1.0.zip similarity index 80% rename from plugin.video.funshion/plugin.video.funshion-2.0.1.zip rename to plugin.video.funshion/plugin.video.funshion-2.1.0.zip index a08b617ec13846861e908880a266d8adc23fb4a1..d4cf68963360d6af871d8ffb4c1baa9f2c5c024b 100644 GIT binary patch delta 6459 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 O=Kb@Kn<r;H^!^7QmcmZ} delta 3832 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 N{|%<!(*OMIe*oFt0}}uM diff --git a/plugin.video.iqiyi/addon.xml b/plugin.video.iqiyi/addon.xml index bccf3c2..e0b33ba 100644 --- a/plugin.video.iqiyi/addon.xml +++ b/plugin.video.iqiyi/addon.xml @@ -1,16 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.iqiyi" name="爱奇艺视频(IQIYI)" - version="2.3.0" + version="2.4.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">IQIYI Video plugin</summary> <summary lang="zh">爱奇艺视频插件</summary> diff --git a/plugin.video.iqiyi/default.py b/plugin.video.iqiyi/default.py index 5f25e1b..dc172b2 100644 --- a/plugin.video.iqiyi/default.py +++ b/plugin.video.iqiyi/default.py @@ -8,7 +8,7 @@ from json import loads from bs4 import BeautifulSoup from common import get_html, r1 -from iqiyi import video_from_vid +from lib.iqiyi import video_from_vid ######################################################################## # 爱奇艺 list.iqiyi.com @@ -80,11 +80,9 @@ def reference(tvId, vid, title): videos = json_response['mixinVideos'] for series in videos: if tvId == series['tvId']: - mode = 'playvideo' - playable = True + mode, playable = 'playvideo', True else: - mode = 'reference' - playable = False + mode, playable = 'reference', False items.append({ 'label': series['name'], 'path': url_for(mode, tvId=series['tvId'], vid=series['vid'], title=series['name'].encode('utf-8')), @@ -172,15 +170,16 @@ def episodelist(albumId, page): tvId = item['tvId'] vid = item['vid'] title = item['tvName'].encode('utf-8') - items.append({ - 'label': BANNER_FMT % title, - 'path': url_for('playvideo', tvId=tvId, vid=vid, title=title), - 'thumbnail': item.get('tvPictureUrl', ''), - 'is_playable': True, - 'info': {'title': title, 'plot': item['tvDesc']} - }) - - if albumId != int(tvId): + isSeries = item['isSeries'] + if isSeries == 0: + items.append({ + 'label': BANNER_FMT % title, + 'path': url_for('playvideo', tvId=tvId, vid=vid, title=title), + 'thumbnail': item.get('tvPictureUrl', ''), + 'is_playable': True, + 'info': {'title': title, 'plot': item['tvDesc']} + }) + else: item1 = listType1(albumType, albumId) items += item1 if not item1: @@ -188,6 +187,8 @@ def episodelist(albumId, page): # recommend items += reference(tvId, vid, title) + if len(items) > 1 and items[0]['label'] == items[1]['label']: + del items[1] return items @@ -204,6 +205,7 @@ def playfound(url, title): vid = r1(r'#curid=.+_(.*)$', url) or \ r1(r'vid=([^&]+)', url) or \ r1(r'data-player-videoid="([^"]+)"', link) + if tvId is not None and vid is not None: items = [{ 'label': title, diff --git a/plugin.video.iqiyi/lib/__init__.py b/plugin.video.iqiyi/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/iqiyi.py b/plugin.video.iqiyi/lib/iqiyi.py similarity index 100% rename from plugin.video.cntv-video/lib/iqiyi.py rename to plugin.video.iqiyi/lib/iqiyi.py diff --git a/plugin.video.iqiyi/plugin.video.iqiyi-2.3.0.zip b/plugin.video.iqiyi/plugin.video.iqiyi-2.4.0.zip similarity index 85% rename from plugin.video.iqiyi/plugin.video.iqiyi-2.3.0.zip rename to plugin.video.iqiyi/plugin.video.iqiyi-2.4.0.zip index 65c1a0deb021aa2990d8e73f7d6d163c8b44981e..09430dc711ccc7907ed1414ebee2ae176fa3660e 100644 GIT binary patch delta 6643 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%0A4a?D3c9^8bZZe-Kefmx!AVY4X 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 delta 4880 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 diff --git a/plugin.video.letv/addon.xml b/plugin.video.letv/addon.xml index d523ce8..674e76b 100644 --- a/plugin.video.letv/addon.xml +++ b/plugin.video.letv/addon.xml @@ -1,18 +1,19 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.letv" name="乐视网 (LeTV)" - version="2.0.0" + version="2.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.beautifulsoup4" version="4.3.2"/> <import addon="script.module.xbmcswift2" version="2.4.0"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">LeTV video plugin</summary> <summary lang="zh">乐视网插件</summary> diff --git a/plugin.video.letv/default.py b/plugin.video.letv/default.py index ac5626e..fb7c54e 100644 --- a/plugin.video.letv/default.py +++ b/plugin.video.letv/default.py @@ -8,7 +8,7 @@ from json import loads from bs4 import BeautifulSoup from common import get_html -from letv import video_from_vid +from lib.letv import video_from_vid plugin = Plugin() url_for = plugin.url_for diff --git a/plugin.video.letv/lib/__init__.py b/plugin.video.letv/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/letv.py b/plugin.video.letv/lib/letv.py similarity index 100% rename from plugin.video.cntv-video/lib/letv.py rename to plugin.video.letv/lib/letv.py diff --git a/plugin.video.letv/plugin.video.letv-2.0.0.zip b/plugin.video.letv/plugin.video.letv-2.1.0.zip similarity index 82% rename from plugin.video.letv/plugin.video.letv-2.0.0.zip rename to plugin.video.letv/plugin.video.letv-2.1.0.zip index ce9fc3e053ae5ea2aa4ab24b2980d17307af76cf..a9a998e2a7b11fb531d6240669d1323c1c607a9e 100644 GIT binary patch delta 6352 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 delta 3692 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 diff --git a/plugin.video.mgtv/addon.xml b/plugin.video.mgtv/addon.xml index fad8198..9631494 100644 --- a/plugin.video.mgtv/addon.xml +++ b/plugin.video.mgtv/addon.xml @@ -1,16 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.mgtv" name="芒果TV" - version="1.0.2" + version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">Mangguo Video plugin</summary> <summary lang="zh">MGTV 视频插件</summary> diff --git a/plugin.video.mgtv/default.py b/plugin.video.mgtv/default.py index d8694ce..ad3288f 100644 --- a/plugin.video.mgtv/default.py +++ b/plugin.video.mgtv/default.py @@ -2,11 +2,10 @@ # -*- coding: utf-8 -*- from xbmcswift2 import Plugin, xbmcgui -from urlparse import parse_qsl from bs4 import BeautifulSoup from json import loads from common import get_html, r1 -from mgtv import video_from_vid +from lib.mgtv import video_from_vid plugin = Plugin() url_for = plugin.url_for diff --git a/plugin.video.mgtv/lib/__init__.py b/plugin.video.mgtv/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/mgtv.py b/plugin.video.mgtv/lib/mgtv.py similarity index 100% rename from plugin.video.cntv-video/lib/mgtv.py rename to plugin.video.mgtv/lib/mgtv.py diff --git a/plugin.video.mgtv/plugin.video.mgtv-1.0.2.zip b/plugin.video.mgtv/plugin.video.mgtv-1.1.0.zip similarity index 56% rename from plugin.video.mgtv/plugin.video.mgtv-1.0.2.zip rename to plugin.video.mgtv/plugin.video.mgtv-1.1.0.zip index 71a1ae1139c17d16cada7083b6c155eb2fabd84a..f4830acaf237ae7d60a7d98180f6553dbd89416e 100644 GIT binary patch delta 4847 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 delta 3111 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 JMDFl={{bG|xqJWs diff --git a/plugin.video.pptv/addon.xml b/plugin.video.pptv/addon.xml index 8ab05ba..d5fb907 100644 --- a/plugin.video.pptv/addon.xml +++ b/plugin.video.pptv/addon.xml @@ -1,27 +1,28 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.pptv" name="PPTV视频" - version="2.0.0" + version="2.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> - </requires> - <extension + <import addon="script.module.geturl" version="1.0.0"/> + </requires> + <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">PPTV video plugin</summary> <summary lang="zh">PPTV视频插件</summary> <description lang="en">Watch online videos in www.pptv.com site.</description> <description lang="zh">观看 www.pptv.com 在线直播和点播视频.</description> - <license>GNU GENERAL PUBLIC LICENSE. Version 3, 29 June 2007</license> - <forum></forum> - <website></website> + <license>GNU GENERAL PUBLIC LICENSE. Version 3, 29 June 2007</license> + <forum></forum> + <website></website> <source>https://github.com/yfang1644/kodi_plugins/plugin.video.pptv</source> - <email>yfang1644@gmail.com</email> + <email>yfang1644@gmail.com</email> <platform>all</platform> </extension> </addon> diff --git a/plugin.video.pptv/default.py b/plugin.video.pptv/default.py index 6d38dce..7abf7bb 100644 --- a/plugin.video.pptv/default.py +++ b/plugin.video.pptv/default.py @@ -9,15 +9,13 @@ from random import random from json import loads from common import get_html -from pptv import video_from_url - +from lib.pptv import video_from_url # Plugin constants plugin = Plugin() url_for = plugin.url_for - PPTV_LIST = 'http://list.pptv.com/' PPTV_TV_LIST = 'http://live.pptv.com/list/tv_list' diff --git a/plugin.video.pptv/lib/__init__.py b/plugin.video.pptv/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/pptv.py b/plugin.video.pptv/lib/pptv.py similarity index 100% rename from plugin.video.cntv-video/lib/pptv.py rename to plugin.video.pptv/lib/pptv.py diff --git a/plugin.video.pptv/plugin.video.pptv-2.0.0.zip b/plugin.video.pptv/plugin.video.pptv-2.1.0.zip similarity index 94% rename from plugin.video.pptv/plugin.video.pptv-2.0.0.zip rename to plugin.video.pptv/plugin.video.pptv-2.1.0.zip index ce854de20235ff0ade6306419889222bf0fffc0f..d2ce85c62267554dc0e9b669e642f343d6ff818e 100644 GIT binary patch delta 5979 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 M8X&^A>jUWj025)T82|tP delta 3027 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 Xjl;0RfBy@yclh@(`;gookVF0hfev&( diff --git a/plugin.video.qq/addon.xml b/plugin.video.qq/addon.xml index 82cdf13..6f57fc1 100644 --- a/plugin.video.qq/addon.xml +++ b/plugin.video.qq/addon.xml @@ -1,15 +1,16 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.qq" name="腾讯视频" - version="1.0.4" + version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">Tencent Video plugin</summary> <summary lang="zh">QQ视频插件</summary> diff --git a/plugin.video.qq/default.py b/plugin.video.qq/default.py index 1c8c6fd..4a05bcb 100644 --- a/plugin.video.qq/default.py +++ b/plugin.video.qq/default.py @@ -11,7 +11,7 @@ from bs4 import BeautifulSoup from json import loads from common import get_html -from qq import video_from_url, video_from_vid +from lib.qq import video_from_url, video_from_vid # Plugin constants __addon__ = xbmcaddon.Addon() diff --git a/plugin.video.qq/lib/__init__.py b/plugin.video.qq/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/qq.py b/plugin.video.qq/lib/qq.py similarity index 100% rename from plugin.video.cntv-video/lib/qq.py rename to plugin.video.qq/lib/qq.py diff --git a/plugin.video.cntv-video/lib/qq2.py b/plugin.video.qq/lib/qq2.py similarity index 100% rename from plugin.video.cntv-video/lib/qq2.py rename to plugin.video.qq/lib/qq2.py diff --git a/plugin.video.qq/plugin.video.qq-1.0.4.zip b/plugin.video.qq/plugin.video.qq-1.1.0.zip similarity index 82% rename from plugin.video.qq/plugin.video.qq-1.0.4.zip rename to plugin.video.qq/plugin.video.qq-1.1.0.zip index 62d83f529ac675eedfabd2d6c3bc1ad82dcae48d..de9b70d73936d51ca0862d0a408d359f4837e699 100644 GIT binary patch delta 9029 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 WRYZJFqX7Wu&pSB~0N_~pbM`-->WkR` delta 6144 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 diff --git a/plugin.video.rrsp/addon.xml b/plugin.video.rrsp/addon.xml index 559849c..0c305c4 100644 --- a/plugin.video.rrsp/addon.xml +++ b/plugin.video.rrsp/addon.xml @@ -1,15 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.rrsp" name="人人视频" - version="1.0.6" + version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> - </requires> + <import addon="script.module.getutl" version="1.0.0"/> + <import addon="plugin.video.youku" version="1.1.0"/> + <import addon="plugin.video.letv" version="2.1.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="zh-CN">人人视频</summary> <description>人人视频</description> diff --git a/plugin.video.rrsp/default.py b/plugin.video.rrsp/default.py index 93fd80a..380a98d 100644 --- a/plugin.video.rrsp/default.py +++ b/plugin.video.rrsp/default.py @@ -7,7 +7,7 @@ ADDON = xbmcaddon.Addon() ADDON_PATH = ADDON.getAddonInfo('path').decode("utf-8") -sys.path.append(os.path.join(ADDON_PATH, 'resources', 'lib')) +sys.path.append(os.path.join(ADDON_PATH, 'lib')) from xbmcswift2 import Plugin, ListItem, xbmc, xbmcgui diff --git a/plugin.video.rrsp/lib/__init__.py b/plugin.video.rrsp/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.rrsp/resources/lib/acfun.py b/plugin.video.rrsp/lib/acfun.py similarity index 100% rename from plugin.video.rrsp/resources/lib/acfun.py rename to plugin.video.rrsp/lib/acfun.py diff --git a/plugin.video.rrsp/resources/lib/rrmj.py b/plugin.video.rrsp/lib/rrmj.py similarity index 100% rename from plugin.video.rrsp/resources/lib/rrmj.py rename to plugin.video.rrsp/lib/rrmj.py diff --git a/plugin.video.rrsp/plugin.video.rrsp-1.0.6.zip b/plugin.video.rrsp/plugin.video.rrsp-1.1.0.zip similarity index 94% rename from plugin.video.rrsp/plugin.video.rrsp-1.0.6.zip rename to plugin.video.rrsp/plugin.video.rrsp-1.1.0.zip index af6ff9be4fd742bdffade85634d6d451821eb6f2..212446aedc86ca5280018c3c43d89566e6a85fab 100644 GIT binary patch delta 5880 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 V0_4EtAac+fd=O|Y47fbB{{fdbY8n6l delta 5675 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 IfxDmkKQ{_uTmS$7 diff --git a/plugin.video.sohuvideo/addon.xml b/plugin.video.sohuvideo/addon.xml index cd6ee30..05cc330 100644 --- a/plugin.video.sohuvideo/addon.xml +++ b/plugin.video.sohuvideo/addon.xml @@ -1,17 +1,22 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.sohuvideo" name="搜狐视频(SoHu)" - version="2.5.1" - provider-name="Taxigps,yfang1644"> + version="2.6.0" + provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> + <import addon="plugin.video.iqiyi" version="2.3.0"/> + <import addon="plugin.video.youku" version="1.0.0"/> + <import addon="plugin.video.qq" version="1.1.0"/> + <import addon="plugin.video.funshion" version="2.1.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">SoHu Video plugin</summary> <summary lang="zh">搜狐视频插件</summary> diff --git a/plugin.video.sohuvideo/default.py b/plugin.video.sohuvideo/default.py index 1db5ad8..8156e58 100644 --- a/plugin.video.sohuvideo/default.py +++ b/plugin.video.sohuvideo/default.py @@ -8,7 +8,7 @@ from bs4 import BeautifulSoup from urlparse import urlparse from common import get_html -from sohu import video_from_url, video_from_vid +from lib.sohu import video_from_url from iqiyi import video_from_url as video_from_iqiyi from qq import video_from_url as video_from_qq diff --git a/plugin.video.sohuvideo/lib/__init__.py b/plugin.video.sohuvideo/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/sohu.py b/plugin.video.sohuvideo/lib/sohu.py similarity index 100% rename from plugin.video.cntv-video/lib/sohu.py rename to plugin.video.sohuvideo/lib/sohu.py diff --git a/plugin.video.sohuvideo/plugin.video.sohuvideo-2.5.1.zip b/plugin.video.sohuvideo/plugin.video.sohuvideo-2.6.0.zip similarity index 86% rename from plugin.video.sohuvideo/plugin.video.sohuvideo-2.5.1.zip rename to plugin.video.sohuvideo/plugin.video.sohuvideo-2.6.0.zip index c93ce843ce604f5c2a92f1f3198735e661f7cce9..3a1879f47e7d8d8b84fdfd1887d446be0608e04d 100644 GIT binary patch delta 6899 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 delta 5203 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 B`Aq-- diff --git a/plugin.video.tudou/addon.py b/plugin.video.tudou/addon.py index 0eb3162..bd62a52 100644 --- a/plugin.video.tudou/addon.py +++ b/plugin.video.tudou/addon.py @@ -1,14 +1,13 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -import xbmc -from xbmcswift2 import Plugin, xbmcgui +from xbmcswift2 import Plugin, xbmc, xbmcgui from urllib import quote_plus import re from bs4 import BeautifulSoup from common import get_html, r1 from youku import Youku -from tudou import Tudou +from lib.tudou import Tudou plugin = Plugin() url_for = plugin.url_for @@ -97,6 +96,7 @@ def getyoukulist(url): 'label': title, 'path': url_for('playvideo', url=url), 'is_playable': True, + 'info': {'title': title}, }) else: for item in progs: @@ -110,6 +110,7 @@ def getyoukulist(url): 'path': url_for('playvideo', url=item.a['href']), 'is_playable': True, 'thumbnail': item.img['src'], + 'info': {'title': title} }) soup = tree.find_all('div', {'class': 'items clearfix'}) @@ -291,16 +292,3 @@ def index(): # main programs goes here ######################################### if __name__ == '__main__': plugin.run() - -runlist = { - None: 'mainMenu()', - 'videolist': 'listSubMenu(params)', - 'videolist1': 'listSubMenu1(params)', - 'videolist2': 'listSubMenu2(params)', - 'albumlist': 'albumList(params)', - 'codelist': 'relatedPlayList(params)', - 'playvideo': 'PlayVideo(params)', - 'search': 'searchInTudou(params)', - 'select': 'normalSelect(params)' -} - diff --git a/plugin.video.tudou/addon.xml b/plugin.video.tudou/addon.xml index 63f1234..6b04d16 100644 --- a/plugin.video.tudou/addon.xml +++ b/plugin.video.tudou/addon.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.tudou" name="土豆(Tudou)" - version="1.0.1" + version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.9"/> + <import addon="script.module.geturl" version="1.0.0"/> + <import addon="plugin.video.youku" version="1.1.0"/> </requires> <extension point="xbmc.python.pluginsource" library="addon.py"> diff --git a/plugin.video.tudou/lib/__init__.py b/plugin.video.tudou/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/tudou.py b/plugin.video.tudou/lib/tudou.py similarity index 100% rename from plugin.video.cntv-video/lib/tudou.py rename to plugin.video.tudou/lib/tudou.py diff --git a/plugin.video.tudou/plugin.video.tudou-1.0.1.zip b/plugin.video.tudou/plugin.video.tudou-1.1.0.zip similarity index 92% rename from plugin.video.tudou/plugin.video.tudou-1.0.1.zip rename to plugin.video.tudou/plugin.video.tudou-1.1.0.zip index c9b699288eca602803a0613430ef5e3c7e0e9bd9..a89ad81e4f2965531ca2696770da72f41f13f943 100644 GIT binary patch delta 4695 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 WL<o4Bm;gWkkh`3Uz6xJ``o91)XhG8e delta 3313 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 RuR|dh1j=$5L}V}j^=~@k4wL`@ diff --git a/plugin.video.tvonline/addon.xml b/plugin.video.tvonline/addon.xml index f59d650..159d36e 100644 --- a/plugin.video.tvonline/addon.xml +++ b/plugin.video.tvonline/addon.xml @@ -1,27 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.tvonline" - name="地方电视台直播" version="1.0.0" + name="地方电视台直播" version="1.0.1" provider-name="yfang1644"> - <requires> - <import addon="plugin.video.cntv-video" version="1.0.6"/> - </requires> - - <extension point="xbmc.python.pluginsource" library="default.py"> - <provides>video</provides> - </extension> - - <extension point="xbmc.addon.metadata"> - <summary lang="en">TV Live plugin</summary> - <summary lang="zh">地方电视台直播</summary> - <description lang="en">Stream live Nanjing TV and other local TV programs</description> - <description lang="zh">电视台直播</description> + <requires> + <import addon="script.module.xbmcswift2" version="2.4.0"/> + <import addon="script.module.geturl" version="1.0.0"/> + </requires> + <extension point="xbmc.python.pluginsource" library="default.py"> + <provides>video</provides> + </extension> + <extension point="xbmc.addon.metadata"> + <summary lang="en">TV Live plugin</summary> + <summary lang="zh">地方电视台直播</summary> + <description lang="en">Stream live Nanjing TV and other local TV programs</description> + <description lang="zh">电视台直播</description> <disclaimer lang="en">http://www.nbs.cn, http://www.haoqu.net/3/</disclaimer> - <language></language> - <license>GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007</license> - <forum></forum> - <website></website> + <language></language> + <license>GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007</license> + <forum></forum> + <website></website> <source>https://github.com/yfang1644/kodi_plugins/plugin.video.tvonline</source> <email>yfang1644@gmail.com</email> - <platform>all</platform> - </extension> + <platform>all</platform> + </extension> </addon> diff --git a/plugin.video.tvonline/default.py b/plugin.video.tvonline/default.py index 937773d..caba055 100644 --- a/plugin.video.tvonline/default.py +++ b/plugin.video.tvonline/default.py @@ -6,7 +6,6 @@ import xbmcplugin import xbmcaddon import urllib2 -import urllib import urlparse import re import sys diff --git a/plugin.video.tvonline/plugin.video.tvonline-1.0.0.zip b/plugin.video.tvonline/plugin.video.tvonline-1.0.1.zip similarity index 96% rename from plugin.video.tvonline/plugin.video.tvonline-1.0.0.zip rename to plugin.video.tvonline/plugin.video.tvonline-1.0.1.zip index fad3a0a748664f762230abfd03913d67e3263b8f..a54ea30d11e04810cca81386345b018d101e7c09 100644 GIT binary patch delta 1156 zcmezSnWgUw3txaYGYc032<Wet@tw%0&Ee_W8tnqa6CFcXSom6_H_mLS7IbKr@eLGY zuykNzVA#yUz#u>Uf(E1HWcM1r`WZkqyMVZ~f}4Sn<pnbX1DNOyIh}XeLFDdpZMV&S z>61(zsos9NFraY}$HisQCL8nLG*<2~er)rDVVeiX#ztH1C3*=5*|$D5mbkt0@ue+? zCOxgZTYPTs_nzkFsUjJS$BNcE-BGvgaX4!AP>c8DmmfdxG54%V)=G5JuIKnDrDNA& z#po@xR>0qBPPfw2E}aUdSvy+8nzRqdK9N7Vgx~UiS=q;@-=98@uisa1@xP+%=hx>) zm&^Z<(tLTHapy(VzMHF+uNN=7^l$G&0r#tA2@keBV9T*xJ8j3At%WNt2`5QQ&$Cu4 z4dPH(J+tTSr1N(dxSA_C&sY8H-ysrHpLoPRYxakRxNwmJry8~R7sV7mb&By)_<1We zYT~Y-FmW}u9+vr%Y1b6}63%fw{G)kCXsc#x@2W#=TW02WNH4RVxq40q%W<J+5z_a? zf~u-iB5q~|SXkLPChubiInDFp*^#w|?~P^NzInSYVEvv|*_s93l}~sKUV1;wRQK8Y zbzQx4T-$c(OM1-BEqyaJrq}#hnRtn9OKXXGo#y+t4be?Ids!cEQpwqpdhThzMy%d+ zm$N#Zq2gPo87=eYUUcAM?W;uT2C*#8&<!Gs8q5w~)9bI@uV6LD=i<W*qpH6tJ#oJC z`{He!|H=CHxy6<Q&E|Vse(`}~RiuVPbKLuV$8WPl=RbUQOXQOA)%$OM38hWj9d!8W zimT^Nb%rjwwtQ;QbWvlWY|q)<?)QJjADrD=`10K9ce`UB=QKJR=`CV=QW$m4J0bse z*6P&agLAIyD66%Y|GfHU*-7T8O3PP&SSQb{^8ly8%}?w8YJ*vmpRH<P*&bZ&Jvnc+ zDaWh|=_pVdo#-ezeX9kd(Bx~Y%^?~D*RU``Sdwd(RrCJYE$#dF#I?D$ybKHvr=QVa z)ZxgHY>5Wxou<inKzC(y_}31>yVV~>Z>n8f>fChGboteyHyNMW99R3^+N3068g2N| zlF9g)Ti*+2uIcYJ85KmPuyb$a49)c_x~g?KZtJOs%O|}Ep02FLXw9_e$n*p)Mn5Kt z)!R2{F)n0cdS$ddSeKEHkx9yUda@p)57RBz?HlzND;Syjw@=qLU{qoho9<`8IGIs> z`y&I!8b+pQwe1N;jK7#!K$&uSoEf7f3n*Jo|8K@9J$;)QV+t=yhMcZ$4pafkh!7R^ z=8STTYo^aLXG~*Wy^3M7L5=uyISWQZc~HQCGdq+}V32^a1Q^~r7EjN!VANm%1uDcG zV35i&o&||2PyVr*Z#t_bqXYB9H4p>iEgAI`QNmS=fdOV9Bhc6_jVCl1!FIpYVB}$E TWncyc`Scr>jPh*pW*`*+DkIm| delta 1141 zcmeDC!t(bs3txaYGYc032wa-%<~@;5o5LsidZafHPjn1niMG2Qxp8JoweaB_C-3Q6 z7R9<u3=Enq3=HxNGSfGjGm1}kui>lTd*Nc_Qon1Fr4`%^j4Ush85qDsZSd(lVMCEv z^Z3NdxjmD&Jz9ElO1l$lmy*luyott-&q(~4aciE<FUFjS0!hr(VIHvun)tI$rx(2S zRQKhGkm_Ck{9f_7xz#fAx=S34({!${>aPwIS6&u0w{YtBk3YUtK4)~h7C1F<VZG?< z$EuruXk;EWIlaZn=Jn&C5X<n3J?TE~dCR6g=z1vDv~)$wq}A)EU!Pxpx8~Q+-?x9S z=AUjJUl&vVr_bD@(M)8DTeZyPmD<yTSADv-_ptMvE#Hz3pVQ8p;p?<2-f;R-Gd@<s zXs;mC;<+2{E_#*t=;8^fJbtHb1wKDjLbBGy)XVFu8TFo8s=cKvD`B<vWTPII`4U;v zYUga!T-(yDvp!!xZsm5*1-+ia)w|jr)YmMW=wak;{3@e2OIx#%kMouLArU{n^A{$Z zmspj0G-c{W<==}AoIH1be<X`k@L})gPuFDn%}ES#+U;Pv=#_2+6QgMbV`jKPbBo`~ z5AGK-@>bMuG2Gewg+E3ArM{tb>e&+GykN(jUqX6U9oqRxQ1SCmn;>EC<h;e!?yOgz zhc20+%+8V^-Jo!+Im9I0(`Qz$#dFOwO{&Ki8(PWru&tlZb8+>@%MZKLIp!UFk#fN; zeQWClN9nirF8bO>FVt<XmY)!IR4!wcuPWo-y5Ey6XGgrV@p$|;?{3`N<rgNf{<JK2 zHSG-2^?Y3Yi7)Tb?5TfGoSV%yc}?N913p1|lh~dVzDwrk(c_ul6v<k;AXqJgW5cW5 zEvZ*$uz0JjwV%AE&I6p}Hvg#ms|{vN{<*4!#i47L*W||4rW_|esYg!ty#`F0l9R8m z_JpWaS;N8zVd<=0R?XWp$JN{U(z+}5ybKKQr{C9L)Zs9fycYRT<yz!)VNJ#Z`ggal zv=0B;A$Yg?qv%bwi%XrEB2AWGEqdcIrOk1*@2yQrBBs%XA1#?aKX>bU!Tf5P7Ndel z2q*Ve&d^-1qN`e$Q@5UaxO`GZ_;eF3Mr)>;W77+@82y-btlNH2i*X?nQ<U-c6kSF> zMy6XP(@XRieVAssZ$G5RSi#7|zk9lk0izP5(e!u&#>tGP+dmsH)-W<zt8XtfV*JI- z0?L5X^UWA7SwLBEx_~*O^z`Fqj48Y*nQyv<IZy>C%Ry93FlUrwoH>2HIb#~rj8)S& zm@`UD*SBCalm~?xIAcQz1qKNyOMv06W5V=$3q}nVaEO9z0*0s1^cxn8JdC?QGRl*= z*YHgjvt)E&I=2R5Xn`f8o+3)<YB4at3}plwy`^!h1|zssnEpqDk%yg?ff*F?(_dOL L%Cq^Ifs_CMzN^m< diff --git a/plugin.video.yinyuetai/addon.py b/plugin.video.yinyuetai/addon.py new file mode 100644 index 0000000..f620097 --- /dev/null +++ b/plugin.video.yinyuetai/addon.py @@ -0,0 +1,164 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from xbmcswift2 import Plugin, xbmcgui +import xbmcaddon +from urllib import urlencode +from json import loads +from common import get_html +from yinyuetai import video_from_vid + +########################################################################## +# 音悦台MV +########################################################################## + +__addon__ = xbmcaddon.Addon() + +plugin = Plugin() +url_for = plugin.url_for + +@plugin.route('/playvideo/<vid>') +def playvideo(vid): + v_url = video_from_vid(vid) + url = 'stack://' + ' , '.join(v_url) + plugin.set_resolved_url(url) + + +@plugin.route('/setfilters') +def setfilters(): +# a=ML + AREA_LIST = {'全部': '0', '内地':'ML', '港台':'HT', '欧美':'US', + '韩国': 'KR', '日本':'JP', '二次元':'ACG','其他': 'Other'} +# p=Boy + PERSONS = {'全部': '0', '男艺人': 'Boy', '女艺人': 'Girl', + '乐队组合': 'Combo', '其他': 'Other'} + +# c=hd, shd..., 画质 + dialog = xbmcgui.Dialog() + + title = u'艺人地区' + keyword = AREA_LIST.keys() + sel = dialog.select(title, keyword) + area = '0' if sel < 0 else AREA_LIST[keyword[sel]] + + title = u'艺人类别' + keyword = PERSONS.keys() + sel = dialog.select(title, keyword) + person = '0' if sel < 0 else PERSONS[keyword[sel]] + return videolist(sid=0, tid=0, page=1, area=area, person=person) + + +@plugin.route('/videolist/<sid>/<tid>/<page>/<area>/<person>') +def videolist(sid, tid, page, area, person): + plugin.set_content('videos') + res = int(__addon__.getSetting('video_resolution')) + reslist = ('hd', 'shd', 'sh') + + page = int(page) + req = { + 'sid': sid, + 'tid': tid, + 'a': '' if area == '0' else area, + 'p': '' if person == '0' else person, + 'c': reslist[res], + 's': '', + 'pageSize': 20, + 'page': page + } + + data = urlencode(req) + mvapi = 'http://mvapi.yinyuetai.com/mvchannel/so?' + html = get_html(mvapi + data) + results = loads(html) + totalpage = int(results['pageInfo']['pageCount']) + results = results['result'] + + items = [] + if page > 1: + items.append({ + 'label': u'上一页 ({}/{})'.format(page-1, totalpage), + 'path': url_for('videolist', + sid=sid, + tid=tid, + page=page-1, + area=area, + person=person) + }) + + for item in results: + d = item.get('duration', '0:0:0') + duration = 0 + for t in d.split(':'): + duration = duration*60 + int(t) + + items.append({ + 'label': item['title'], + 'path': url_for('playvideo', vid=item['videoId']), + 'thumbnail': item['image'], + 'is_playable': True, + 'info': {'title': item['title'], + 'plot': item['description'], + 'duration': duration} + }) + if page < totalpage: + items.append({ + 'label': u'下一页 ({}/{})'.format(page+1, totalpage), + 'path': url_for('videolist', + sid=sid, + tid=tid, + page=page+1, + area=area, + person=person) + }) + + return items + + +@plugin.route('/mainlist/<sid>/<tid>/<page>/<area>/<person>') +def mainlist(sid, tid, page, area, person): + catapi = 'http://mvapi.yinyuetai.com/cata/get-cata?cataId=%s' + items = [{ + 'label': u'[选择地区/类别]', + 'path': url_for('setfilters') + }] + + html = get_html(catapi % sid) + catas = loads(html)['catas'] + catas.insert(0, {'cataName': u'全部', 'cataId': -1}) + for item in catas: + tid = item['cataId'] + tid = tid if int(tid) > 0 else 0 + items.append({ + 'label': item['cataName'], + 'path': url_for('videolist', sid=sid, tid=tid, page=page, area=area, person=person) + }) + return items + + +@plugin.route('/') +def root(): + items = [ + ('全部', '0'), + ('音乐视频', '3'), + ('现场/live','4'), + ('娱乐视频', '9'), + ('舞蹈', '5'), + ('演奏', '6'), + ('ACG', '7'), + ('戏剧', '8')] + + for (name, sid) in items: + path = 'videolist' if sid == '0' else 'mainlist' + yield { + 'label': name, + 'path': url_for(path, + sid=sid, + tid='0', + page=1, + area='0', + person='0') + } + + +if __name__ == '__main__': + plugin.run() diff --git a/plugin.video.yinyuetai/addon.xml b/plugin.video.yinyuetai/addon.xml index c08dc93..d5d6e96 100644 --- a/plugin.video.yinyuetai/addon.xml +++ b/plugin.video.yinyuetai/addon.xml @@ -1,16 +1,19 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.yinyuetai" name="音悦台MV(YinYueTai)" - version="1.8.1" + version="1.9.0" provider-name="yfang1644"> <requires> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.xbmcswift2" version="2.4.0"/> + <import addon="script.module.beautifulsoup4" version="4.3.2"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <summary lang="en">YinYueTai video plugin</summary> <summary lang="zh">音悦台视频插件</summary> diff --git a/plugin.video.yinyuetai/default.py b/plugin.video.yinyuetai/default.py index f620097..669653c 100644 --- a/plugin.video.yinyuetai/default.py +++ b/plugin.video.yinyuetai/default.py @@ -2,18 +2,15 @@ # -*- coding: utf-8 -*- from xbmcswift2 import Plugin, xbmcgui -import xbmcaddon from urllib import urlencode from json import loads from common import get_html -from yinyuetai import video_from_vid +from lib.yinyuetai import video_from_vid ########################################################################## # 音悦台MV ########################################################################## -__addon__ = xbmcaddon.Addon() - plugin = Plugin() url_for = plugin.url_for @@ -51,7 +48,7 @@ def setfilters(): @plugin.route('/videolist/<sid>/<tid>/<page>/<area>/<person>') def videolist(sid, tid, page, area, person): plugin.set_content('videos') - res = int(__addon__.getSetting('video_resolution')) + res = int(plugin.addon.getSetting('video_resolution')) reslist = ('hd', 'shd', 'sh') page = int(page) diff --git a/plugin.video.yinyuetai/lib/__init__.py b/plugin.video.yinyuetai/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/yinyuetai.py b/plugin.video.yinyuetai/lib/yinyuetai.py similarity index 100% rename from plugin.video.cntv-video/lib/yinyuetai.py rename to plugin.video.yinyuetai/lib/yinyuetai.py diff --git a/plugin.video.yinyuetai/plugin.video.yinyuetai-1.8.1.zip b/plugin.video.yinyuetai/plugin.video.yinyuetai-1.9.0.zip similarity index 77% rename from plugin.video.yinyuetai/plugin.video.yinyuetai-1.8.1.zip rename to plugin.video.yinyuetai/plugin.video.yinyuetai-1.9.0.zip index d1ec7550a2a77522cb12c1960c0ae9f5f09b9704..19289034436ef940df711c9f9b0d571c8dd02d49 100644 GIT binary patch delta 4101 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 delta 850 zcmdmXkn#RzM!o=VW)?065SYHJ%V#2=4u{{hGf^Nsc`s`yOTFTmsLf(*FP#MofzsC+ zCV$w)$iUFZ%)p>9@u1Y?{5bA<P6lQ+pmGo{t>9*0WO)IU1rxPF_W4%~MCMn|KlF*^ z@Xa|Pp`t}GYTJapEmsPEQr$Nv^tWZ{oXf2f8@Dz|a&|IGOq?K*@Zj_Xr~Rycb7sZ- zpP+fZZomEc{m1*Zxh?K3*}7@ML&?gPi7j`;xK8od+t*py9$E2?sh(@0?g^gln~u5H z9C8Vaa9DMsVCn22#+xggqAqD=NWW}7BrIYlpq8-iUj5#huOA=%IbHMdfy+Tp<^I+x z32V1Y?I~jCwbHH4%zHnSsV<l!`{sS}y?A5w^HNV!WKaL|n0d;ozbf2Z=jj9U%m2jR z^LX(Y$a1{YQ=S~HzcAZ}X=-Tw1LHlhv*v`XjgM9cT(YhAw5nfkl<wSu+&1o=LcQM> zO83|BExx+P{7A+sc4g0>%O=aR|DAE9rChH?Jo(=)L$wpiy1V|UB+QeO`8rACR$9r6 zJ>tKMdMml!onL-ET>f6ny#0T_KE54$!NBod$W!aZ|Ch{f3{$vR(-?M6YD!u2lWXAy zR)_vf&pdwO=<f6T_y3=x|E~GC#gALRSJnAsuKcqrvaHG^SJ0OC_TMCr{(F1(CLZ%J zxp_PJ635cYL-v}xt<DLocl((2F#MXN-WI-xapBt!r*1hv!T%rAWE&qhNc6Y)9AE>p zCVK_%gfRB9N={Y?@q)<bg-9_9wnTM!=kJ-Wl*Y!u&?>~hpa@DHbqPG&z~u3qMJvh> zm^?PO`INKqF*3<9BU0RCyBI4LaB^#mlb(EyRftaloEkyImc~Ga$sc1~6)@5s14I!p zDFPK$xd0VO0@ETN3n&pzZj7^J>T`pNu}!`m=fdRcJ6SP4gNfG<EczjsXYz)42c`@d rmus?Uf`I~t7f@`u;1AYYm%z^g^3UXn3F3Sl3>*v=z|=l54CGt@>w#Y3 diff --git a/plugin.video.yongjiu/addon.xml b/plugin.video.yongjiu/addon.xml index ff30fc2..10fd853 100644 --- a/plugin.video.yongjiu/addon.xml +++ b/plugin.video.yongjiu/addon.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.yongjiu" name="永久资源" - version="1.0.2" + version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> <import addon="script.module.beautifulsoup4" version="4.3.2"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> diff --git a/plugin.video.yongjiu/default.py b/plugin.video.yongjiu/default.py index 499c012..f04c512 100644 --- a/plugin.video.yongjiu/default.py +++ b/plugin.video.yongjiu/default.py @@ -1,11 +1,7 @@ #!/usr/bin/python # -*- coding: utf8 -*- -import os -import sys -import xbmcaddon - -from xbmcswift2 import Plugin, ListItem, xbmc, xbmcgui +from xbmcswift2 import Plugin, ListItem, xbmc from bs4 import BeautifulSoup from urlparse import urlparse from json import loads diff --git a/plugin.video.yongjiu/plugin.video.yongjiu-1.0.2.zip b/plugin.video.yongjiu/plugin.video.yongjiu-1.1.0.zip similarity index 73% rename from plugin.video.yongjiu/plugin.video.yongjiu-1.0.2.zip rename to plugin.video.yongjiu/plugin.video.yongjiu-1.1.0.zip index 224f11d7c75333c51bf302b6c1833dfd36f2bca8..7c92f7d807a985366fe36644b049af5d2612c7ce 100644 GIT binary patch delta 2296 zcmZ9Oc{CJ!7stnzEyhfi7$RGRtg~33Xe^^K7z|}=FrkRDuZ?vYV{c>)FO{8Wv2PKw zl+xIGvWscRQi-z6L+8Bbyzg`W_}%+Ezk9y-pYQqI&!*2OAAU<T8#@o+D0C{tG3opY zoUWL7hY(<V`UM-d!&H|k!N*t5Du%JXm5lk!0sxd!JNXod2hq_E7a?&Dfg!vA7Ir!t z0PyEXwjTDP=?ngaAoi#(uO&IflFh6PHt43q>Mc10lVy_!l7S2T$gOz;4p4=jX(E|Z z@v>zRGdZuC8BZl3@+c^OREWlU<ji*a_QjxOt0+BprE!I59Xb!Y878n7m);p3?3-GH z#1kcOqC)m{?6yN)Q&4H>;B!`8H2z$~OQDYoq94jeDndH-lJvLFDj>0u-}c8-J(f#% zw}$QZN28t>IZ0+2BP`u%_ieRsJ#SxVlCI|&91mY?a)CRE0J^S~C$m*QV*gk^_ZVsA z;j9WRd|e(n<c}ahdetawGVQXj;;`!>YsC1`_9RYKwPs3h7U^8}cjHc8cV8QUh&r{d zrId1cP)4p|R%gix8(W_eA%-q6Y$(G(YUh=uwVbM()>c=%lBU25KU&FGGS}LI(Cy(L zSC{I~$mTp04GbXrwq-=0;`+EcM4hCMNo4bz+&S3%wGMp3?JUQCDV8$!kQ8ybZjTsI z%g0br5iu!bY|k(n&TP$n*l=$D`)a$E(}Tz<{>}Lv@6a7-@jy9t;7hn*6WqCkJ$NRX zG1eNe<apf|?|2LG{RDIrysdawlEj=n81UMAq6gFqRDC}t>~ha9{pTnmQQk)&w&&|8 zUN)v#3RPl5R!s{O+=ubUIE;Uw1E~z4>5)6AaDkkooPI%!x+;J=DxV=h?kxPmZ4eCF zvJf)I0RW@|sYL=1YA+Z_3_rBYVb8y9lW&Jk{bVT6zH0}C7>56JStm&uReE2%90Qjo zJe=a-#@J@|t%(MY1Uanz9OB2O%q6|Le*$dRD0NzSFHir@G2B<53-0p$T__pMc;(6_ z4mX?(?6Swr#fi8y(Q=epAq3y>R9W@U#GchOT38r_y8uy5Ft3phEf$Wb@C6rSJsnw0 zDD!BYkV|bG0m24@lg(uGuni9;Jd|o+g=6!MW7oQ?6|uedUCm$RL)J9pc>6%=<~XD| zp&&R(^aHlUe{RyhM^}Z}*e-!-!Y{sV1k)9iGsv)T@XAnW1%W%Y$K|BEx(D%eqa&#d zX;KjE7j_2}8TpgT=6XpW_r=5>>B|GIKa<91&a*WZggxdKCFD-*r*qbrSYKf&pX11! z4P6GV6&C)LlCmyYs7s%qH;g=`cpMjZReQxVUZ|_vp{cj~^SrBQUm-d`<C=BM+BGHf z$i^E1bkNSmIZ%}<yWibU-sBx(d3H@D>xtFH+2s)C#*&;?45~XV=xOKmhoyv4oNHJ4 zmB+Arcxb-Wx+^e>V^e@!e@T6|%-&P|3fMX0h5YcO-|0%)E{){eZ;yQEBExUsHuUCY z!(7aOVK0us*n6zEo3RG|z0`1FdT(oC#jay-zuSVjckq2>{c796mPM^@Y_72*ckd<U zEOmeXeWzpEz!QQPFLCkS=LV&klxu3Aac`}NPzD&^#%W=XC2z$zUH7`?mg)IAF~f<2 zdP?Xt7^Kpz)7c7{Ho(ukm_%wbR>4%PkRY*4)=dl9QFQ*@1++@GuzKB?`$SO9c^!u| zBWKSU$D|D{x*uZs92MiEK;pB#xc-|)3_Ilw3DxE)Nh`a|CHXa&+sKCrU)eDC0@pUn z^97fM&3`C0BCCelzst8xmG1vEdE<QJTe4D7^~a{C=z3vlH7MbJ`aUbl3A!f#=om4P zf;1u><77=pOS^rxcwxdyfs0$)kfMc_;d;~(LCC|_-3c#kwKtv7tr62k1EA6q)8AtA z-;do;K8<vW8E}9kEvoJKOWf329-=?g(DD4bk1cvD&-Lt{VvhP~=fwOtDE!0|56$#= zcYs>h=9^G?k%9W==q_UvgHqHH+e2K0Y&wY(o4Ag*D|(^)Z`$%ya4ZRU($`shqh|2S z)8y6kug)V$j(IQ+5d{yBQAF-HEvXF-jA50ao-ECHYbUAwxld<)Yql%OxWj*5d&w-s zB4osVkP$JGJO9hu40r$C;ITAT_}fm`I0H+K+GM9TrJPN5xBl-5t$yw-TSP5|lsx_0 z8q(ax`fkt0_v*^j{9m84_AkzgR^YgM=?<!;zOLmBs>&O&hc5`hK5N&7IY_9$>=$AO zx8U)WK>PXH$}s8O{3}UHWb{d{a;B>k+DO-hb>#hjSV~Mk{Gyqu`S%u0?y#Z-xn!Dk zpx7>64yB3lSc}^PWXW8_BGJ|J7%g3`t@sTtj%U*lk5jJ5t>()16H!Ar&#&Xy07`fR z7qvKL!Df@-2Q%-)AE$}s2vbxXWa{^VEOH!k+ER`BUI=x6oHwg}(ek%vY>;GC(@OoW zgUGvHACoW1Z`#MueBT0L-lfB#j<efhjR;|#TVH4~(?J#HcQfNP5{QNFS_~+;4_Y~q z5o9gmHLDa2I2B7_;Q^Br`4Qq@g5L+u^1`Rt(1?WdP)>{YSV_M9+*U8;B9slSDN$^A zpjFp>f3FWNXjWCnlK?Be%RG0{ZA;8Wo4tmV@Vf@w9fBy9M4V-*>Y7Q5t9F?wo@!;E z8Wd(`|G=(JC#^>j)hk+s23AncmHMDzr*BgeCK%71g3MXkSU`Uc$~0>R-T;%3Ec{Db zPX;X?=jaH3vVPl>oYfZEka=@^#MjU{EYGfQXSNp6J2em6No{eO2*h+>S;@mO?@C13 zGS9%xcmtXRNSu{tDHKf)Ea5=Q2qY~{q2tSNu!HnH5$g0w<e$G^R#Y6qegqO!L#QU( zAxTh)P~yMvffuI9c8Cv$FXGf6Krr9QKlE`(7J%o`OVntX2Wz|l6%Q4mwhA1l^1=04 yr~iB9q27Y4O8)<90RSWc|ErKn?SP+QJKQsW^f?fxSo=@@QPV}J9Fv3|&H4wB{3z7` delta 2311 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 GVEP9O*fWj* diff --git a/plugin.video.youku/addon.xml b/plugin.video.youku/addon.xml index a845544..482e6b6 100644 --- a/plugin.video.youku/addon.xml +++ b/plugin.video.youku/addon.xml @@ -1,14 +1,15 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.youku" - name="优酷视频" version="1.0.0" + name="优酷视频" version="1.1.0" provider-name="yfang1644"> <requires> <import addon="script.module.xbmcswift2" version="2.4.0"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> </requires> <extension point="xbmc.python.pluginsource" library="default.py"> <provides>video</provides> </extension> + <extension point="xbmc.python.module" library="lib"/> <extension point="xbmc.addon.metadata"> <language></language> <summary lang="en">YouKu Video (plain version)</summary> @@ -16,7 +17,7 @@ <description lang="en">YouKu is china's largest video sharing site.</description> <description lang="zh">优酷视频</description> <source>https://github.com/yfang1644/kodi_plugins/plugin.video.youku</source> - <email>yfang1644@gmail.com</email> + <email>yfang1644@gmail.com</email> <platform>all</platform> - </extension> + </extension> </addon> diff --git a/plugin.video.youku/default.py b/plugin.video.youku/default.py index 77f0f19..622eeb5 100644 --- a/plugin.video.youku/default.py +++ b/plugin.video.youku/default.py @@ -5,7 +5,7 @@ from urllib import quote_plus, urlencode from json import loads from common import get_html, match1 -from youku import video_from_vid +from lib.youku import video_from_vid HOST = 'http://tv.api.3g.youku.com' BASEIDS = { @@ -18,7 +18,6 @@ 'launcher': 0 } - ######################################################################## # 优酷 www.youku.com ######################################################################## @@ -49,7 +48,6 @@ def playvideo(videoid): level = int(plugin.addon.getSetting('resolution')) urls = video_from_vid(videoid, level=level) - stackurl = 'stack://' + ' , '.join(urls) plugin.set_resolved_url(stackurl) diff --git a/plugin.video.youku/lib/__init__.py b/plugin.video.youku/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugin.video.cntv-video/lib/youku.py b/plugin.video.youku/lib/youku.py similarity index 97% rename from plugin.video.cntv-video/lib/youku.py rename to plugin.video.youku/lib/youku.py index af58e09..d822941 100644 --- a/plugin.video.cntv-video/lib/youku.py +++ b/plugin.video.youku/lib/youku.py @@ -40,8 +40,9 @@ def __init__(self, *args): # Found in http://g.alicdn.com/player/ykplayer/0.5.28/youku-player.min.js # grep -oE '"[0-9a-zA-Z+/=]{256}"' youku-player.min.js self.params = { - ('0808', self.ckey_mobile), - ('0590', self.ckey_default) + ('0515', self.ckey_default), + ('0516', self.ckey_default), + ('0517', self.ckey_default) } self.title = '' diff --git a/plugin.video.youku/plugin.video.youku-1.0.0.zip b/plugin.video.youku/plugin.video.youku-1.1.0.zip similarity index 91% rename from plugin.video.youku/plugin.video.youku-1.0.0.zip rename to plugin.video.youku/plugin.video.youku-1.1.0.zip index 5fa654d6c765ec1fa1be84d73dfcf60c8c48061d..c436bec10f98431cf67867ba56f5be5b45a0f6e1 100644 GIT binary patch delta 5776 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 K0mL8w|GxlNerXW^ delta 3332 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 KC>!!;SNsnmVG_gu diff --git a/plugin.video.youkutv/addon.py b/plugin.video.youkutv/addon.py index a3864cf..5c75984 100644 --- a/plugin.video.youkutv/addon.py +++ b/plugin.video.youkutv/addon.py @@ -7,7 +7,7 @@ import xbmc from json import loads import sys -import urllib +from urllib import quote_plus import urllib2 import re import os @@ -752,7 +752,7 @@ def updateContent(self): try: url = HOST + 'tv/top/shows?' + IDS + '&top_id=' + self.sdata for k in self.urlArgs: - url = url + '&' + k + '=' + urllib.quote_plus(self.urlArgs[k]) + url = url + '&' + k + '=' + quote_plus(self.urlArgs[k]) data = GetHttpData(url) if data.get('status', '') != 'success': @@ -860,7 +860,7 @@ def updateContent(self): try: url = HOST + 'layout/smarttv/item_list?' + IDS + '&cid=' + self.sdata for k in self.urlArgs: - url = url + '&' + k + '=' + urllib.quote_plus(self.urlArgs[k]) + url = url + '&' + k + '=' + quote_plus(self.urlArgs[k]) data = GetHttpData(url) if 'status' not in data: @@ -1008,7 +1008,7 @@ def updateContent(self): try: url = HOST + 'layout/smarttv/item_list?' + IDS for k in self.urlArgs: - url = url + '&' + k + '=' + urllib.quote_plus(self.urlArgs[k]) + url = url + '&' + k + '=' + quote_plus(self.urlArgs[k]) data = GetHttpData(url) if data.get('status', '') != 'success': @@ -1172,7 +1172,7 @@ def initShow(self): if self.showInited: return - url = HOST + 'layout/smarttv/showsearch?copyright_status=1&video_type=1&keyword=' + urllib.quote_plus(self.sdata) + '&' + IDS + url = HOST + 'layout/smarttv/showsearch?copyright_status=1&video_type=1&keyword=' + quote_plus(self.sdata) + '&' + IDS data = GetHttpData(url) if data.get('status', '') != 'success': @@ -1192,9 +1192,9 @@ def updateContent(self): self.showBusy() try: - url = HOST + 'openapi-wireless/videos/search/' + urllib.quote_plus(self.sdata) + '?' + IDS + url = HOST + 'openapi-wireless/videos/search/' + quote_plus(self.sdata) + '?' + IDS for k in self.urlArgs: - url = url + '&' + k + '=' + urllib.quote_plus(self.urlArgs[k]) + url = url + '&' + k + '=' + quote_plus(self.urlArgs[k]) data = GetHttpData(url) if data.get('status', '') != 'success': @@ -1341,7 +1341,7 @@ def updateContent(self): data = GetHttpData(HOST + 'openapi-wireless/keywords/recommend?' + IDS) title_key = 'title' else: - data = GetHttpData(HOST + 'openapi-wireless/keywords/suggest?' + IDS + '&keywords=' + urllib.quote_plus(self.keywords)) + data = GetHttpData(HOST + 'openapi-wireless/keywords/suggest?' + IDS + '&keywords=' + quote_plus(self.keywords)) title_key = 'keyword' if data.get('status', '') != 'success': diff --git a/plugin.video.youkutv/addon.xml b/plugin.video.youkutv/addon.xml index 27e15fe..87636e4 100644 --- a/plugin.video.youkutv/addon.xml +++ b/plugin.video.youkutv/addon.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="plugin.video.youkutv" - name="YouKu TV" version="1.7.9" + name="YouKu TV" version="1.8.0" provider-name="catro, yfang1644"> <requires> <import addon="xbmc.python" version="2.1.0"/> <import addon="script.common.plugin.cache" version="0.9.1"/> - <import addon="plugin.video.cntv-video" version="1.0.6"/> + <import addon="script.module.geturl" version="1.0.0"/> + <import addon="plugin.video.youku" version="1.1.0"/> </requires> <extension point="xbmc.python.script" library="addon.py"> <provides>video</provides> diff --git a/plugin.video.youkutv/plugin.video.youkutv-1.7.9.zip b/plugin.video.youkutv/plugin.video.youkutv-1.8.0.zip similarity index 97% rename from plugin.video.youkutv/plugin.video.youkutv-1.7.9.zip rename to plugin.video.youkutv/plugin.video.youkutv-1.8.0.zip index 446bba6a780288a564aaf0976ef36c4b84cd5317..2e0afa9d42052f0451cb55d91c3591c65bd9fa62 100644 GIT binary patch delta 14213 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 AJ^%m! delta 14202 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 diff --git a/script.module.geturl/addon.xml b/script.module.geturl/addon.xml new file mode 100644 index 0000000..dd05e40 --- /dev/null +++ b/script.module.geturl/addon.xml @@ -0,0 +1,16 @@ +<?xml version='1.0' encoding='UTF-8' standalone='yes'?> +<addon id="script.module.geturl" + name="CHVideo getURL" + provider-name="yfang1644" + version="1.0.0"> + <requires> + <import addon="xbmc.python" version="2.24.0" /> + </requires> + <extension point="xbmc.python.module" library="lib" /> + <extension point="xbmc.addon.metadata"> + <platform>all</platform> + <summary lang="en">Common module for chinese video/audio api.</summary> + <source>https://github.com/yfang1644/kodi_plugins/script.module.geturl</source> + <email>yfang1644@gmail.com</email> + </extension> +</addon> diff --git a/script.module.geturl/changelog.txt b/script.module.geturl/changelog.txt new file mode 100644 index 0000000..c0336b9 --- /dev/null +++ b/script.module.geturl/changelog.txt @@ -0,0 +1,2 @@ +[B]Version 1.0.0[/B] +- 2018.08.25 Initial geturl diff --git a/plugin.video.cntv-video/lib/common.py b/script.module.geturl/lib/common.py similarity index 100% rename from plugin.video.cntv-video/lib/common.py rename to script.module.geturl/lib/common.py diff --git a/script.module.geturl/script.module.geturl-1.0.0.zip b/script.module.geturl/script.module.geturl-1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..f0012e6b8a658eff8558afd3cc1668853fde0973 GIT binary patch literal 2705 zcmaKuc|4SB8^@oFk*#Awwrq_hl4(dHOV*Mlj0lsm4PnMu8|$&um?)FI(qJs1Y}q-b zNjgN4tx#g}hAd;tzMjGPy!F1)^L(EBb3gxlf7j=}?(4dKCI%ozR$%in%M&!(+Wfm5 z00aSV2QL>79~cJf=!-_doKZf$Ug%@y7gzug(Fl(;gy50Ber&)V#%~}1*jh~fi<`;g z{~sLxZaB1y{WkKXb=Yo5ZhB12z+%3lVWj*<uLT$YnAiaT`a7fp7K6dM!#w=A!p$5( zS-;fY5pJ->7xzy}?CX;`)N-kDpGZy|rpN%s_m{gHp&VJ9-6d24^*~FujdrJs<3|2i zm^j;r7!dyyo?#+2BerBJUb=GjX+nnDkkwN^M5*fcYw6|v;Y!ASiZrc9k_B9{)2iyn zywb_sE=>)4C-O9K$?H_S%7*9x+;h`#a$m4dKT7yCd1gR0gesNJAu_|RHffQelwzNK zX0p)uN_;n^DP&3^`s3Mr&>jjgPPliTI=;-K-uL3mH(PG4CJ{(shNXe}0@bZ^*;;{G zCWUxbHyv2`@$9>_(kbJ4hVTX6>v?aSP+r7o?Y>Zosa~q{N03TrUeH@JbQ%dyIPAe? z1g-tlP``ddXlV}UN8@>ize5p0BzulRcfBv*u~{n7`P{nAOTr$((kFXCwOkCXlF<TG zo{z&Z3D^cyc9Za>nfyyH2EO|F1a*U^yVZiu51F&luAlEtr$G9=!s3J4KHPmiY?QHA zuo<o|r5(P}1zKLr@w|<nc}kVJlsj+O+~K6-IDOClurQDH47yl4C8q|v_D5h_FLv@l zM`V9KsG`LwHs)$5b}trrxLKceRhwpHp(az1bH(6z?KuHybdz{0=G)~nJ!QAEbA9F9 zKKCieAr}fp-1yhaS_DE)^wkliUp1&0^qDRmoSA(%xi;)Ctjh#t&&_7l{lM6KG1E=( zU8HfCp}qJ(Peg<%mFwQc$ID_SiO}oH52BtO4S!<SHXIw}Y)5WReuA~jn$v_xJJljs z*VJ#w7|P^mkm{d!Q${>xf-*xNy(*_NJ64sXe6^2kDV11ldTA{eAbL-tHYvW|g0FMT zyk0@sOI{#&*i{i)?8iDUCYPA7zFvn5F6kK)t-3~m%(B9nRie!S$BF~d^A5wDrI#zn zcNMEzIo=WvWiJYTM-*uD#3m?ylYSgK5f$q3z)e3!=g8>Tm-0iEn69D)YPK}uux-1@ zO-_uvii*l`u6Qng`)qSUD%%nxv}(<V<&G-DxgfLeF<<TBRT1A$g7nvrkqEhWq9jCe zo~l$IjO6MzgwgqcH%?6F(vX%5n>HI%9sC-Ia&(}*{LDUb*)pu{fYdG3c;^48`a`*e z((VHq5(>8O9RVxbw}(m3Osw8Lp0&Q7!+;r2Gu-d?g~L@rCoV3@DH`5jjyl8Gy5jq= z(&|3q{-^?p^H$ueBxo)NQSvBZssu-~x5nFpnKDnQNNE*P7O-z;8k@p<GoL%7B;n~x zoHAJuPR(PUbFUAyoH$enbF(auDZkv|vTv?(B|_{44|$_>-nu@g5$=%J?i5aDU@K<h zHBHL0RFkQBt!GrE%axJZp|N1=e1b8c@?vg<x>%Wa%|xx7<{H;xA@vQ|L@bai;|h%_ zM3?E&$ReR&s_#-r<LcbC@*e(&Fc<%WyaIPpIw+N8{nuI6-ZWfUnZU7l6JDs^j}SWx zvR%&OlNBo0%Rg?!(IJbN)=LdfinU4kQ}}aDz{x6?&O({ALP$|an-x*EE6O0vDe}UK zp4jN@DrHD7>}|pk>rRf<;?up=A<C+^CNcXXK)%M&IS*mw>n$@28rVhMK1vzp6GwOH z-Dn|7tz?;Lroui88<e*E{`|Xjb3v59@{6*gU5k&Tzp(Cfn*Erxj8DY=NkVX}1SJnL ztf7qW;mPKohvaBVWK)qUFmjFOeFuf5dbJroeIowzHDq2%hRK~|7fSK?^W;dR+G)3^ z%X#f4@zs*AL$mz_A1-qnwyPrM`7Np;GRyUk+94!9qmaq8nx)GnIFDkS$KUhrH^H~8 zt6xjR8^<x}QpY;eC4&8iTA2eY&qpqt-W&qk9a|a@FmfFdR5IHG02delKzO%~ZRhAn zZ`OVo^j5b%9~_4KMYqPpy*Xb8=hj(RV}0`=-?h>l4=FLr(!U9o(dmJnd~S4f_2r$% zOM#@UeWJ1E<JI2s!UP)ZOy=<$xun7O$@xbZD?AZBNf!x~IfKD?drk{h+R>@U1WVc| zm<w_0R>D^$Ma?Ch+woQ)mqUZ(X@<lGR*>LiT7M!VA<D}y_&&EtZ#6n%P@z5T2Br)5 ziI&wjK;<Old)O#ig%;&Ayb2)MHu>>#3Yd8WDJMrPs{6JKh%7{)EB+>aV<uBr*kLT= z@Q7z-iffve?u5r$G>B@w^YpK_TR%xuz8NN-rN?kZJ3zL*5p2d*z@Kt4p0896O!QGc z)nMycgRAGBnDxDI#<WA4ZGUTPVkXpJFlH(W9^l(=2_rC#!X!jQq%h{AGqDOSt<_e` zRui*zW4%WXj)dSW$XrhL;rsQwN;isyK7iue&IuT#j7d=#g^;<t{Xgb)BYj>+Bsb2> z(?{**x9f0qxN7I_j6!3bVLpC7Tj?6L`enM1S~eCaFK-vDyQmxt4ud0)Y1y#Kips;~ zlwfcrnEVM*(R1!DJ}!1>(QRkJYGSa5K^U}~9pU@em_PuU=H_-6a{}HrCp(PE5A;rJ z@-y0aH}tkqq2o7=$}jP|*_3TOy#|1?u#Df~e=;p}olVp78=alS^+P8s>;ls+C-hUP w(KR+p?Ux$cS=f0ie%9F7yNkyE-4VLZ<{jCg1E$9a0ATt%K|h>m=FPu<0JMKqE&u=k literal 0 HcmV?d00001