up
This commit is contained in:
Liu committed 2025-04-04 02:37:38 +08:00
1 parent 065a6efef9
commit 9e2756d747
71 files changed
+53290 -30070

No files matched your search

+31 -22
View File
@@ -19,7 +19,7 @@
"searchable": 0,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -337,6 +337,15 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "游戏直播",
"name": "🙀游戏直播",
"type": 3,
"api": "csp_Living",
"searchable": 1,
"changeable": 0,
"ext": "http://127.0.0.1:9966/api/proxy/https://lemonlive.pages.dev"
},
{
"key": "csp_AppXY",
"name": "🎀️星牙短剧",
@@ -407,7 +416,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "https://www.wogg.one/",
"filter": "./json/wogg.json"
}
@@ -422,7 +431,7 @@
"switchable": 0,
"ext": {
"siteUrl": "https://www.qwnull.com",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -446,8 +455,8 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"siteUrl": "http://www.xhww.net",
"commonConfig": "./json/peizhi.json",
"siteUrl": "https://mihdr.top",
"filter": "./json/wogg.json"
}
},
@@ -459,7 +468,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "http://feimaoai.site",
"filter": "./json/wogg.json"
}
@@ -472,7 +481,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "https://woog.nxog.eu.org",
"filter": "./json/wogg.json"
}
@@ -485,7 +494,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "https://tv.yydsys.top",
"filter": "./json/wogg.json"
}
@@ -498,7 +507,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "https://mo.666291.xyz/",
"filter": "./json/wogg.json"
}
@@ -511,7 +520,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "http://milvdou.fun",
"filter": "./json/wogg.json"
}
@@ -524,7 +533,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"siteUrl": "http://1.95.79.193",
"filter": "./json/wogg.json"
}
@@ -539,7 +548,7 @@
"switchable": 0,
"ext": {
"siteUrl": "https://www.91panta.cn/",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -552,7 +561,7 @@
"switchable": 0,
"ext": {
"siteUrl": "https://star.banye.tech:7086/",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -563,7 +572,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -576,7 +585,7 @@
"switchable": 0,
"ext": {
"cookie": "satoken=0eedba28-be8a-4f01-81af-2d8d44808ecf",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -587,7 +596,7 @@
"searchable": 1,
"changeable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -608,7 +617,7 @@
"filterable": 0,
"switchable": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"share": "./json/网盘集合.json"
}
},
@@ -625,7 +634,7 @@
},
"ext": {
"json": "./json/youtube.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/youtubecookie.json"
"cookie": "./json/youtubecookie.json"
}
},
{
@@ -639,7 +648,7 @@
"siteUrl": "http://127.0.0.1:9999",
"count": 4,
"channelUsername": "xx123pan,Q66Share,alyp_TV,ucpanpan,ucquark,tianyirigeng,shares_115,oneonefivewpfx,cloud189_group,tianyi_pd2,hao115,guaguale115,yunpanchat,ydypzyfx,tgsearchers,zaihuayun,PanjClub,NewQuark,Mbox115,yunpanpan,kuakeyun,Quark_Movies,qixingzhenren,alyp_4K_Movies,yunpanshare,shareAliyun,alyp_1",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json",
"commonConfig": "./json/peizhi.json",
"filter": "./json/douban.json"
}
},
@@ -654,7 +663,7 @@
"ext": {
"count": 4,
"channelUsername": "xx123pan,Q66Share,alyp_TV,ucpanpan,ucquark,tianyirigeng,shares_115,oneonefivewpfx,cloud189_group,tianyi_pd2,hao115,guaguale115,yunpanchat,ydypzyfx,tgsearchers,zaihuayun,PanjClub,NewQuark,Mbox115,yunpanpan,kuakeyun,Quark_Movies,qixingzhenren,alyp_4K_Movies,yunpanshare,shareAliyun,alyp_1",
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -665,7 +674,7 @@
"searchable": 0,
"quickSearch": 0,
"ext": {
"commonConfig": "http://127.0.0.1:9978/file/TVBox/peizhi.json"
"commonConfig": "./json/peizhi.json"
}
},
{
@@ -1049,7 +1058,7 @@
"epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
}
],
"logo": "https://gh-proxy.com/https://raw.githubusercontent.com/yoursmile66/TVBox/refs/heads/main/sub/NanFeng.gif",
"logo": "https://gh-proxy.com/raw.githubusercontent.com/yoursmile66/TVBox/refs/heads/main/json/NanFeng.gif",
"rules": [
{
"name": "proxy",
@@ -1,304 +0,0 @@
if (typeof Object.assign != 'function') {
Object.assign = function () {
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2:{
title: '',
host: '',
class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
headers:{'User-Agent':'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable:0,//是否启用分类筛选,
filter_url:'',
filter: {},
filter_def:{},
detailUrl:'/index.php/vod/detail/id/fyid.html',
play_parse: true,
lazy: '',
limit: 6,
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级:{
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
"img":".detail-pic&&data-original",
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
"content":"#height_limit&&Text",
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
"tab_text":".swiper-slide&&Text",
"lists":".anthology-list-box:eq(#id) li"
},
搜索:'json:list;name;pic;;id',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};
@@ -1,68 +0,0 @@
/***
* gbk编码解码函数
* strTool = gbkTool() strTool.encode(key)
* @returns {{encode: (function(*): *), decode: (function(*): *)}}
*/
export function gbkTool(){
var data=function(zipData){
var re=zipData
.replace(/#(\d+)\$/g,function(a,b){
return Array(+b+3).join('#');
})
.replace(/#/g,'####')
.replace(/(\w\w):([\w#]+)(?:,|$)/g,function(a,hd,dt){
return dt.replace(/../g,function(a){
if(a!='##'){
return hd+a;
}else{
return a;
}
});
});
return re;
}('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f90Line truncated
U2Ghash={},
G2Uhash={};
!function(data){
var k=0;
data=data.match(/..../g);
for(var i=0x81;i<=0xfe;i++){
for(var j=0x40;j<=0xFE;j++){
U2Ghash[data[k++]]=('%'+i.toString(16)+'%'+j.toString(16))
.toUpperCase();
}
}
for(var key in U2Ghash){
G2Uhash[U2Ghash[key]]=key;
}
}(data);
function isAscii(unicode) {
return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000));
}
return{
encode:function(str){
return str.replace(/./g,function(a){
var code=a.charCodeAt(0);
if(isAscii(code)){
return encodeURIComponent(a);
}else{
var key=code.toString(16);
if(key.length!=4)key=('000'+key).match(/....$/)[0];
return U2Ghash[key]||a;
}
});
},
decode:function(str){
return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g,function(a){
if(a in G2Uhash){
return String.fromCharCode('0x'+G2Uhash[a]);
}else{
return a;
}
}).replace(/%[\w]{2}/g,function(a){
return decodeURIComponent(a);
});
}
};
}
-1
View File
@@ -1 +0,0 @@
import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import 模板 from"./a848d2173d12b963b98a2ffa9796abe7.js";import{gbkTool}from"./dffd4cc3bf2fdbddf56e179fb494a4fa.js";function init_test(){console.log("init_test_start"),console.log("当前版本号:"+VERSION),console.log(RKEY),console.log(JSON.stringify(rule)),console.log("init_test_end")}function pre(){if("string"==typeof rule.预处理&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code),code.startsWith("js:")&&(code=code.replace("js:",""));try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={},vercode="function"==typeof pdfl?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.49beta2 20231122",MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36",PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36",UA="Mozilla/5.0",UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36",IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",RULE_CK="cookie",CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态",TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播",OCR_RETRY=3,OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(void 0===MY_URL)var MY_URL;var HOST,RKEY,fetch,print,log,rule_fetch_params,fetch_params,oheaders,_pdfh,_pdfa,_pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/,SPECIAL_URL=/^(ftp|magnet|thunder|ws):/,NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/,URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/,SELECT_REGEX=/:eq|:lt|:gt|#/g,SELECT_REGEX_A=/:eq|:lt|:gt/g;function 是否正版(e){return new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv").test(e)}function urlDeal(e){return e?是否正版(e)?(/miguvideo/.test(e)||(e=e.split("#")[0].split("?")[0]),e):e:""}function setResult(e){return Array.isArray(e)?(VODS=[],e.forEach(function(e){let t={vod_id:e.url||"",vod_name:e.title||"",vod_remarks:e.desc||"",vod_content:e.content||"",vod_pic:e.pic_url||e.img||""},r=Object.keys(e);r.includes("tname")&&(t.type_name=e.tname||""),r.includes("tid")&&(t.type_id=e.tid||""),r.includes("year")&&(t.vod_year=e.year||""),r.includes("actor")&&(t.vod_actor=e.actor||""),r.includes("director")&&(t.vod_director=e.director||""),r.includes("area")&&(t.vod_area=e.area||""),VODS.push(t)}),VODS):[]}function setResult2(e){return VODS=e.list||[]}function setHomeResult(e){return e&&"object"==typeof e?setResult(e.list):[]}function rc(e){if("maomi_aes.js"===e){var t=CryptoJS.enc.Utf8.parse("625222f9149e961d"),r=CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");return{De:function(e){return e=CryptoJS.enc.Hex.parse(e),CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(e),t,{iv:r,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},En:function(e){return CryptoJS.AES.encrypt(e,t,{iv:r,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).ciphertext.toString()}}}return{}}function maoss(jxurl,ref,key){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params)),eval(getCryptoJS());try{var getVideoInfo=function(e){return CryptoJS.AES.decrypt(e,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)},token_key=null==key?"dvyYRQlnPRCMdQSe":key;if(ref)var html=request(jxurl,{headers:{Referer:ref}});else var html=request(jxurl);-1!=html.indexOf("&btwaf=")&&(html=request(jxurl+"&btwaf"+html.match(/&btwaf(.*?)"/)[1],{headers:{Referer:ref}}));var token_iv=html.split('_token = "')[1].split('"')[0],key=CryptoJS.enc.Utf8.parse(token_key),iv=CryptoJS.enc.Utf8.parse(token_iv);return eval(html.match(/var config = {[\s\S]*?}/)[0]+""),config.url.startsWith("http")||(config.url=CryptoJS.AES.decrypt(config.url,key,{iv:iv,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)),config.url}catch(e){return""}}function urlencode(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")}function base64Encode(e){return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(e))}function base64Decode(e){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(e))}function md5(e){return CryptoJS.MD5(e).toString()}function encodeStr(e,t){if((t=t||"gbk").startsWith("gb")){e=gbkTool().encode(e)}return e}function decodeStr(e,t){if((t=t||"gbk").startsWith("gb")){e=gbkTool().decode(e)}return e}function getCryptoJS(){return'console.log("CryptoJS已装载");'}"function"!=typeof Object.assign&&(Object.asLine truncated
-1
View File
@@ -1 +0,0 @@
**dmFyIHJ1bGU9e3RpdGxlOiLomY7niZnnm7Tmkq0iLGhvc3Q6Imh0dHBzOi8vd3d3Lmh1eWEuY29tIixob21lVXJsOiIvY2FjaGUucGhwP209TGl2ZUxpc3QmZG89Z2V0TGl2ZUxpc3RCeVBhZ2UmZ2FtZUlkPTIxNjgmdGFnQWxsPTAmcGFnZT0xIix1cmw6Ii9jYWNoZS5waHA/bT1MaXZlTGlzdCZkbz1nZXRMaXZlTGlzdEJ5UGFnZSZnYW1lSWQ9ZnlmaWx0ZXImdGFnQWxsPTAmcGFnZT1meXBhZ2UiLGNsYXNzX25hbWU6IuWoseS5kCbnvZHmuLgm5Y2V5py6JuaJi+a4uCIsY2xhc3NfdXJsOiI4JjEmMiYzIixkZXRhaWxVcmw6Imh0dHBzOi8vbS5odXlhLmNvbS9meWlkIixmaWx0ZXJhYmxlOjEsZmlsdGVyX3VybDoie3tmbC5jYXRlSWR9fSIsZmlsdGVyX2RlZjp7ODp7Y2F0ZUlkOiIyMTM1In0sMTp7Y2F0ZUlkOiIxIn0sMjp7Y2F0ZUlkOiIxNzMyIn0sMzp7Y2F0ZUlkOiIyMzM2In19LGZpbHRlcjp7ODpbe2tleToiY2F0ZUlkIixuYW1lOiLliIbnsbsiLHZhbHVlOlt7bjoi5pif56eAIix2OiIxNjYzIn0se246IuaIt+WkliIsdjoiMjE2NSJ9LHtuOiLkuIDotbfnnIsiLHY6IjIxMzUifSx7bjoi5LqM5qyh5YWDIix2OiIyNjMzIn0se246IuiZmuaLn+WBtuWDjyIsdjoiNjA1NSJ9LHtuOiLml4XmuLgiLHY6IjY3OTEifSx7bjoi5pS+5pig5Y6FIix2OiI2MjQ1In0se246IuWoseS5kOWkqeWcsCIsdjoiMTAwMDIyIn0se246IuS6pOWPiyIsdjoiNDA3OSJ9LHtuOiLnu4TpmJ8iLHY6IjUzNjcifSx7bjoi5ZCD5Zad546p5LmQIix2OiIxMDAwNDQifSx7bjoi5Y6f5YibIix2OiI2ODYxIn0se246IuiZjueJmeaWh+WMliIsdjoiNDA4OSJ9LHtuOiLkvZPogrIiLHY6IjIzNTYifSx7bjoi6JmO54mZ5Zyw5pa5Iix2OiI1MTIzIn0se246IuminOWAvCIsdjoiMjE2OCJ9LHtuOiLnp5HmioAiLHY6IjI0MDgifSx7bjoi6Z+z5LmQIix2OiIzNzkzIn0se246Iui2o+WIhuS6qyIsdjoiNTg4MyJ9LHtuOiLkuIDotbfkubAiLHY6Ijc3NTkifSx7bjoi5rS+5a+5Iix2OiI3Nzg1In1dfV0sMTpbe2tleToiY2F0ZUlkIixuYW1lOiLliIbnsbsiLHZhbHVlOlt7bjoi6Iux6ZuE6IGU55ufIix2OiIxIn0se246IkNTMiIsdjoiODYyIn0se246Iuepv+i2iueBq+e6vyIsdjoiNCJ9LHtuOiJsb2zkupHpobbkuYvlvIgiLHY6IjU0ODUifSx7bjoi5peg55WP5aWR57qmIix2OiI1OTM3In0se246IkNGSEQiLHY6IjYwNzkifSx7bjoi6YCG5oiYIix2OiIxMzUifSx7bjoi54KJ55+z5Lyg6K+0Iix2OiIzOTMifSx7bjoiRE9UQTIiLHY6IjcifSx7bjoi5Zyw5LiL5Z+O5LiO5YuH5aOrIix2OiIyIn0se246IumtlOWFveS4lueVjCIsdjoiOCJ9LHtuOiLlnablhYvkuJbnlYwiLHY6IjgwMiJ9LHtuOiJET1RBMSIsdjoiNiJ9LHtuOiLmoqbkuInlm70iLHY6IjQ4OSJ9LHtuOiLprZTlhb3kuonpnLgzIix2OiI0NjE1In0se246IumXrumBkyIsdjoiMTA3In0se246IuWRvei/kOaWueiInyIsdjoiMzA1OCJ9LHtuOiJRUemjnui9piIsdjoiOSJ9LHtuOiLmmJ/pmYXkuonpnLgiLHY6IjUifSx7bjoi572R5ri456ue5oqAIix2OiIxMDAwMjMifSx7bjoi5bCE5Ye757u85ZCI5ri45oiPIix2OiIxMDAxNDEifSx7bjoi5pq06Zuq5LiT5Yy6Iix2OiIxMDAwNDMifSx7bjoi5b2p6Jm55bKbT25saW5lIix2OiI2ODMifSx7bjoi5YmR54G1Iix2OiI4OTcifSx7bjoi5Yab5LqL5ri45oiPIix2OiIxMDAxMzMifSx7bjoi5YaS6Zmp5bKbIix2OiIyMjQzIn0se246Iuaal+m7keegtOWdj+elniIsdjoiMTEyMyJ9LHtuOiLor5vku5kzIix2OiIxNjQ2In0se246IueDreihgOaxn+a5liIsdjoiMzg3In0se246IuiLsemtguS5i+WIgyIsdjoiMTgzMCJ9LHtuOiLmrabmnpflpJbkvKDkuIDkuJbnkLTnvJgiLHY6IjE2NjEifSx7bjoi6LW35Yeh77ya576k6ZuE6YCQ6bm/Iix2OiIxNjEyIn0se246IuelnuatpjTnlLXohJHniYgiLHY6IjMyMjcifSx7bjoi6b6Z5LmL6LC3Iix2OiIxNSJ9LHtuOiLngonnn7PmiJjmo4siLHY6IjU3NTEifSx7bjoi5b6h6b6Z5Zyo5aSpIix2OiI2NzUifSx7bjoi6YCG5rC05a+SIix2OiIyOTUyIn0se246IuWNg+W5tDMiLHY6Ijg3OCJ9LHtuOiLmsLjmgZLkuYvloZQiLHY6IjQ0NiJ9LHtuOiLkvZPogrLmuLjmiI8iLHY6IjEwMDEzNSJ9LHtuOiLlr7vku5kiLHY6IjczNCJ9LHtuOiLmiJjoiLDkuJbnlYwiLHY6IjE5NDcifSx7bjoiUVHkuInlm70iLHY6IjEwOTAifSx7bjoi5rWB5pS+5LmL6LevIix2OiI0MjcifSx7bjoi5Y+N5oGQ57K+6IuxT25saW5lIix2OiIxOTE4In0se246IuWPjeaBkOihjOWKqG9ubGluZSIsdjoiODYxIn0se246IuW+gemAlCIsdjoiMjcxNSJ9LHtuOiLmiJjkuonpm7fpnIYiLHY6IjYyNCJ9LHtuOiLkuJ3ot6/kvKDor7QyIix2OiIxMDI2In0se246IuaYn+mZheaImOeUsiIsdjoiNjI3In0se246Ik5CQTJLT0zns7vliJciLHY6IjM5NTkifSx7bjoi5Lmd6Zi055yf57uPIix2OiIxMDA5In0se246Iui3kei3keWNoeS4gei9piIsdjoiMTYyIn0se246Iuivm+S7meS4lueVjCIsdjoiNzc0OSJ9LHtuOiJRUeWNjuWkjyIsdjoiMTg3OCJ9LHtuOiLlpKnmtq/mmI7mnIjliIAiLHY6IjEyMTkifSx7bjoi5aSn6K+d6KW/5ri477ya5b2S5p2lIix2OiI4MjM5In0se246IuiNkumHjuihjOWKqFBD54mIIix2OiIzMTg1In0se246IuaWsOWJkeS+oOaDhee8mCIsdjoiNTg2In0se246IuWJkee9kTMiLHY6IjkwMCJ9LHtuOiLnlJ/mrbvni5nlh7syIix2OiI2MDkxIn0se246IuWFqOeQg+S9v+WRvSIsdjoiOTM5In0se246IuaipuaDs+S4lueVjDMiLHY6IjQ4NiJ9LHtuOiLmnqrnpZ7nuqoiLHY6IjQ5NiJ9LHtuOiLmlrDlpKnpvpnlhavpg6giLHY6IjU2NzEifSx7bjoi6ZOB55Sy6ZuE5YW1Iix2OiIyNzY1In0se246IuelnuazoyIsdjoiMjUzMSJ9LHtuOiLmlpfmiJjnpZ4iLHY6IjU5MSJ9LHtuOiLpgKDmoqbopb/muLhPTCIsdjoiNjgxNSJ9LHtuOiLlpKnloIIiLHY6IjE5NjYifSx7bjoi5aSn6K+d6KW/5ri4MiIsdjoiMjk3NSJ9LHtuOiLkvb/lkb3lj6zllKTvvJrmiJjljLoiLHY6IjU5MTEifSx7bjoi5biM5pybT0wiLHY6IjExNjEifSx7bjoi5p6B5YWJ5LiW55WMIOW8keelnuS8oCIsdjoiNTE0In0se246IuWuiOacm+WFiOmUi+W9kuadpSIsdjoiMjE3NCJ9LHtuOiJRUeiHqueUseW5u+aDsyIsdjoiMTg2MiJ9LHtuOiLlkb3ov5AyIix2OiIyOTQyIn0se246IuWlh+i/ueS4lueVjDIiLHY6Ijc2NiJ9LHtuOiLlnablhYvlpKfmiJgiLHY6IjQzNTkifSx7bjoi55Sf5q2754uZ5Ye7Iix2OiIyNDcxIn0se246IuWkqee/vOWGsyIsdjoiNzc5In0se246IlFR5bm75oOzIix2OiIyNDE5In0se246IuaWsOmjnumjnihGbHlGRikiLHY6IjE1ODIifSx7bjoi5YiA5YmR6Iux6ZuEIix2OiI5MTUifSx7bjoiRklGQSBPbmxpbmXns7vliJciLHY6IjEwMDA3OSJ9LHtuOiLlhajnkIPkvb/lkb0zIix2OiIyOTUzIn0se246IuWujOe+juerr+a4uOezu+WIlyIsdjoiMzAzNCJ9LHtuOiLmiJjmhI8iLHY6IjI1OTkifSx7bjoi5rOh5rOh5aCCIix2OiI0NDAifSx7bjoi6LWb5bCU5Y+3Iix2OiIyNzU1In0se246IuWkp+WUkOaXoOWPjOmbtiIsdjoiMTU4NCJ9LHtuOiJRUeeCq+iIniIsdjoiMjQ0MCJ9LHtuOiIwMDfvvJrkvKDlpYciLHY6IjExMzUifSx7bjoi5aSp5LiLIix2OiIxNTk3In0se246IuWkqeiwlSIsdjoiMTg5OSJ9LHtuOiLmlrDlgKnlpbPlub3prYIiLHY6IjE1NzkifSx7bjoi5Lyg5LiW5peg5Y+MIix2OiI5ODQifSx7bjoi5YmR5L6g5LiW55WMIix2OiI5MDMifSx7bjoiV2FyaGF2ZW4iLHY6IjkwNTMifSx7bLine truncated
+10 -15
View File
@@ -1,23 +1,18 @@
{
"panOrder": "",
"panOrder": "p123|quark|uc|ty|ali|yd|115###原畫|普畫",
"aliToken": "",
"quarkCookie": "",
"ucCookie": "",
"ucToken": "",
"ucUt": "",
"ucUt": "AAPQls4MU8eWa5GKq1gi6chxCodlDAgbb5GR+UaNXWZjckarqe+wMv5is75seqMUY6E=",
"115Cookie": "",
"pwdRb115": "",
//115 删除码
"pwdRb115": "",//115 删除码
"goServerUrl": "http://127.0.0.1:9966",
"ydAuth": "cGM6MTg3NzQ5NzMzNjM6YWdkYlRhWGR8MXxSQ1N8MTc0NDM3NDUxNjIxOHxkRnRScENBOFpZdm9EemFmVFNWZVdndlBWa0tSZjdkU3pBdnlkR0s4anZ2VFBlenl6OWVJX1VfNl94V2o1ZUZOSzdtOUtENXIuRHVPOG43RWdmV2lWc1J5YnZiSmF3NjhSMnhuMHlrSzVMd19Vcm0zZTQyOExUblFfTW1lMVRNNjIxdWRIa2U1NUJTdC5yMk1NbTc5RkxQZDAubHluMjFvVkNwa1FDTWNtYVkt",
//请求头中authorization 取basic 后面的值
"tyAuth": "18774973363@189.cn|Abc147369+",
//账号|密码
"p123Auth":"18774973363|abc123",
//账号|密码
"proxy": "http://127.0.0.1:1072",
//默认代理端口 留空则使用外置代理
"tgPic": "false",
//tgsou 图片显示与否
"danmu": "true"
"ydAuth": "",//请求头中authorization 取basic 后面的值
"tyAuth": "",//账号|密码
"p123Auth":"",//账号|密码
"proxy": "http://127.0.0.1:1072",//默认代理端口 留空则使用外置代理
"tgPic": "false",//tgsou 图片显示与否
//每次更新jar 该值都必须更新
"exeMd5": "WgbbCqn+5zYnwVVUG5Ld1VuJ8rDHvrI3j7SZvOGB1CyFQ69hzNBfDnGlkYy7i94AR302MH81Z5j7dJkzac9pYuVOI0T+bBtNCM5eMxHxylI+zB8ABUOdfmSMMNhXBrnXEGc8Orj998w3yMmznr4PDxCcE+DL4wzzPI7kaYrmVe6BkgCCiALrZ5LtgY/Q2bBFdZXPLENBlZ1Qp1Yi+ksWmCs13TZ4+aaULDPACDtqFMw41rSJHHFqn59DjtCBjQgipcMMp0a0l3I2V6n2YJN0AtPnKhmeLkfDamwKyoUAAoA6uEKrWJS0xPqNzHOUKQs6VzIxyEXbaOplQk4BDNnaTqEhNh1TLUMMAbec6ThHh96BPqBdnSBKDWNixeTusgD8BVJsKubEizDnH0fbQCDXheYJHLpoRyGe9M2B01XIDKSInmzMNfhQjdIHXWttYey9ojw2BXrT/HI3fTX1mk/o"
}
-16
View File
@@ -31,7 +31,6 @@ CCTV2,http://113.140.12.230:8888/newlive/live/hls/3/live.m3u8
CCTV2,http://60.223.224.176:8888/newlive/live/hls/3/live.m3u8
CCTV2,http://zjzcf.synology.me:35455/gaoma/cctv2.m3u8
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$LR•IPV4『线路247』
CCTV3,http://124.93.18.238:9003//hls/3/index.m3u8
CCTV3,http://yc.myds.me:35455/gaoma/cctv3.m3u8
CCTV3,http://222.134.19.31:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV3,http://60.223.224.176:8888/newlive/live/hls/4/live.m3u8
@@ -48,7 +47,6 @@ CCTV3,http://183.184.228.183:9003//hls/3/index.m3u8
CCTV3,http://218.29.168.146:352/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV3,http://58.220.219.14:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV3,http://zjzcf.synology.me:35455/gaoma/cctv3.m3u8
CCTV4,http://124.93.18.238:9003//hls/4/index.m3u8
CCTV4,http://58.243.224.244:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=0&authid=0
CCTV4,http://183.66.15.146:60901/tsfile/live/0004_1.m3u8?key=txiptv$LR•IPV4『线路190』
CCTV4,http://222.134.245.16:9901/tsfile/live/0004_1.m3u8
@@ -70,13 +68,11 @@ CCTV5,http://36.105.100.208:35455/gaoma/cctv5.m3u8
CCTV5,http://home.kuaidi521.com:35455/gaoma/cctv5.m3u8
CCTV5,http://222.134.245.16:9901/tsfile/live/0005_1.m3u8
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV5,http://124.93.18.238:9003//hls/5/index.m3u8
CCTV5,http://116.9.204.242:9901/tsfile/live/0005_1.m3u8
CCTV5,http://183.184.228.183:9003//hls/5/index.m3u8
CCTV5,http://39.77.34.83:35455/gaoma/cctv5.m3u8
CCTV5,http://xiaoya.crccxw.top:35455/gaoma/cctv5.m3u8
CCTV5,http://zjzcf.synology.me:35455/gaoma/cctv5.m3u8
CCTV5+,http://cssbyd.imwork.net:8082/hls/6/index.m3u8
CCTV5+,http://home.kuaidi521.com:35455/gaoma/cctv5p.m3u8
CCTV5+,http://xiaoya.crccxw.top:35455/gaoma/cctv5p.m3u8
CCTV5+,http://112.81.218.254:35455/gaoma/cctv5p.m3u8
@@ -90,7 +86,6 @@ CCTV6,http://221.2.148.205:8154/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&au
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
CCTV6,http://222.169.85.8:9901/tsfile/live/0006_1.m3u8?key=txiptv
CCTV6,http://zzssw01.55555.io:9901/tsfile/live/0006_1.m3u8
CCTV6,http://124.93.18.238:9003//hls/6/index.m3u8
CCTV6,http://101.19.84.8:9901/tsfile/live/0006_1.m3u8
CCTV6,http://183.184.228.183:9003//hls/7/index.m3u8
CCTV7,http://8.138.7.223/tv/cctv7.m3u8
@@ -99,23 +94,19 @@ CCTV7,https://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?t
CCTV7,http://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF
CCTV7,http://yc.myds.me:35455/gaoma/cctv7.m3u8
CCTV7,http://xiaoya.crccxw.top:35455/gaoma/cctv7.m3u8
CCTV7,http://182.37.169.94:352/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV7,http://36.105.100.208:35455/gaoma/cctv7.m3u8
CCTV7,http://home.kuaidi521.com:35455/gaoma/cctv7.m3u8
CCTV7,http://101.19.84.8:9901/tsfile/live/0007_1.m3u8
CCTV7,http://183.184.228.183:9003//hls/8/index.m3u8
CCTV7,http://39.77.34.83:35455/gaoma/cctv7.m3u8
CCTV7,http://112.81.218.254:35455/gaoma/cctv7.m3u8
CCTV7,http://124.93.18.238:9003//hls/7/index.m3u8
CCTV7,http://222.219.183.103:8089/hls/7/index.m3u8
CCTV8,http://112.81.218.254:35455/gaoma/cctv8.m3u8
CCTV8,http://yc.myds.me:35455/gaoma/cctv8.m3u8
CCTV8,http://114.105.98.95:37377/migu/624878356.m3u8?migutoken=9d347588ab808559db972d3c94b0d970ec130153e4a6dde98c4466f1d3f85f58de23d16994f2f0ed903aa6727a7282cb17103e67b69c8e3f31d253bb78039a4df119e2cfeba6916d123a8003
CCTV8,http://222.134.19.31:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV8,http://3501776.xyz:35455/gaoma/cctv8.m3u8
CCTV8,http://home.kuaidi521.com:35455/gaoma/cctv8.m3u8
CCTV8,http://112.46.85.60:8009/hls/8/index.m3u8
CCTV8,http://124.93.18.238:9003//hls/8/index.m3u8
CCTV8,http://101.19.84.8:9901/tsfile/live/0008_1.m3u8
CCTV8,http://183.184.228.183:9003//hls/9/index.m3u8
CCTV8,http://113.140.12.230:8888/newlive/live/hls/9/live.m3u8
@@ -123,7 +114,6 @@ CCTV8,http://xiaoya.crccxw.top:35455/gaoma/cctv8.m3u8
CCTV8,http://60.223.224.176:8888/newlive/live/hls/10/live.m3u8?
CCTV8,http://221.2.148.205:8154/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV8,http://61.133.10.250:352/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV8,http://113.140.86.162:8009/hls/8/index.m3u8
CCTV8,http://zjzcf.synology.me:35455/gaoma/cctv8.m3u8
CCTV9,http://112.81.218.254:35455/gaoma/cctv9.m3u8
CCTV9,http://42.225.117.174:11199/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
@@ -134,7 +124,6 @@ CCTV9,http://home.kuaidi521.com:35455/gaoma/cctv9.m3u8
CCTV9,http://183.184.228.183:9003//hls/10/index.m3u8
CCTV9,http://58.243.224.244:9901/tsfile/live/1007_1.m3u8?key=txiptv&playlive=0&authid=0
CCTV9,http://60.223.224.176:8888/newlive/live/hls/11/live.m3u8?
CCTV9,http://504099760.qicp.vip:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV9,http://222.219.183.103:8089/hls/9/index.m3u8
CCTV9,http://zjzcf.synology.me:35455/gaoma/cctv9.m3u8
CCTV10,http://42.225.117.174:11199/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
@@ -161,7 +150,6 @@ CCTV12,http://home.kuaidi521.com:35455/gaoma/cctv12.m3u8
CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8
CCTV12,http://36.105.100.208:35455/gaoma/cctv12.m3u8
CCTV12,http://xiaoya.crccxw.top:35455/gaoma/cctv12.m3u8
CCTV12,http://124.93.18.238:9003//hls/12/index.m3u8
CCTV12,http://183.184.228.183:9003//hls/13/index.m3u8
CCTV12,http://39.77.34.83:35455/gaoma/cctv12.m3u8
CCTV13,http://61.163.181.78:9901/tsfile/live/0013_1.m3u8
@@ -182,13 +170,10 @@ CCTV14,http://58.17.48.228:808/hls/14/index.m3u8
CCTV14,http://222.173.108.238:352/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV14,http://36.105.100.208:35455/gaoma/cctv14.m3u8
CCTV14,http://39.77.34.83:35455/gaoma/cctv14.m3u8
CCTV14,http://124.93.18.238:9003//hls/14/index.m3u8
CCTV14,http://183.184.228.183:9003//hls/15/index.m3u8
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
CCTV15,http://home.kuaidi521.com:35455/gaoma/cctv15.m3u8
CCTV15,http://yc.myds.me:35455/gaoma/cctv15.m3u8
CCTV15,http://124.93.18.238:9003//hls/15/index.m3u8
CCTV16,http://124.93.18.238:9003//hls/16/index.m3u8
CCTV16,http://xiaoya.crccxw.top:35455/gaoma/cctv16.m3u8
CCTV16,http://36.105.100.208:35455/gaoma/cctv16.m3u8
CCTV16,http://112.81.218.254:35455/gaoma/cctv16.m3u8
@@ -256,7 +241,6 @@ CCTV15,http://61.156.228.12:8154/tsfile/live/0015_1.m3u8
广东卫视,http://115.149.139.141:10001/tsfile/live/1029_1.m3u8?blog.ntnas.top
广东卫视,http://222.173.108.238:352/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8
广东卫视,http://ttkx.cc:1658/公开源454/mg9.php?id=gdws
广西卫视,http://live.cztv.cc:85/live/ggpd.m3u8
广西卫视,https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8
广西卫视,http://42.225.117.174:11199/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
BIN
View File
Binary file not shown.
+59 -238
View File
@@ -1,11 +1,11 @@
#EXTM3U x-tvg-url="https://epg.iill.top/epg" catchup="append" catchup-source="?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}"
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",免费订阅:请勿贩卖...
https://epg.iill.top/v/302.mp4
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",维护时间:2025-2-8#佛系维护...
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",维护时间:2025-4-1#佛系维护...
https://epg.iill.top/v/301.mp4
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",维护内容:维护内容:维护 Gather「删除 •IPV6 源 / •國際「匯集」」
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",维护内容:维护内容:维护 Gather「删除 •咪咕源 / 当作节目表吧」
https://epg.iill.top/v/302.mp4
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",公告说明:推流源·暂不限制·若流量太大将改限时
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",公告说明:推流源·暂不提供
https://epg.iill.top/v/301.mp4
#EXTINF:-1 tvg-id="免费订阅" tvg-name="免费订阅" tvg-logo="https://epg.iill.top/logo/温馨提示.png" group-title="•温馨「提示」",限制条件:请到 Github 了解详情「限制IP·UA」
https://epg.iill.top/v/302.mp4
@@ -17,242 +17,63 @@ https://d2dw21aq0j0l5c.cloudfront.net/playlist_3840x2160.m3u8
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/FashionTV.png" group-title="•4K「IPV4」",Fashion 4K「时尚」
https://fash2043.cloudycdn.services/slive/ftv_ftv_4k_hevc_73d_42080_default_466_hls.smil/playlist.m3u8
#EXTINF:-1 tvg-id="CCTV1" tvg-name="CCTV1" tvg-logo="https://epg.iill.top/logo/CCTV1.png" group-title="•咪咕「TV」",CCTV 1 综合
https://tv.iill.top/migu/cctv1
#EXTINF:-1 tvg-id="CCTV2" tvg-name="CCTV2" tvg-logo="https://epg.iill.top/logo/CCTV2.png" group-title="•咪咕「TV」",CCTV 2 财经
https://tv.iill.top/migu/cctv2
#EXTINF:-1 tvg-id="CCTV3" tvg-name="CCTV3" tvg-logo="https://epg.iill.top/logo/CCTV3.png" group-title="•咪咕「TV」",CCTV 3 综艺
https://tv.iill.top/migu/cctv3
#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" tvg-logo="https://epg.iill.top/logo/CCTV4.png" group-title="•咪咕「TV」",CCTV 4 中文国际
https://tv.iill.top/migu/cctv4
#EXTINF:-1 tvg-id="CCTV4美洲" tvg-name="CCTV4美洲" tvg-logo="https://epg.iill.top/logo/CCTV4美洲.png" group-title="•咪咕「TV」",CCTV 4 中文国际·美洲
https://tv.iill.top/migu/cctv4m
#EXTINF:-1 tvg-id="CCTV4欧洲" tvg-name="CCTV4欧洲" tvg-logo="https://epg.iill.top/logo/CCTV4欧洲.png" group-title="•咪咕「TV」",CCTV 4 中文国际·欧洲
https://tv.iill.top/migu/cctv4o
#EXTINF:-1 tvg-id="CCTV5" tvg-name="CCTV5" tvg-logo="https://epg.iill.top/logo/CCTV5.png" group-title="•咪咕「TV」",CCTV 5 体育
https://tv.iill.top/migu/cctv5
#EXTINF:-1 tvg-id="CCTV5+" tvg-name="CCTV5+" tvg-logo="https://epg.iill.top/logo/CCTV5+.png" group-title="•咪咕「TV」",CCTV 5+ 体育赛事
https://tv.iill.top/migu/cctv5p
#EXTINF:-1 tvg-id="CCTV6" tvg-name="CCTV6" tvg-logo="https://epg.iill.top/logo/CCTV6.png" group-title="•咪咕「TV」",CCTV 6 电影
https://tv.iill.top/migu/cctv6
#EXTINF:-1 tvg-id="CCTV7" tvg-name="CCTV7" tvg-logo="https://epg.iill.top/logo/CCTV7.png" group-title="•咪咕「TV」",CCTV 7 国防军事
https://tv.iill.top/migu/cctv7
#EXTINF:-1 tvg-id="CCTV8" tvg-name="CCTV8" tvg-logo="https://epg.iill.top/logo/CCTV8.png" group-title="•咪咕「TV」",CCTV 8 电视剧
https://tv.iill.top/migu/cctv8
#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" tvg-logo="https://epg.iill.top/logo/CCTV9.png" group-title="•咪咕「TV」",CCTV 9 纪录
https://tv.iill.top/migu/cctv9
#EXTINF:-1 tvg-id="CCTV10" tvg-name="CCTV10" tvg-logo="https://epg.iill.top/logo/CCTV10.png" group-title="•咪咕「TV」",CCTV 10 科教
https://tv.iill.top/migu/cctv10
#EXTINF:-1 tvg-id="CCTV11" tvg-name="CCTV11" tvg-logo="https://epg.iill.top/logo/CCTV11.png" group-title="•咪咕「TV」",CCTV 11 戏曲
https://tv.iill.top/migu/cctv11
#EXTINF:-1 tvg-id="CCTV12" tvg-name="CCTV12" tvg-logo="https://epg.iill.top/logo/CCTV12.png" group-title="•咪咕「TV」",CCTV 12 社会与法
https://tv.iill.top/migu/cctv12
#EXTINF:-1 tvg-id="CCTV13" tvg-name="CCTV13" tvg-logo="https://epg.iill.top/logo/CCTV13.png" group-title="•咪咕「TV」",CCTV 13 新闻
https://tv.iill.top/migu/cctv13
#EXTINF:-1 tvg-id="CCTV14" tvg-name="CCTV14" tvg-logo="https://epg.iill.top/logo/CCTV14.png" group-title="•咪咕「TV」",CCTV 14 少儿
https://tv.iill.top/migu/cctv14
#EXTINF:-1 tvg-id="CCTV15" tvg-name="CCTV15" tvg-logo="https://epg.iill.top/logo/CCTV15.png" group-title="•咪咕「TV」",CCTV 15 音乐
https://tv.iill.top/migu/cctv15
#EXTINF:-1 tvg-id="CCTV17" tvg-name="CCTV17" tvg-logo="https://epg.iill.top/logo/CCTV17.png" group-title="•咪咕「TV」",CCTV 17 农村农业
https://tv.iill.top/migu/cctv17
#EXTINF:-1 tvg-id="CETV1" tvg-name="CETV1" tvg-logo="https://epg.iill.top/logo/CETV1.png" group-title="•咪咕「TV」",CETV 1 中国教育
https://tv.iill.top/migu/cetv1
#EXTINF:-1 tvg-id="CETV2" tvg-name="CETV2" tvg-logo="https://epg.iill.top/logo/CETV2.png" group-title="•咪咕「TV」",CETV 2 中国教育
https://tv.iill.top/migu/cetv2
#EXTINF:-1 tvg-id="CETV4" tvg-name="CETV4" tvg-logo="https://epg.iill.top/logo/CETV4.png" group-title="•咪咕「TV」",CETV 4 中国教育
https://tv.iill.top/migu/cetv4
#EXTINF:-1 tvg-id="浙江卫视" tvg-name="浙江卫视" tvg-logo="https://epg.iill.top/logo/浙江卫视.png" group-title="•咪咕「TV」",浙江卫视
http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" tvg-logo="https://epg.iill.top/logo/广东卫视.png" group-title="•咪咕「TV」",广东卫视
https://tv.iill.top/migu/gdws
#EXTINF:-1 tvg-id="江苏卫视" tvg-name="江苏卫视" tvg-logo="https://epg.iill.top/logo/江苏卫视.png" group-title="•咪咕「TV」",江苏卫视
https://tv.iill.top/migu/jsws
#EXTINF:-1 tvg-id="东方卫视" tvg-name="东方卫视" tvg-logo="https://epg.iill.top/logo/东方卫视.png" group-title="•咪咕「TV」",东方卫视
https://tv.iill.top/migu/dfws
#EXTINF:-1 tvg-id="陕西卫视" tvg-name="陕西卫视" tvg-logo="https://epg.iill.top/logo/陕西卫视.png" group-title="•咪咕「TV」",陕西卫视
https://tv.iill.top/migu/sxws
#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" tvg-logo="https://epg.iill.top/logo/江西卫视.png" group-title="•咪咕「TV」",江西卫视
https://tv.iill.top/migu/jxws
#EXTINF:-1 tvg-id="湖北卫视" tvg-name="湖北卫视" tvg-logo="https://epg.iill.top/logo/湖北卫视.png" group-title="•咪咕「TV」",湖北卫视
https://tv.iill.top/migu/hubws
#EXTINF:-1 tvg-id="上海新闻综合" tvg-name="上海新闻综合" tvg-logo="https://epg.iill.top/logo/上海新闻.png" group-title="•咪咕「TV」",上海新闻综合
https://tv.iill.top/migu/shxw
#EXTINF:-1 tvg-id="东方影视" tvg-name="东方影视" tvg-logo="https://epg.iill.top/logo/东方影视.png" group-title="•咪咕「TV」",上海东方影视
https://tv.iill.top/migu/shys
#EXTINF:-1 tvg-id="上海纪实人文" tvg-name="上海纪实人文" tvg-logo="https://epg.iill.top/logo/纪实人文.png" group-title="•咪咕「TV」",上海纪实人文
https://tv.iill.top/migu/shjs
#EXTINF:-1 tvg-id="劲爆体育" tvg-name="劲爆体育" tvg-logo="https://epg.iill.top/logo/劲爆体育.png" group-title="•咪咕「TV」",SiTV 劲爆体育
https://tv.iill.top/migu/jbty
#EXTINF:-1 tvg-id="魅力足球" tvg-name="魅力足球" tvg-logo="https://epg.iill.top/logo/魅力足球.png" group-title="•咪咕「TV」",SiTV 魅力足球
https://tv.iill.top/migu/mlzq
#EXTINF:-1 tvg-id="七彩戏剧" tvg-name="七彩戏剧" tvg-logo="https://epg.iill.top/logo/七彩戏剧.png" group-title="•咪咕「TV」",SiTV 七彩戏剧
https://tv.iill.top/migu/qcxj
#EXTINF:-1 tvg-id="游戏风云" tvg-name="游戏风云" tvg-logo="https://epg.iill.top/logo/游戏风云.png" group-title="•咪咕「TV」",SiTV 游戏风云
https://tv.iill.top/migu/yxfy
#EXTINF:-1 tvg-id="法治天地" tvg-name="法治天地" tvg-logo="https://epg.iill.top/logo/法治天地.png" group-title="•咪咕「TV」",SiTV 法治天地
https://tv.iill.top/migu/qcxj
#EXTINF:-1 tvg-id="乐游" tvg-name="乐游" tvg-logo="https://epg.iill.top/logo/乐游.png" group-title="•咪咕「TV」",SiTV 乐游
https://tv.iill.top/migu/qcxj
#EXTINF:-1 tvg-id="CHC家庭影院" tvg-name="CHC家庭影院" tvg-logo="https://epg.iill.top/logo/家庭影院.png" group-title="•咪咕「TV」",CHC 家庭影院
https://tv.iill.top/migu/jtyy
#EXTINF:-1 tvg-id="欢笑剧场" tvg-name="欢笑剧场" tvg-logo="https://epg.iill.top/logo/欢笑剧场.png" group-title="•咪咕「TV」",欢笑剧场
https://tv.iill.top/migu/hxjc
#EXTINF:-1 tvg-id="经典香港电影" tvg-name="经典香港电影" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",经典香港电影
https://tv.iill.top/migu/xgdy
#EXTINF:-1 tvg-id="军事迷必看大片" tvg-name="军事迷必看大片" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",军事迷必看大片
https://tv.iill.top/migu/jsm
#EXTINF:-1 tvg-id="新片放映厅" tvg-name="新片放映厅" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",新片放映厅
https://tv.iill.top/migu/xpdy
#EXTINF:-1 tvg-id="红色轮播台" tvg-name="红色轮播台" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",红色轮播台
https://tv.iill.top/migu/hslb
#EXTINF:-1 tvg-id="金色剧场" tvg-name="金色剧场" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",金色剧场
https://tv.iill.top/migu/jsjc
#EXTINF:-1 tvg-id="四海钓鱼" tvg-name="四海钓鱼" tvg-logo="https://epg.iill.top/logo/四海钓鱼.png" group-title="•咪咕「TV」",四海钓鱼
https://tv.iill.top/migu/shdy
#EXTINF:-1 tvg-id="NBA经典" tvg-name="NBA经典" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",NBA 经典
https://tv.iill.top/migu/nba
#EXTINF:-1 tvg-id="五大联赛经典" tvg-name="五大联赛经典" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",五大联赛经典
https://tv.iill.top/migu/lsjd
#EXTINF:-1 tvg-id="足球风云" tvg-name="足球风云" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",中国足球风云
https://tv.iill.top/migu/zqfy
#EXTINF:-1 tvg-id="掼蛋精英赛" tvg-name="掼蛋精英赛" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",掼蛋精英赛
https://tv.iill.top/migu/dds
#EXTINF:-1 tvg-id="咪咕24小时体育" tvg-name="咪咕24小时体育" tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「TV」",咪咕24小时体育台
https://tv.iill.top/migu/mgty
#INSERT_HERE
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「西甲」00:20 联赛 瓦伦西亚 vs 马略卡 周楚雄
https://tv.iill.top/FB/7hmZON
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「西甲」00:20 联赛 毕尔巴鄂竞技 vs 奥萨苏纳 洪宇青
https://tv.iill.top/FB/vFGNob
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「法甲」02:35 联赛 里尔 vs 朗斯 盛斌
https://tv.iill.top/FB/Z4rxQD
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意甲」02:30 联赛 那不勒斯 vs AC米兰 石庆圣 李彦
https://tv.iill.top/FB/BSC9oB
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意甲」02:30 联赛 那不勒斯 vs AC米兰 石庆圣 李彦
https://tv.iill.top/FB/fXNft4
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「西甲」02:45 联赛 皇家贝蒂斯 vs 塞维利亚 刘畅 贺宇
https://tv.iill.top/FB/oLhxQZ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」03:25 常规赛 快船VS骑士 姜帆
https://tv.iill.top/NBA/5MvYlN
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」05:55 常规赛 开拓者VS尼克斯 殷文玉
https://tv.iill.top/NBA/NM7qZF
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:45 常规赛 勇士VS马刺 张浩岳 张兆旭 王羽希
https://tv.iill.top/NBA/Kt6ibS
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:45 常规赛 勇士VS马刺 拜月宁
https://tv.iill.top/NBA/9ZwnLH
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:45 常规赛 勇士VS马刺 王晓晨
https://tv.iill.top/NBA/MtJysN
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 活塞VS森林狼 邢晨
https://tv.iill.top/NBA/Tf3GNi
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 黄蜂VS鹈鹕 张泽欣
https://tv.iill.top/NBA/iDnlYA
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 老鹰VS雄鹿 王冠证
https://tv.iill.top/NBA/00dS8F
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 猛龙VS76人 罗森
https://tv.iill.top/NBA/5QbnEv
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:45 常规赛 火箭VS太阳 连睿 周鹏 裴优
https://tv.iill.top/NBA/Hef7tG
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「国际女篮邀请赛」15:25 国际女篮邀请赛 江苏南钢vs诺维萨德 清流播出
https://tv.iill.top/Migu/o6VMYR
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「LPL」16:40 LGD vs WE LGD vs WE 官方解说
https://tv.iill.top/Migu/awgmkq
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」18:30 辽宁vs山东赛前训练 辽宁vs山东赛前训练 哈秋
https://tv.iill.top/Migu/Z9g8Ks
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」18:30 辽宁vs山东赛前训练 辽宁vs山东赛前训练 罗森
https://tv.iill.top/Migu/9ybUgz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「LPL」19:00 待定 vs UP 待定 vs UP 官方解说
https://tv.iill.top/Migu/sFkUEq
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「国际女篮邀请赛」19:25 国际女篮邀请赛 上海浦发银行vs伏伊伏丁那021 清流播出
https://tv.iill.top/Migu/uApqTG
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 天津先行者vs北京北汽 邵化谦 季孟年
https://tv.iill.top/Migu/om3DGM
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 天津先行者vs北京北汽 新疆vs北控
https://tv.iill.top/Migu/p3WumJ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:10 常规赛第46轮 天津先行者vs北京北汽 四川vs广东
https://tv.iill.top/Migu/1zcsqO
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 天津先行者vs北京北汽 荣浩达
https://tv.iill.top/Migu/7SFQB9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 天津先行者vs北京北汽 刘芳宇
https://tv.iill.top/Migu/CWDYHL
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 天津先行者vs北京北汽 现场原声
https://tv.iill.top/Migu/FbJLlG
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 四川丰谷酒业vs广东东阳光 字诚
https://tv.iill.top/Migu/KpFfBw
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 四川丰谷酒业vs广东东阳光 翻译小余
https://tv.iill.top/Migu/nKzqTg
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 四川丰谷酒业vs广东东阳光 现场原声
https://tv.iill.top/Migu/mtE7un
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 山西汾酒vs南京头排苏酒 孔德昕
https://tv.iill.top/Migu/WIWGMJ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 山西汾酒vs南京头排苏酒 石楷文
https://tv.iill.top/Migu/AACGMm
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 山西汾酒vs南京头排苏酒 王港
https://tv.iill.top/Migu/HefO9n
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 山西汾酒vs南京头排苏酒 现场原声
https://tv.iill.top/Migu/EY2Rr1
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:10 常规赛第46轮 上海久事vs深圳马可波罗 李天宇 徐咏
https://tv.iill.top/Migu/D0fLnH
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 上海久事vs深圳马可波罗 张俊卿
https://tv.iill.top/Migu/565vPu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 上海久事vs深圳马可波罗 李嘉伟
https://tv.iill.top/Migu/ELULMz
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 上海久事vs深圳马可波罗 现场原声
https://tv.iill.top/Migu/uAjT1s
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」18:45 常规赛第46轮 辽宁本钢vs山东高速 杨健 霍楠 曾令旭
https://tv.iill.top/Migu/KY3BzA
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 辽宁本钢vs山东高速 哈秋
https://tv.iill.top/Migu/NhYXWr
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 辽宁本钢vs山东高速 罗森
https://tv.iill.top/Migu/5ihfn0
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 辽宁本钢vs山东高速 明星机位1
https://tv.iill.top/Migu/9QR8V5
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 辽宁本钢vs山东高速 明星机位2
https://tv.iill.top/Migu/EDaCfL
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 辽宁本钢vs山东高速 现场原声
https://tv.iill.top/Migu/bhs5E9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 江苏肯帝亚vs浙江方兴渡 蔡凯臣
https://tv.iill.top/Migu/X8aoaF
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 江苏肯帝亚vs浙江方兴渡 洪超
https://tv.iill.top/Migu/BTfFQT
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 江苏肯帝亚vs浙江方兴渡 张浩岳
https://tv.iill.top/Migu/5c2gvH
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 江苏肯帝亚vs浙江方兴渡 现场原声
https://tv.iill.top/Migu/XLVDe4
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 广州朗肽海本vs九台农商银行 姜帆
https://tv.iill.top/Migu/nnwcmN
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 广州朗肽海本vs九台农商银行 张泽欣
https://tv.iill.top/Migu/tr82T4
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 广州朗肽海本vs九台农商银行 陈涛
https://tv.iill.top/Migu/qEZ8m8
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 广州朗肽海本vs九台农商银行 现场原声
https://tv.iill.top/Migu/t193hM
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 福建晋江文旅vs青岛国信制药 连睿
https://tv.iill.top/Migu/Jpk4OA
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 福建晋江文旅vs青岛国信制药 洪荒
https://tv.iill.top/Migu/rgqRwQ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 福建晋江文旅vs青岛国信制药 刘沛元
https://tv.iill.top/Migu/jyHMNr
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 福建晋江文旅vs青岛国信制药 现场原声
https://tv.iill.top/Migu/viEcGj
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:00 常规赛第46轮 浙江稠州金租vs宁波町渥 吴博文
https://tv.iill.top/Migu/THRWCc
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 浙江稠州金租vs宁波町渥 金哲豪
https://tv.iill.top/Migu/toOfMu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 浙江稠州金租vs宁波町渥 林国雄
https://tv.iill.top/Migu/UjPJDI
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 浙江稠州金租vs宁波町渥 现场原声
https://tv.iill.top/Migu/LbjwQy
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 新疆伊力特vs北京控股 盛哲
https://tv.iill.top/Migu/e8Esv0
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 新疆伊力特vs北京控股 周赫
https://tv.iill.top/Migu/kziLim
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「CBA」19:25 常规赛第46轮 新疆伊力特vs北京控股 现场原声
https://tv.iill.top/Migu/fZXluD
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「斯诺克」20:00 肖国栋PK吴宜泽 丁俊晖迎战老马 肖国栋PK吴宜泽 丁俊晖迎战老马 1号桌
https://tv.iill.top/Migu/6jVQYh
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「斯诺克」20:00 肖国栋PK吴宜泽 丁俊晖迎战老马 肖国栋PK吴宜泽 丁俊晖迎战老马 2号桌
https://tv.iill.top/Migu/GWRh1B
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:35 联赛 伯恩茅斯 vs 伊普斯维奇 涂远
https://tv.iill.top/FB/itUM5G
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:35 联赛 纽卡斯尔联 vs 布伦特福德 刘焕
https://tv.iill.top/FB/EgiWGu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:35 联赛 南安普敦 vs 水晶宫 黄航
https://tv.iill.top/FB/Pt91yd
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:35 联赛 布莱顿 vs 阿斯顿维拉 苗锟
https://tv.iill.top/FB/vUHioo
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:30 联赛 曼城 vs 莱斯特城 刘畅 颜强
https://tv.iill.top/FB/lPxgMx
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:45 联赛 利物浦 vs 埃弗顿 詹俊 张路 林梦鸽
https://tv.iill.top/FB/DT5vas
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:50 联赛 利物浦 vs 埃弗顿 江忠德
https://tv.iill.top/FB/rn67RG
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:50 联赛 利物浦 vs 埃弗顿 洪荒
https://tv.iill.top/FB/65Pfv7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:50 联赛 利物浦 vs 埃弗顿 陈渤胄
https://tv.iill.top/FB/bPPp16
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「英超」02:45 联赛 利物浦 vs 埃弗顿 詹俊 张路 林梦鸽
https://tv.iill.top/FB/xkss21
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意大利杯」02:45 半决赛 AC米兰vs国际米兰 石庆圣 李彦
https://tv.iill.top/FB/MLzhBt
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意大利杯」02:50 半决赛 AC米兰vs国际米兰 刘腾
https://tv.iill.top/FB/FtmtoJ
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/足球.png" group-title="•咪咕「足球」", 「意大利杯」02:45 半决赛 AC米兰vs国际米兰 石庆圣 李彦
https://tv.iill.top/FB/O2nfu9
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 尼克斯VS骑士 李天宇 张兆旭
https://tv.iill.top/NBA/ZdELgN
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 黄蜂VS步行者 王琰博
https://tv.iill.top/NBA/VwL4NS
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」06:55 常规赛 国王VS奇才 王凯
https://tv.iill.top/NBA/yb8WgY
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:25 常规赛 热火VS凯尔特人 蔡凯臣 刘铁
https://tv.iill.top/NBA/LXFZzY
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」07:55 常规赛 爵士VS火箭 陈鑫隆
https://tv.iill.top/NBA/KCVThR
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:25 常规赛 老鹰VS独行侠 刘芳宇
https://tv.iill.top/NBA/vNQket
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」08:55 常规赛 马刺VS掘金 孔德昕
https://tv.iill.top/NBA/8mAIAP
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」09:25 常规赛 活塞VS雷霆 罗森
https://tv.iill.top/NBA/bGhDnu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/NBA.png" group-title="•咪咕「NBA」", 「NBA」10:15 常规赛 鹈鹕VS快船 庄宁宇 陈正昊 魏欣怡
https://tv.iill.top/NBA/Jc16WY
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」18:00 向鹏冲八强 张本智和、伊藤美诚出战 向鹏冲八强 张本智和、伊藤美诚出战 马特
https://tv.iill.top/Migu/XLYuxu
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」11:00 向鹏冲八强 张本智和、伊藤美诚出战 向鹏冲八强 张本智和、伊藤美诚出战 清流
https://tv.iill.top/Migu/SHsp5P
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTT」11:00 向鹏冲八强 张本智和、伊藤美诚出战 向鹏冲八强 张本智和、伊藤美诚出战 英文解说
https://tv.iill.top/Migu/TS4nf6
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「斯诺克」20:00 丁俊晖迎战囧哥 肖国栋PK希金斯 丁俊晖迎战囧哥 肖国栋PK希金斯 1号桌
https://tv.iill.top/Migu/L342S7
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「斯诺克」20:00 丁俊晖迎战囧哥 肖国栋PK希金斯 丁俊晖迎战囧哥 肖国栋PK希金斯 2号桌
https://tv.iill.top/Migu/slk2Me
#EXTINF:-1 tvg-logo="https://epg.iill.top/logo/咪咕.png" group-title="•咪咕「体育」", 「WTA」23:00 阿尼西莫娃、佩古拉出战 郑钦文PK梅尔滕斯 阿尼西莫娃、佩古拉出战 郑钦文PK梅尔滕斯 赛场原声
https://tv.iill.top/Migu/M23igz
#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" tvg-logo="https://epg.iill.top/logo/凤凰中文.png" http-user-agent="FengWatch/5.4.14" group-title="•港澳「限制」",鳳凰衛視·中文「限UA」
http://dns.yiandrive.com:15907/phenix/fhzw
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+334 -391
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
var e,t=function(){return t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},t.apply(this,arguments)},n={xml:!1,decodeEntities:!0},r={_useHtmlParser2:!0,xmlMode:!0};function i(e){return(null==e?void 0:e.xml)?"boolean"==typeof e.xml?r:t(t({},r),e.xml):null!=e?e:void 0}!function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(e||(e={}));const s=e.Root,a=e.Text,o=e.Directive,c=e.Comment,l=e.Script,h=e.Style,u=e.Tag,p=e.CDATA,f=e.Doctype;class d{constructor(){this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}get parentNode(){return this.parent}set parentNode(e){this.parent=e}get previousSibling(){return this.prev}set previousSibling(e){this.prev=e}get nextSibling(){return this.next}set nextSibling(e){this.next=e}cloneNode(e=!1){return v(this,e)}}class E extends d{constructor(e){super(),this.data=e}get nodeValue(){return this.data}set nodeValue(e){this.data=e}}class m extends E{constructor(){super(...arguments),this.type=e.Text}get nodeType(){return 3}}class T extends E{constructor(){super(...arguments),this.type=e.Comment}get nodeType(){return 8}}class _ extends E{constructor(t,n){super(n),this.name=t,this.type=e.Directive}get nodeType(){return 1}}class A extends d{constructor(e){super(),this.children=e}get firstChild(){var e;return null!==(e=this.children[0])&&void 0!==e?e:null}get lastChild(){return this.children.length>0?this.children[this.children.length-1]:null}get childNodes(){return this.children}set childNodes(e){this.children=e}}class g extends A{constructor(){super(...arguments),this.type=e.CDATA}get nodeType(){return 4}}class N extends A{constructor(){super(...arguments),this.type=e.Root}get nodeType(){return 9}}class C extends A{constructor(t,n,r=[],i=("script"===t?e.Script:"style"===t?e.Style:e.Tag)){super(r),this.name=t,this.attribs=n,this.type=i}get nodeType(){return 1}get tagName(){return this.name}set tagName(e){this.name=e}get attributes(){return Object.keys(this.attribs).map((e=>{var t,n;return{name:e,value:this.attribs[e],namespace:null===(t=this["x-attribsNamespace"])||void 0===t?void 0:t[e],prefix:null===(n=this["x-attribsPrefix"])||void 0===n?void 0:n[e]}}))}}function I(t){return(n=t).type===e.Tag||n.type===e.Script||n.type===e.Style;var n}function S(t){return t.type===e.CDATA}function b(t){return t.type===e.Text}function O(t){return t.type===e.Comment}function y(t){return t.type===e.Directive}function L(t){return t.type===e.Root}function k(e){return Object.prototype.hasOwnProperty.call(e,"children")}function v(e,t=!1){let n;if(b(e))n=new m(e.data);else if(O(e))n=new T(e.data);else if(I(e)){const r=t?D(e.children):[],i=new C(e.name,{...e.attribs},r);r.forEach((e=>e.parent=i)),null!=e.namespace&&(i.namespace=e.namespace),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]={...e["x-attribsNamespace"]}),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]={...e["x-attribsPrefix"]}),n=i}else if(S(e)){const r=t?D(e.children):[],i=new g(r);r.forEach((e=>e.parent=i)),n=i}else if(L(e)){const r=t?D(e.children):[],i=new N(r);r.forEach((e=>e.parent=i)),e["x-mode"]&&(i["x-mode"]=e["x-mode"]),n=i}else{if(!y(e))throw new Error(`Not implemented yet: ${e.type}`);{const t=new _(e.name,e.data);null!=e["x-name"]&&(t["x-name"]=e["x-name"],t["x-publicId"]=e["x-publicId"],t["x-systemId"]=e["x-systemId"]),n=t}}return n.startIndex=e.startIndex,n.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(n.sourceCodeLocation=e.sourceCodeLocation),n}function D(e){const t=e.map((e=>v(e,!0)));for(let e=1;e<t.length;e++)t[e].prev=t[e-1],t[e-1].next=t[e];return t}const R={withStartIndices:!1,withEndIndices:!1,xmlMode:!1};class M{constructor(e,t,n){this.dom=[],this.root=new N(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(n=t,t=R),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:R,this.elementCB=null!=n?n:null}onparserinit(e){this.parser=e}onreset(){this.dom=[],this.root=new N(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null}onend(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))}onerror(e){this.handleCallback(e)}onclosetag(){this.lastNode=null;const e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)}onopentag(t,n){const r=this.options.xmlMode?e.Tag:void 0,i=new C(t,n,void 0,r);this.addNode(i),this.tagStack.push(i)}ontext(t){const{lastNode:n}=this;if(n&&n.type===e.Text)n.data+=t,this.options.withEndIndices&&(n.endIndex=this.parser.endIndex);else{const e=new m(t);this.addNode(e),this.lastNode=e}}oncomment(t){if(this.lastNode&&this.lastNode.type===e.Comment)return void(this.lastNode.data+=t);const n=new T(t);this.addNode(n),this.lastNode=n}oncommentend(){this.lastNodLine truncated
File diff suppressed because it is too large. Load diff
+11 -3043
View File
File diff suppressed because it is too large. Load diff
+82 -112
View File
@@ -20,11 +20,11 @@
*/
/*global require, exports, module, define */
(function(global, factory) {
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
})(this, (function(jinja) {
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {}));
})(this, (function (jinja) {
"use strict";
var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g;
var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g;
@@ -77,22 +77,20 @@
this.isSilent = false;
}
Parser.prototype.push = function(line) {
Parser.prototype.push = function (line) {
if (!this.isSilent) {
this.compiled.push(line);
}
};
Parser.prototype.parse = function(src) {
Parser.prototype.parse = function (src) {
this.tokenize(src);
return this.compiled;
};
Parser.prototype.tokenize = function(src) {
var lastEnd = 0,
parser = this,
trimLeading = false;
matchAll(src, START_TOKEN, function(open, index, src) {
Parser.prototype.tokenize = function (src) {
var lastEnd = 0, parser = this, trimLeading = false;
matchAll(src, START_TOKEN, function (open, index, src) {
//here we match the rest of the src against a regex for this tag
var match = src.slice(index + open.length).match(TAGS[open]);
match = (match ? match[0] : '');
@@ -129,11 +127,11 @@
this.textHandler(text);
};
Parser.prototype.textHandler = function(text) {
Parser.prototype.textHandler = function (text) {
this.push('write(' + JSON.stringify(text) + ');');
};
Parser.prototype.tokenHandler = function(open, inner) {
Parser.prototype.tokenHandler = function (open, inner) {
var type = delimeters[open];
if (type === 'directive') {
this.compileTag(inner);
@@ -142,7 +140,7 @@
//replace || operators with ~
extracted.src = extracted.src.replace(/\|\|/g, '~').split('|');
//put back || operators
extracted.src = extracted.src.map(function(part) {
extracted.src = extracted.src.map(function (part) {
return part.split('~').join('||');
});
var parts = this.injectEnt(extracted, '@');
@@ -155,7 +153,7 @@
}
};
Parser.prototype.compileTag = function(str) {
Parser.prototype.compileTag = function (str) {
var directive = str.split(' ')[0];
var handler = tagHandlers[directive];
if (!handler) {
@@ -164,23 +162,20 @@
handler.call(this, str.slice(directive.length).trim());
};
Parser.prototype.parseFilter = function(src) {
Parser.prototype.parseFilter = function (src) {
src = src.trim();
var match = src.match(/[:(]/);
var i = match ? match.index : -1;
if (i < 0) return JSON.stringify([src]);
var name = src.slice(0, i);
var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1);
args = this.parseExpr(args, {
terms: true
});
args = this.parseExpr(args, {terms: true});
return '[' + JSON.stringify(name) + ',' + args + ']';
};
Parser.prototype.extractEnt = function(src, regex, placeholder) {
var subs = [],
isFunc = typeof placeholder == 'function';
src = src.replace(regex, function(str) {
Parser.prototype.extractEnt = function (src, regex, placeholder) {
var subs = [], isFunc = typeof placeholder == 'function';
src = src.replace(regex, function (str) {
var replacement = isFunc ? placeholder(str) : placeholder;
if (replacement) {
subs.push(str);
@@ -188,21 +183,15 @@
}
return str;
});
return {
src: src,
subs: subs
};
return {src: src, subs: subs};
};
Parser.prototype.injectEnt = function(extracted, placeholder) {
var src = extracted.src,
subs = extracted.subs,
isArr = Array.isArray(src);
Parser.prototype.injectEnt = function (extracted, placeholder) {
var src = extracted.src, subs = extracted.subs, isArr = Array.isArray(src);
var arr = (isArr) ? src : [src];
var re = new RegExp('[' + placeholder + ']', 'g'),
i = 0;
arr.forEach(function(src, index) {
arr[index] = src.replace(re, function() {
var re = new RegExp('[' + placeholder + ']', 'g'), i = 0;
arr.forEach(function (src, index) {
arr[index] = src.replace(re, function () {
return subs[i++];
});
});
@@ -210,7 +199,7 @@
};
//replace complex literals without mistaking subscript notation with array literals
Parser.prototype.replaceComplex = function(s) {
Parser.prototype.replaceComplex = function (s) {
var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v');
parsed.src = parsed.src.replace(NON_PRIMITIVES, '~');
return this.injectEnt(parsed, 'v');
@@ -218,17 +207,17 @@
//parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation)
//valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]`
Parser.prototype.parseExpr = function(src, opts) {
Parser.prototype.parseExpr = function (src, opts) {
opts = opts || {};
//extract string literals -> @
var parsed1 = this.extractEnt(src, STRINGS, '@');
//note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars?
parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) {
parsed1.src = parsed1.src.replace(EOPS, function (s, before, op, after) {
return (op in operators) ? before + operators[op] + after : s;
});
//sub out non-string literals (numbers/true/false/null) -> #
// the distinction is necessary because @ can be object identifiers, # cannot
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) {
var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function (s) {
return (s in constants || NUMBER.test(s)) ? '#' : null;
});
//sub out object/variable identifiers -> i
@@ -240,10 +229,10 @@
var simplified = parsed3.src;
//sub out complex literals (objects/arrays) -> ~
// the distinction is necessary because @ and # can be subscripts but ~ cannot
while (simplified !== (simplified = this.replaceComplex(simplified)));
while (simplified !== (simplified = this.replaceComplex(simplified))) ;
//now @ represents strings, # represents other primitives and ~ represents non-primitives
//replace complex variables (those with dot/subscript accessors) -> v
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v')));
while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))) ;
//empty subscript or complex variables in subscript, are not permitted
simplified = simplified.replace(/[iv]\[v?\]/g, 'x');
//sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers)
@@ -253,9 +242,9 @@
//allow 'not' unary operator
simplified = simplified.replace(/!+[i]/g, 'i');
var terms = opts.terms ? simplified.split(',') : [simplified];
terms.forEach(function(term) {
terms.forEach(function (term) {
//simplify logical grouping
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i')));
while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))) ;
if (!term.match(/^i(%i)*/)) {
throw new Error('Invalid expression: ' + src + " " + term);
}
@@ -266,16 +255,15 @@
return this.injectEnt(parsed1, '@');
};
Parser.prototype.parseVar = function(src) {
Parser.prototype.parseVar = function (src) {
var args = Array.prototype.slice.call(arguments);
var str = args.pop(),
index = args.pop();
var str = args.pop(), index = args.pop();
//quote bare object identifiers (might be a reserved word like {while: 1})
if (src === 'i' && str.charAt(index + 1) === ':') {
return '"i"';
}
var parts = ['"i"'];
src.replace(ACCESSOR, function(part) {
src.replace(ACCESSOR, function (part) {
if (part === '.i') {
parts.push('"i"');
} else if (part === '[i]') {
@@ -288,15 +276,15 @@
};
//escapes a name to be used as a javascript identifier
Parser.prototype.escName = function(str) {
return str.replace(/\W/g, function(s) {
Parser.prototype.escName = function (str) {
return str.replace(/\W/g, function (s) {
return '$' + s.charCodeAt(0).toString(16);
});
};
Parser.prototype.parseQuoted = function(str) {
Parser.prototype.parseQuoted = function (str) {
if (str.charAt(0) === "'") {
str = str.slice(1, -1).replace(/\\.|"/, function(s) {
str = str.slice(1, -1).replace(/\\.|"/, function (s) {
if (s === "\\'") return "'";
return s.charAt(0) === '\\' ? s : ('\\' + s);
});
@@ -309,48 +297,48 @@
//the context 'this' inside tagHandlers is the parser instance
var tagHandlers = {
'if': function(expr) {
'if': function (expr) {
this.push('if (' + this.parseExpr(expr) + ') {');
this.nest.unshift('if');
},
'else': function() {
'else': function () {
if (this.nest[0] === 'for') {
this.push('}, function() {');
} else {
this.push('} else {');
}
},
'elseif': function(expr) {
'elseif': function (expr) {
this.push('} else if (' + this.parseExpr(expr) + ') {');
},
'endif': function() {
'endif': function () {
this.nest.shift();
this.push('}');
},
'for': function(str) {
'for': function (str) {
var i = str.indexOf(' in ');
var name = str.slice(0, i).trim();
var expr = str.slice(i + 4).trim();
this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {');
this.nest.unshift('for');
},
'endfor': function() {
'endfor': function () {
this.nest.shift();
this.push('});');
},
'raw': function() {
'raw': function () {
this.rawMode = true;
},
'endraw': function() {
'endraw': function () {
this.rawMode = false;
},
'set': function(stmt) {
'set': function (stmt) {
var i = stmt.indexOf('=');
var name = stmt.slice(0, i).trim();
var expr = stmt.slice(i + 1).trim();
this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');');
},
'block': function(name) {
'block': function (name) {
if (this.isParent) {
++this.parentBlocks;
var blockName = 'block_' + (this.escName(name) || this.parentBlocks);
@@ -363,7 +351,7 @@
}
this.nest.unshift('block');
},
'endblock': function() {
'endblock': function () {
this.nest.shift();
if (this.isParent) {
this.push('});');
@@ -372,7 +360,7 @@
this.isSilent = true;
}
},
'extends': function(name) {
'extends': function (name) {
name = this.parseQuoted(name);
var parentSrc = this.readTemplateFile(name);
this.isParent = true;
@@ -382,7 +370,7 @@
//silence output until we enter a child block
this.isSilent = true;
},
'include': function(name) {
'include': function (name) {
name = this.parseQuoted(name);
var incSrc = this.readTemplateFile(name);
this.isInclude = true;
@@ -397,31 +385,29 @@
tagHandlers.elif = tagHandlers.elseif;
var getRuntime = function runtime(data, opts) {
var defaults = {
autoEscape: 'toJson'
};
var defaults = {autoEscape: 'toJson'};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var getKeys = Object.keys || function(obj) {
var getKeys = Object.keys || function (obj) {
var keys = [];
for (var n in obj)
if (_hasOwnProperty.call(obj, n)) keys.push(n);
for (var n in obj) if (_hasOwnProperty.call(obj, n)) keys.push(n);
return keys;
};
var isArray = Array.isArray || function(obj) {
var isArray = Array.isArray || function (obj) {
return _toString.call(obj) === '[object Array]';
};
var create = Object.create || function(obj) {
function F() {}
var create = Object.create || function (obj) {
function F() {
}
F.prototype = obj;
return new F();
};
var toString = function(val) {
var toString = function (val) {
if (val == null) return '';
return (typeof val.toString == 'function') ? val.toString() : _toString.call(val);
};
var extend = function(dest, src) {
var extend = function (dest, src) {
var keys = getKeys(src);
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
@@ -430,9 +416,8 @@
return dest;
};
//get a value, lexically, starting in current context; a.b -> get("a","b")
var get = function() {
var val, n = arguments[0],
c = stack.length;
var get = function () {
var val, n = arguments[0], c = stack.length;
while (c--) {
val = stack[c][n];
if (typeof val != 'undefined') break;
@@ -444,23 +429,21 @@
}
return (val == null) ? '' : val;
};
var set = function(n, val) {
var set = function (n, val) {
stack[stack.length - 1][n] = val;
};
var push = function(ctx) {
var push = function (ctx) {
stack.push(ctx || {});
};
var pop = function() {
var pop = function () {
stack.pop();
};
var write = function(str) {
var write = function (str) {
output.push(str);
};
var filter = function(val) {
var filter = function (val) {
for (var i = 1, len = arguments.length; i < len; i++) {
var arr = arguments[i],
name = arr[0],
filter = filters[name];
var arr = arguments[i], name = arr[0], filter = filters[name];
if (filter) {
arr[0] = val;
//now arr looks like [val, arg1, arg2]
@@ -475,58 +458,47 @@
}
output.push(val);
};
var each = function(obj, loopvar, fn1, fn2) {
var each = function (obj, loopvar, fn1, fn2) {
if (obj == null) return;
var arr = isArray(obj) ? obj : getKeys(obj),
len = arr.length;
var ctx = {
loop: {
length: len,
first: arr[0],
last: arr[len - 1]
}
};
var arr = isArray(obj) ? obj : getKeys(obj), len = arr.length;
var ctx = {loop: {length: len, first: arr[0], last: arr[len - 1]}};
push(ctx);
for (var i = 0; i < len; i++) {
extend(ctx.loop, {
index: i + 1,
index0: i
});
extend(ctx.loop, {index: i + 1, index0: i});
fn1(ctx[loopvar] = arr[i]);
}
if (len === 0 && fn2) fn2();
pop();
};
var block = function(fn) {
var block = function (fn) {
push();
fn();
pop();
};
var render = function() {
var render = function () {
return output.join('');
};
data = data || {};
opts = extend(defaults, opts || {});
var filters = extend({
html: function(val) {
html: function (val) {
return toString(val)
.split('&').join('&amp;')
.split('<').join('&lt;')
.split('>').join('&gt;')
.split('"').join('&quot;');
},
safe: function(val) {
safe: function (val) {
return val;
},
toJson: function(val) {
toJson: function (val) {
if (typeof val === 'object') {
return JSON.stringify(val);
}
return toString(val);
}
}, opts.filters || {});
var stack = [create(data || {})],
output = [];
var stack = [create(data || {})], output = [];
return {
get: get,
set: set,
@@ -542,7 +514,7 @@
var runtime;
jinja.compile = function(markup, opts) {
jinja.compile = function (markup, opts) {
opts = opts || {};
var parser = new Parser();
parser.readTemplateFile = this.readTemplateFile;
@@ -559,19 +531,17 @@
runtime = runtime || (runtime = getRuntime.toString());
fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))');
}
return {
render: fn
};
return {render: fn};
};
jinja.render = function(markup, data, opts) {
jinja.render = function (markup, data, opts) {
var tmpl = jinja.compile(markup);
return tmpl.render(data, opts);
};
jinja.templateFiles = [];
jinja.readTemplateFile = function(name) {
jinja.readTemplateFile = function (name) {
var templateFiles = this.templateFiles || [];
var templateFile = templateFiles[name];
if (templateFile == null) {
+195 -290
View File
@@ -18,343 +18,248 @@
globalThis.JSEncrypt = factory();
}
})(this, () => {
return /******/ (() => { // webpackBootstrap
/******/
var __webpack_modules__ = ({
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/
"./lib/JSEncrypt.js":
/*!**************************!*\
!*** ./lib/JSEncrypt.js ***!
\**************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/JSEncrypt.js":
/*!**************************!*\
!*** ./lib/JSEncrypt.js ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n Line truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy Line truncated
/***/
}),
/***/ }),
/***/
"./lib/JSEncryptRSAKey.js":
/*!********************************!*\
!*** ./lib/JSEncryptRSAKey.js ***!
\********************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/JSEncryptRSAKey.js":
/*!********************************!*\
!*** ./lib/JSEncryptRSAKey.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL Line truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n Line truncated
/***/
}),
/***/ }),
/***/
"./lib/index.js":
/*!**********************!*\
!*** ./lib/index.js ***!
\**********************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/index.js":
/*!**********************!*\
!*** ./lib/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/asn1js/asn1.js":
/*!********************************!*\
!*** ./lib/lib/asn1js/asn1.js ***!
\********************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/asn1js/asn1.js":
/*!********************************!*\
!*** ./lib/lib/asn1js/asn1.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shoLine truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : rLine truncated
/***/
}),
/***/ }),
/***/
"./lib/lib/asn1js/base64.js":
/*!**********************************!*\
!*** ./lib/lib/asn1js/base64.js ***!
\**********************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/asn1js/base64.js":
/*!**********************************!*\
!*** ./lib/lib/asn1js/base64.js ***!
\**********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/asn1js/hex.js":
/*!*******************************!*\
!*** ./lib/lib/asn1js/hex.js ***!
\*******************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/asn1js/hex.js":
/*!*******************************!*\
!*** ./lib/lib/asn1js/hex.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/asn1js/int10.js":
/*!*********************************!*\
!*** ./lib/lib/asn1js/int10.js ***!
\*********************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/asn1js/int10.js":
/*!*********************************!*\
!*** ./lib/lib/asn1js/int10.js ***!
\*********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/base64.js":
/*!********************************!*\
!*** ./lib/lib/jsbn/base64.js ***!
\********************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/base64.js":
/*!********************************!*\
!*** ./lib/lib/jsbn/base64.js ***!
\********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/jsbn.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/jsbn.js ***!
\******************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/jsbn.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/jsbn.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.protot Line truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBi Line truncated
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/prng4.js":
/*!*******************************!*\
!*** ./lib/lib/jsbn/prng4.js ***!
\*******************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/prng4.js":
/*!*******************************!*\
!*** ./lib/lib/jsbn/prng4.js ***!
\*******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/rng.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rng.js ***!
\*****************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/rng.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rng.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/rsa.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rsa.js ***!
\*****************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/rsa.js":
/*!*****************************!*\
!*** ./lib/lib/jsbn/rsa.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, Line truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N Line truncated
/***/
}),
/***/ }),
/***/
"./lib/lib/jsbn/util.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/util.js ***!
\******************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsbn/util.js":
/*!******************************!*\
!*** ./lib/lib/jsbn/util.js ***!
\******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?");
/***/
}),
/***/ }),
/***/
"./lib/lib/jsrsasign/asn1-1.0.js":
/*!***************************************!*\
!*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
\***************************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsrsasign/asn1-1.0.js":
/*!***************************************!*\
!*** ./lib/lib/jsrsasign/asn1-1.0.js ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n Line truncated
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n Line truncated
/***/
}),
/***/ }),
/***/
"./lib/lib/jsrsasign/yahoo.js":
/*!************************************!*\
!*** ./lib/lib/jsrsasign/yahoo.js ***!
\************************************/
/***/
((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
/***/ "./lib/lib/jsrsasign/yahoo.js":
/*!************************************!*\
!*** ./lib/lib/jsrsasign/yahoo.js ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?");
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?");
/***/
}),
/***/ }),
/***/
"./node_modules/process/browser.js":
/*!*****************************************!*\
!*** ./node_modules/process/browser.js ***!
\*****************************************/
/***/
((module) => {
/***/ "./node_modules/process/browser.js":
/*!*****************************************!*\
!*** ./node_modules/process/browser.js ***!
\*****************************************/
/***/ ((module) => {
eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess Line truncated
eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nf Line truncated
/***/
})
/***/ })
/******/
});
/************************************************************************/
/******/ // The module cache
/******/
var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/
function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/
var cachedModule = __webpack_module_cache__[moduleId];
/******/
if (cachedModule !== undefined) {
/******/
return cachedModule.exports;
/******/
}
/******/ // Create a new module (and put it into the cache)
/******/
var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/
exports: {}
/******/
};
/******/
/******/ // Execute the module function
/******/
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/
return module.exports;
/******/
}
/******/
/************************************************************************/
/******/
/* webpack/runtime/define property getters */
/******/
(() => {
/******/ // define getter functions for harmony exports
/******/
__webpack_require__.d = (exports, definition) => {
/******/
for (var key in definition) {
/******/
if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/
Object.defineProperty(exports, key, {
enumerable: true,
get: definition[key]
});
/******/
}
/******/
}
/******/
};
/******/
})();
/******/
/******/
/* webpack/runtime/hasOwnProperty shorthand */
/******/
(() => {
/******/
__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/
})();
/******/
/******/
/* webpack/runtime/make namespace object */
/******/
(() => {
/******/ // define __esModule on exports
/******/
__webpack_require__.r = (exports) => {
/******/
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/
Object.defineProperty(exports, Symbol.toStringTag, {
value: 'Module'
});
/******/
}
/******/
Object.defineProperty(exports, '__esModule', {
value: true
});
/******/
};
/******/
})();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/
var __webpack_exports__ = __webpack_require__("./lib/index.js");
/******/
__webpack_exports__ = __webpack_exports__["default"];
/******/
/******/
return __webpack_exports__;
/******/
})();
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval devtool is used.
/******/ var __webpack_exports__ = __webpack_require__("./lib/index.js");
/******/ __webpack_exports__ = __webpack_exports__["default"];
/******/
/******/ return __webpack_exports__;
/******/ })()
;
});
+1735 -1807
View File
File diff suppressed because it is too large. Load diff
+2 -5858
View File
File diff suppressed because it is too large. Load diff
+2 -1439
View File
File diff suppressed because it is too large. Load diff
+146
View File
@@ -0,0 +1,146 @@
# -*- coding: utf-8 -*-
# by @嗷呜
import sys
sys.path.append('..')
from base.spider import Spider
import requests
class Spider(Spider):
def init(self, extend=""):
pass
def getName(self):
return "hitv"
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
def homeContent(self, filter):
result = {}
cateManual = {
# "直播": "live",
'排行榜': 'rank',
"电影": "1",
"剧集": "2",
"综艺": "3",
"动画": "4",
"短片": "5"
}
classes = []
for k in cateManual:
classes.append({
'type_name': k,
'type_id': cateManual[k]
})
result['class'] = classes
return result
host = "https://wys.upfuhn.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/80.0.3987.149 Safari/537.36"
}
def list(self, list):
videos = []
for it in list:
videos.append({
"vod_id": it['video_site_id'],
"vod_name": it['video_name'],
"vod_pic": it['video_horizontal_url'] or it['video_vertical_url'],
"vod_remarks": it['newest_series_num'],
"vod_year": it['years'],
})
return videos
def homeVideoContent(self):
url = f'{self.host}/v1/ys_video_sites/hot?t=1'
data = requests.get(url, headers=self.headers).json()
videos = self.list(data['data']['data'])
result = {'list': videos}
return result
def categoryContent(self, tid, pg, filter, extend):
path = f'/v1/ys_video_sites?t={tid}&s_t=0&a&y&o=0&ps=21&pn={pg}'
rank = False
if tid == 'rank':
if pg == 1:
path = f'/v1/ys_video_sites/ranking'
rank = True
else:
path = ''
# elif tid == 'live' and pg == 1:
# path = f'/v1/ys_live_tvs'
videos = []
result = {}
try:
data = requests.get(self.host + path, headers=self.headers).json()
if rank:
for video in data['data']:
videos.extend(data['data'][video])
else:
videos = data['data']['data']
result = {}
result['list'] = self.list(videos)
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
except:
result['list'] = []
return result
def detailContent(self, ids):
tid = ids[0]
url = f'{self.host}/v1/ys_video_series/by_vid/{tid}'
data = requests.get(url, headers=self.headers).json()
data1 = data['data']['ys_video_site']
urls = []
for it in data['data']['data']:
urls.append(it['series_num'] + '$' + it['video_url'])
vod = {
'vod_name': data1['video_name'],
'type_name': data1['tag'],
'vod_year': data1['years'],
'vod_area': data1['area'],
'vod_director': data1['main_actor'],
'vod_content': data1['video_desc'],
'vod_play_from': '嗨皮在线',
'vod_play_url': '#'.join(urls),
}
result = {
'list': [
vod
]
}
return result
def searchContent(self, key, quick, pg=1):
url = f'{self.host}/v1/ys_video_sites/search?s={key}&o=0&ps=200&pn={pg}'
data = requests.get(url, headers=self.headers).json()
videos = data['data']['video_sites']
if data['data']['first_video_series'] is not None:
videos = [data['data']['first_video_series']] + videos
result = {}
result['list'] = self.list(videos)
result['page'] = pg
return result
def playerContent(self, flag, id, vipFlags):
result = {
'url': id,
'parse': 0,
'header': self.headers
}
return result
def localProxy(self, param):
pass
+279
View File
@@ -0,0 +1,279 @@
# coding=utf-8
# !/usr/bin/python
# by嗷呜(finally)
import sys
import os
sys.path.append("..")
import re
import hashlib
import hmac
import random
import string
from Crypto.Util.Padding import unpad
from concurrent.futures import ThreadPoolExecutor
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5, AES
from base64 import b64encode, b64decode
import json
import time
from base.spider import Spider
class Spider(Spider):
def getName(self):
return "电影猎手"
def init(self, extend=""):
self.device = self.device_id()
self.host = self.gethost()
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def action(self, action):
pass
def destroy(self):
pass
t = str(int(time.time()))
def homeContent(self, filter):
result = {}
filters = {}
classes = []
bba = self.url()
data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text
data1 = self.aes(data)
dy = {"class":"类型","area":"地区","lang":"语言","year":"年份","letter":"字母","by":"排序","sort":"排序"}
data1['data']['movie_screen']['sort'].pop(0)
for item in data1['data']['movie_screen']['sort']:
item['n'] = item.pop('name')
item['v'] = item.pop('value')
for item in data1['data']['movie_screen']['filter']:
has_non_empty_field = False
classes.append({"type_name": item["name"], "type_id": str(item["id"])})
for key in dy:
if key in item and item[key]:
has_non_empty_field = True
break
if has_non_empty_field:
filters[str(item["id"])] = []
filters[str(item["id"])].append(
{"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']})
for dkey in item:
if dkey in dy and item[dkey]:
item[dkey].pop(0)
value_array = [
{"n": value.strip(), "v": value.strip()}
for value in item[dkey]
if value.strip() != ""
]
filters[str(item["id"])].append(
{"key": dkey, "name": dy[dkey], "value": value_array}
)
result["class"] = classes
result["filters"] = filters
return result
def homeVideoContent(self):
bba = self.url()
url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()
videos = []
for item in data['data']:
if len(item['list']) > 0:
for it in item['list']:
try:
videos.append(self.voides(it))
except Exception as e:
continue
result = {"list": videos}
return result
def categoryContent(self, tid, pg, filter, extend):
body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"),
"area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg),
"pageSize": "21"}
result = {}
list = []
bba = self.url(body)
url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}"
data = self.fetch(url, headers=self.header()).json()['data']['list']
for item in data:
list.append(self.voides(item))
result["list"] = list
result["page"] = pg
result["pagecount"] = 9999
result["limit"] = 90
result["total"] = 999999
return result
def detailContent(self, ids):
body = {"id": ids[0]}
bba = self.url(body)
url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()['data']
video = {'vod_name': data.get('name'),'type_name': data.get('type_name'),'vod_year': data.get('year'),'vod_area': data.get('area'),'vod_remarks': data.get('dynami'),'vod_content': data.get('content')}
play = []
names = []
tasks = []
for itt in data["play_from"]:
name = itt["name"]
a = []
if len(itt["list"]) > 0:
names.append(name)
play.append(self.playeach(itt['list']))
else:
tasks.append({"movie_id": ids[0], "from_code": itt["code"]})
names.append(name)
if tasks:
with ThreadPoolExecutor(max_workers=len(tasks)) as executor:
results = executor.map(self.playlist, tasks)
for result in results:
if result:
play.append(result)
else:
play.append("")
video["vod_play_from"] = "$$$".join(names)
video["vod_play_url"] = "$$$".join(play)
result = {"list": [video]}
return result
def searchContent(self, key, quick, pg=1):
body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10",
"res_type": "by_movie_name"}
bba = self.url(body)
url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}"
data = self.fetch(url, headers=self.header()).json()['data'].get('list')
videos = []
for it in data:
try:
videos.append(self.voides(it))
except Exception as e:
continue
result = {"list": videos, "page": pg}
return result
def playerContent(self, flag, id, vipFlags):
url = id
if "m3u8" not in url and "mp4" not in url:
try:
add = id.split('|||')
data = {"from_code": add[0], "play_url": add[1], "episode_id": add[2], "type": "play"}
bba = self.url(data)
data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}",
headers=self.header()).json()['data']
url = data2.get('play_url') or data2.get('download_url')
try:
url1 = self.fetch(url, headers=self.header(), allow_redirects=False).headers['Location']
if url1 and "http" in url1:
url = url1
except:
pass
except Exception as e:
pass
if '.jpg' in url or '.jpeg' in url or '.png' in url:
url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
result = {}
result["parse"] = 0
result["url"] = url
result["header"] = {'user-agent': 'okhttp/4.9.2'}
return result
def localProxy(self, param):
url = b64decode(param["url"]).decode('utf-8')
durl = url[:url.rfind('/')]
data = self.fetch(url, headers=self.header()).content.decode("utf-8")
lines = data.strip().split('\n')
for index, string in enumerate(lines):
# if 'URI="' in string and 'http' not in string:
# lines[index] = index
# 暂时预留,貌似用不到
if '#EXT' not in string and 'http' not in string:
lines[index] = durl + ('' if string.startswith('/') else '/') + string
data = '\n'.join(lines)
return [200, "application/vnd.apple.mpegur", data]
def device_id(self):
characters = string.ascii_lowercase + string.digits
random_string = ''.join(random.choices(characters, k=32))
return random_string
def gethost(self):
headers = {
'User-Agent': 'okhttp/4.9.2',
'Connection': 'Keep-Alive',
}
response = self.fetch('https://app-site.ecoliving168.com/domain_v5.json', headers=headers).json()
url = response['api_service'].replace('/api/', '')
return url
def header(self):
headers = {
'User-Agent': 'Android',
'Accept': 'application/prs.55App.v2+json',
'timestamp': self.t,
'x-client-setting': '{"pure-mode":1}',
'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}',
'x-client-version': '3096 '
}
return headers
def url(self, id=None):
if not id:
id = {}
id["timestamp"] = self.t
public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB'
encrypted_text = json.dumps(id)
public_key = RSA.import_key(b64decode(public_key))
cipher = PKCS1_v1_5.new(public_key)
encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8'))
encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8')
result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '')
key = '635a580fcb5dc6e60caa39c31a7bde48'
sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest()
return result, sign
def playlist(self, body):
try:
bba = self.url(body)
url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}'
data = self.fetch(url, headers=self.header()).json()['data']
return self.playeach(data)
except Exception:
return []
def playeach(self,data):
play_urls = []
for it in data:
if re.search(r"mp4|m3u8", it["play_url"]):
play_urls.append(f"{it['episode_name']}${it['play_url']}")
else:
play_urls.append(
f"{it['episode_name']}${it['from_code']}|||{it['play_url']}|||{it['episode_id']}"
)
return '#'.join(play_urls)
def voides(self, item):
if item['name'] or item['title']:
voide = {
"vod_id": item.get('id') or item.get('click'),
'vod_name': item.get('name') or item.get('title'),
'vod_pic': item.get('cover') or item.get('image'),
'vod_year': item.get('year') or item.get('label'),
'vod_remarks': item.get('dynamic') or item.get('sub_title')
}
return voide
def aes(self, text):
text = text.replace('-', '+').replace('_', '/') + '=='
key = b"e6d5de5fcc51f53d"
iv = b"2f13eef7dfc6c613"
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8")
return json.loads(pt)
-210
View File
@@ -1,210 +0,0 @@
# -*- coding: utf-8 -*-
# by @嗷呜
import json
import sys
import threading
import uuid
import requests
sys.path.append('..')
from base.spider import Spider
import time
from Crypto.Hash import MD5, SHA1
class Spider(Spider):
def init(self, extend=""):
if extend:
hosts=json.loads(extend)['site']
self.host = self.host_late(hosts)
pass
def getName(self):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
def homeContent(self, filter):
cdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/get/filer/type", headers=self.getheaders()).json()
fdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/v1/get/filer/list", headers=self.getheaders()).json()
result = {}
classes = []
filters={}
for k in cdata['data']:
classes.append({
'type_name': k['typeName'],
'type_id': str(k['typeId']),
})
sort_values = [{"n": "最近更新", "v": "2"},{"n": "人气高低", "v": "3"}, {"n": "评分高低", "v": "4"}]
for tid, d in fdata['data'].items():
current_sort_values = sort_values.copy()
if tid == '1':
del current_sort_values[0]
filters[tid] = [
{"key": "type", "name": "类型",
"value": [{"n": i["itemText"], "v": i["itemValue"]} for i in d["typeList"]]},
*([] if not d["plotList"] else [{"key": "v_class", "name": "剧情",
"value": [{"n": i["itemText"], "v": i["itemText"]}
for i in d["plotList"]]}]),
{"key": "area", "name": "地区",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["districtList"]]},
{"key": "year", "name": "年份",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["yearList"]]},
{"key": "lang", "name": "语言",
"value": [{"n": i["itemText"], "v": i["itemText"]} for i in d["languageList"]]},
{"key": "sort", "name": "排序", "value": current_sort_values}
]
result['class'] = classes
result['filters'] = filters
return result
def homeVideoContent(self):
data1 = self.fetch(f"{self.host}/api/mw-movie/anonymous/v1/home/all/list", headers=self.getheaders()).json()
data2=self.fetch(f"{self.host}/api/mw-movie/anonymous/home/hotSearch",headers=self.getheaders()).json()
data=[]
for i in data1['data'].values():
data.extend(i['list'])
data.extend(data2['data'])
vods=self.getvod(data)
return {'list':vods}
def categoryContent(self, tid, pg, filter, extend):
params = {
"area": extend.get('area', ''),
"filterStatus": "1",
"lang": extend.get('lang', ''),
"pageNum": pg,
"pageSize": "30",
"sort": extend.get('sort', '1'),
"sortBy": "1",
"type": extend.get('type', ''),
"type1": tid,
"v_class": extend.get('v_class', ''),
"year": extend.get('year', '')
}
data = self.fetch(f"{self.host}/api/mw-movie/anonymous/video/list?{self.js(params)}", headers=self.getheaders(params)).json()
result = {}
result['list'] = self.getvod(data['data']['list'])
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
data=self.fetch(f"{self.host}/api/mw-movie/anonymous/video/detail?id={ids[0]}",headers=self.getheaders({'id':ids[0]})).json()
vod=self.getvod([data['data']])[0]
vod['vod_play_from']='嗷呜有金牌'
vod['vod_play_url'] = '#'.join(
f"{i['name'] if len(vod['episodelist']) > 1 else vod['vod_name']}${ids[0]}@@{i['nid']}" for i in
vod['episodelist'])
vod.pop('episodelist', None)
return {'list':[vod]}
def searchContent(self, key, quick, pg="1"):
params = {
"keyword": key,
"pageNum": pg,
"pageSize": "8",
"sourceCode": "1"
}
data=self.fetch(f"{self.host}/api/mw-movie/anonymous/video/searchByWord?{self.js(params)}",headers=self.getheaders(params)).json()
vods=self.getvod(data['data']['result']['list'])
return {'list':vods,'page':pg}
def playerContent(self, flag, id, vipFlags):
self.header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'DNT': '1',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'Origin': self.host,
'Referer': f'{self.host}/'
}
ids=id.split('@@')
pdata = self.fetch(f"{self.host}/api/mw-movie/anonymous/v2/video/episode/url?clientType=1&id={ids[0]}&nid={ids[1]}",headers=self.getheaders({'clientType':'1','id': ids[0], 'nid': ids[1]})).json()
vlist=[]
for i in pdata['data']['list']:vlist.extend([i['resolutionName'],i['url']])
return {'parse':0,'url':vlist,'header':self.header}
def localProxy(self, param):
pass
def host_late(self, url_list):
if isinstance(url_list, str):
urls = [u.strip() for u in url_list.split(',')]
else:
urls = url_list
if len(urls) <= 1:
return urls[0] if urls else ''
results = {}
threads = []
def test_host(url):
try:
start_time = time.time()
response = requests.head(url, timeout=1.0, allow_redirects=False)
delay = (time.time() - start_time) * 1000
results[url] = delay
except Exception as e:
results[url] = float('inf')
for url in urls:
t = threading.Thread(target=test_host, args=(url,))
threads.append(t)
t.start()
for t in threads:
t.join()
return min(results.items(), key=lambda x: x[1])[0]
def md5(self, sign_key):
md5_hash = MD5.new()
md5_hash.update(sign_key.encode('utf-8'))
md5_result = md5_hash.hexdigest()
return md5_result
def js(self, param):
return '&'.join(f"{k}={v}" for k, v in param.items())
def getheaders(self, param=None):
if param is None:param = {}
t=str(int(time.time()*1000))
param['key']='cb808529bae6b6be45ecfab29a4889bc'
param['t']=t
sha1_hash = SHA1.new()
sha1_hash.update(self.md5(self.js(param)).encode('utf-8'))
sign = sha1_hash.hexdigest()
deviceid = str(uuid.uuid4())
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36',
'Accept': 'application/json, text/plain, */*',
'sign': sign,
't': t,
'deviceid':deviceid
}
return headers
def convert_field_name(self, field):
field = field.lower()
if field.startswith('vod') and len(field) > 3:
field = field.replace('vod', 'vod_')
if field.startswith('type') and len(field) > 4:
field = field.replace('type', 'type_')
return field
def getvod(self, array):
return [{self.convert_field_name(k): v for k, v in item.items()} for item in array]
Binary file not shown.
Binary file not shown.
File renamed without changes.
File renamed without changes.
-743
View File
@@ -1,743 +0,0 @@
// 地址发布页 https://subaibai.vip/
// 搜索数字验证
var rule = {
title: '素白白',
// host:'https://www.subaibaiys.com',
host: 'https://subaibai.vip',
hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值
// url:'/fyclass/page/fypage',
url: '/fyclassfyfilter',
filterable: 1, //是否启用分类筛选,
filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage',
filter: {
"movie_bt": [{
"key": "cateId",
"name": "分类",
"value": [{
"n": "全部",
"v": ""
}, {
"v": "/movie_bt_series/dongmanju",
"n": "动漫剧"
}, {
"v": "/movie_bt_series/dongmandy",
"n": "动漫电影"
}, {
"v": "/movie_bt_series/yindudy",
"n": "印度电影"
}, {
"v": "/movie_bt_series/guochanju",
"n": "国产剧"
}, {
"v": "/movie_bt_series/guochandy",
"n": "国产电影"
}, {
"v": "/movie_bt_series/riju",
"n": "日剧"
}, {
"v": "/movie_bt_series/rihandy",
"n": "日韩电影"
}, {
"v": "/movie_bt_series/oumeiju",
"n": "欧美剧"
}, {
"v": "/movie_bt_series/oumeidy",
"n": "欧美电影"
}, {
"v": "/movie_bt_series/taiju",
"n": "泰剧"
}, {
"v": "/movie_bt_series/thaidy",
"n": "泰国电影"
}, {
"v": "/movie_bt_series/gangju",
"n": "港台剧"
}, {
"v": "/movie_bt_series/gangtaidy",
"n": "港台电影"
}, {
"v": "/movie_bt_series/documentary",
"n": "纪录片"
}, {
"v": "/movie_bt_series/zongyi",
"n": "综艺"
}, {
"v": "/movie_bt_series/hanju",
"n": "韩剧"
}, {
"v": "/movie_bt_series/xianggangdy",
"n": "香港经典电影"
}]
}, {
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"v": "/movie_bt_tags/pop-popular",
"n": "POP流行"
}, {
"v": "/movie_bt_tags/biography",
"n": "传记"
}, {
"v": "/movie_bt_tags/child",
"n": "儿童"
}, {
"v": "/movie_bt_tags/adventure",
"n": "冒险"
}, {
"v": "/movie_bt_tags/plot",
"n": "剧情"
}, {
"v": "/movie_bt_tags/action",
"n": "动作"
}, {
"v": "/movie_bt_tags/anime",
"n": "动漫"
}, {
"v": "/movie_bt_tags/animation",
"n": "动画"
}, {
"v": "/movie_bt_tags/history",
"n": "历史"
}, {
"v": "/movie_bt_tags/costume",
"n": "古装"
}, {
"v": "/movie_bt_tags/antiquity",
"n": "古风"
}, {
"v": "/movie_bt_tags/homosexual",
"n": "同性"
}, {
"v": "/movie_bt_tags/comedy",
"n": "喜剧"
}, {
"v": "/movie_bt_tags/fantasy",
"n": "奇幻"
}, {
"v": "/movie_bt_tags/family",
"n": "家庭"
}, {
"v": "/movie_bt_tags/terror",
"n": "恐怖"
}, {
"v": "/movie_bt_tags/suspense",
"n": "悬疑"
}, {
"v": "/movie_bt_tags/erotic",
"n": "情色"
}, {
"v": "/movie_bt_tags/thriller",
"n": "惊悚"
}, {
"v": "/movie_bt_tags/drama",
"n": "戏曲"
}, {
"v": "/movie_bt_tags/war",
"n": "战争"
}, {
"v": "/movie_bt_tags/latin",
"n": "拉丁"
}, {
"v": "/movie_bt_tags/funny",
"n": "搞笑"
}, {
"v": "/movie_bt_tags/campus",
"n": "校园"
}, {
"v": "/movie_bt_tags/song-and-dance",
"n": "歌舞"
}, {
"v": "/movie_bt_tags/martial-arts",
"n": "武侠"
}, {
"v": "/movie_bt_tags/disaster",
"n": "灾难"
}, {
"v": "/movie_bt_tags/love",
"n": "爱情"
}, {
"v": "/movie_bt_tags/crime",
"n": "犯罪"
}, {
"v": "/movie_bt_tags/fancy",
"n": "玄幻"
}, {
"v": "/movie_bt_tags/reality-show",
"n": "真人秀"
}, {
"v": "/movie_bt_tags/short-film",
"n": "短片"
}, {
"v": "/movie_bt_tags/kehuan",
"n": "科幻"
}, {
"v": "/movie_bt_tags/documentary",
"n": "纪录片"
}, {
"v": "/movie_bt_tags/talkshow",
"n": "脱口秀"
}, {
"v": "/movie_bt_tags/stageart",
"n": "舞台艺术"
}, {
"v": "/movie_bt_tags/west",
"n": "西部"
}, {
"v": "/movie_bt_tags/sport",
"n": "运动"
}, {
"v": "/movie_bt_tags/youth",
"n": "青春"
}, {
"v": "/movie_bt_tags/music",
"n": "音乐"
}, {
"v": "/movie_bt_tags/ghost",
"n": "鬼怪"
}, {
"v": "/movie_bt_tags/black-film",
"n": "黑色电影"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"v": "/movie_bt_cat/bhutan",
"n": "不丹"
}, {
"v": "/movie_bt_cat/china",
"n": "中国"
}, {
"v": "/movie_bt_cat/china-taiwan",
"n": "中国台湾"
}, {
"v": "/movie_bt_cat/china-mainland",
"n": "中国大陆"
}, {
"v": "/movie_bt_cat/china-hongkong",
"n": "中国香港"
}, {
"v": "/movie_bt_cat/denmark",
"n": "丹麦"
}, {
"v": "/movie_bt_cat/ukraine",
"n": "乌克兰"
}, {
"v": "/movie_bt_cat/uruguay",
"n": "乌拉圭"
}, {
"v": "/movie_bt_cat/israel",
"n": "以色列"
}, {
"v": "/movie_bt_cat/iraq",
"n": "伊拉克"
}, {
"v": "/movie_bt_cat/iran",
"n": "伊朗"
}, {
"v": "/movie_bt_cat/russia",
"n": "俄罗斯"
}, {
"v": "/movie_bt_cat/bulgaria",
"n": "保加利亚"
}, {
"v": "/movie_bt_cat/croatia",
"n": "克罗地亚"
}, {
"v": "/movie_bt_cat/iceland",
"n": "冰岛"
}, {
"v": "/movie_bt_cat/canada",
"n": "加拿大"
}, {
"v": "/movie_bt_cat/hungary",
"n": "匈牙利"
}, {
"v": "/movie_bt_cat/south-africa",
"n": "南非"
}, {
"v": "/movie_bt_cat/botswana",
"n": "博茨瓦纳"
}, {
"v": "/movie_bt_cat/qatar",
"n": "卡塔尔"
}, {
"v": "/movie_bt_cat/luxembourg",
"n": "卢森堡"
}, {
"v": "/movie_bt_cat/india",
"n": "印度"
}, {
"v": "/movie_bt_cat/indonesia",
"n": "印度尼西亚"
}, {
"v": "/movie_bt_cat/kazakhstan",
"n": "哈萨克斯坦"
}, {
"v": "/movie_bt_cat/colombia",
"n": "哥伦比亚"
}, {
"v": "/movie_bt_cat/turkey",
"n": "土耳其"
}, {
"v": "/movie_bt_cat/serbia",
"n": "塞尔维亚"
}, {
"v": "/movie_bt_cat/cyprus",
"n": "塞浦路斯"
}, {
"v": "/movie_bt_cat/mexico",
"n": "墨西哥"
}, {
"v": "/movie_bt_cat/dominica",
"n": "多米尼加"
}, {
"v": "/movie_bt_cat/austria",
"n": "奥地利"
}, {
"v": "/movie_bt_cat/venezuela",
"n": "委内瑞拉"
}, {
"v": "/movie_bt_cat/nigeria",
"n": "尼日利亚"
}, {
"v": "/movie_bt_cat/巴基斯坦",
"n": "巴基斯坦"
}, {
"v": "/movie_bt_cat/paraguay",
"n": "巴拉圭"
}, {
"v": "/movie_bt_cat/brazil",
"n": "巴西"
}, {
"v": "/movie_bt_cat/greece",
"n": "希腊"
}, {
"v": "/movie_bt_cat/germany",
"n": "德国"
}, {
"v": "/movie_bt_cat/italy",
"n": "意大利"
}, {
"v": "/movie_bt_cat/latvia",
"n": "拉脱维亚"
}, {
"v": "/movie_bt_cat/norway",
"n": "挪威"
}, {
"v": "/movie_bt_cat/chech",
"n": "捷克"
}, {
"v": "/movie_bt_cat/摩洛哥",
"n": "摩洛哥"
}, {
"v": "/movie_bt_cat/斯洛伐克",
"n": "斯洛伐克"
}, {
"v": "/movie_bt_cat/slovenia",
"n": "斯洛文尼亚"
}, {
"v": "/movie_bt_cat/singapore",
"n": "新加坡"
}, {
"v": "/movie_bt_cat/zealand",
"n": "新西兰"
}, {
"v": "/movie_bt_cat/japan",
"n": "日本"
}, {
"v": "/movie_bt_cat/chile",
"n": "智利"
}, {
"v": "/movie_bt_cat/north-korea",
"n": "朝鲜"
}, {
"v": "/movie_bt_cat/cambodia",
"n": "柬埔寨"
}, {
"v": "/movie_bt_cat/georgia",
"n": "格鲁吉亚"
}, {
"v": "/movie_bt_cat/belgium",
"n": "比利时"
}, {
"v": "/movie_bt_cat/saudi-arabia",
"n": "沙特阿拉伯"
}, {
"v": "/movie_bt_cat/france",
"n": "法国"
}, {
"v": "/movie_bt_cat/poland",
"n": "波兰"
}, {
"v": "/movie_bt_cat/puertorco",
"n": "波多黎各"
}, {
"v": "/movie_bt_cat/bohei",
"n": "波黑"
}, {
"v": "/movie_bt_cat/thailand",
"n": "泰国"
}, {
"v": "/movie_bt_cat/australia",
"n": "澳大利亚"
}, {
"v": "/movie_bt_cat/ireland",
"n": "爱尔兰"
}, {
"v": "/movie_bt_cat/estonia",
"n": "爱沙尼亚"
}, {
"v": "/movie_bt_cat/sweden",
"n": "瑞典"
}, {
"v": "/movie_bt_cat/switzerland",
"n": "瑞士"
}, {
"v": "/movie_bt_cat/belarus",
"n": "白俄罗斯"
}, {
"v": "/movie_bt_cat/peru",
"n": "秘鲁"
}, {
"v": "/movie_bt_cat/tunisia",
"n": "突尼斯"
}, {
"v": "/movie_bt_cat/lithuania",
"n": "立陶宛"
}, {
"v": "/movie_bt_cat/romania",
"n": "罗马尼亚"
}, {
"v": "/movie_bt_cat/america",
"n": "美国"
}, {
"v": "/movie_bt_cat/finland",
"n": "芬兰"
}, {
"v": "/movie_bt_cat/sovietunion",
"n": "苏联"
}, {
"v": "/movie_bt_cat/england",
"n": "英国"
}, {
"v": "/movie_bt_cat/netherlands",
"n": "荷兰"
}, {
"v": "/movie_bt_cat/philippines",
"n": "菲律宾"
}, {
"v": "/movie_bt_cat/葡萄牙",
"n": "葡萄牙"
}, {
"v": "/movie_bt_cat/west-germany",
"n": "西德"
}, {
"v": "/movie_bt_cat/spain",
"n": "西班牙"
}, {
"v": "/movie_bt_cat/vietnam",
"n": "越南"
}, {
"v": "/movie_bt_cat/argentina",
"n": "阿根廷"
}, {
"v": "/movie_bt_cat/korea",
"n": "韩国"
}, {
"v": "/movie_bt_cat/malaysia",
"n": "马来西亚"
}, {
"v": "/movie_bt_cat/马耳他",
"n": "马耳他"
}]
}, {
"key": "year",
"name": "年份",
"value": [{
"n": "全部",
"v": ""
}, {
"v": "/year/2024",
"n": "2024"
}, {
"v": "/year/2023",
"n": "2023"
}, {
"v": "/year/2022",
"n": "2022"
}, {
"v": "/year/2021",
"n": "2021"
}, {
"v": "/year/2020",
"n": "2020"
}, {
"v": "/year/2019",
"n": "2019"
}, {
"v": "/year/2018",
"n": "2018"
}, {
"v": "/year/2017",
"n": "2017"
}, {
"v": "/year/2016",
"n": "2016"
}, {
"v": "/year/2015",
"n": "2015"
}, {
"v": "/year/2014",
"n": "2014"
}, {
"v": "/year/2013",
"n": "2013"
}, {
"v": "/year/2012",
"n": "2012"
}, {
"v": "/year/2011",
"n": "2011"
}, {
"v": "/year/2010",
"n": "2010"
}, {
"v": "/year/2009",
"n": "2009"
}, {
"v": "/year/2008",
"n": "2008"
}, {
"v": "/year/2007",
"n": "2007"
}, {
"v": "/year/2006",
"n": "2006"
}, {
"v": "/year/2005",
"n": "2005"
}, {
"v": "/year/2004",
"n": "2004"
}, {
"v": "/year/2003",
"n": "2003"
}, {
"v": "/year/2002",
"n": "2002"
}, {
"v": "/year/2001",
"n": "2001"
}, {
"v": "/year/2000",
"n": "2000"
}, {
"v": "/year/1999",
"n": "1999"
}, {
"v": "/year/1998",
"n": "1998"
}, {
"v": "/year/1997",
"n": "1997"
}, {
"v": "/year/1996",
"n": "1996"
}, {
"v": "/year/1995",
"n": "1995"
}, {
"v": "/year/1994",
"n": "1994"
}, {
"v": "/year/1993",
"n": "1993"
}, {
"v": "/year/1992",
"n": "1992"
}, {
"v": "/year/1991",
"n": "1991"
}, {
"v": "/year/1990",
"n": "1990"
}, {
"v": "/year/1989",
"n": "1989"
}, {
"v": "/year/1988",
"n": "1988"
}, {
"v": "/year/1987",
"n": "1987"
}, {
"v": "/year/1986",
"n": "1986"
}, {
"v": "/year/1985",
"n": "1985"
}, {
"v": "/year/1984",
"n": "1984"
}, {
"v": "/year/1983",
"n": "1983"
}, {
"v": "/year/1982",
"n": "1982"
}, {
"v": "/year/1981",
"n": "1981"
}, {
"v": "/year/1980",
"n": "1980"
}, {
"v": "/year/1979",
"n": "1979"
}, {
"v": "/year/1978",
"n": "1978"
}, {
"v": "/year/1977",
"n": "1977"
}, {
"v": "/year/1976",
"n": "1976"
}, {
"v": "/year/1975",
"n": "1975"
}, {
"v": "/year/1974",
"n": "1974"
}, {
"v": "/year/1973",
"n": "1973"
}, {
"v": "/year/1972",
"n": "1972"
}, {
"v": "/year/1971",
"n": "1971"
}, {
"v": "/year/1970",
"n": "1970"
}, {
"v": "/year/1969",
"n": "1969"
}, {
"v": "/year/1968",
"n": "1968"
}, {
"v": "/year/1967",
"n": "1967"
}, {
"v": "/year/1966",
"n": "1966"
}, {
"v": "/year/1965",
"n": "1965"
}, {
"v": "/year/1964",
"n": "1964"
}, {
"v": "/year/1963",
"n": "1963"
}, {
"v": "/year/1962",
"n": "1962"
}, {
"v": "/year/1960",
"n": "1960"
}, {
"v": "/year/1959",
"n": "1959"
}, {
"v": "/year/1954",
"n": "1954"
}, {
"v": "/year/1952",
"n": "1952"
}, {
"v": "/year/1950",
"n": "1950"
}, {
"v": "/year/1949",
"n": "1949"
}, {
"v": "/year/1948",
"n": "1948"
}, {
"v": "/year/1940",
"n": "1940"
}, {
"v": "/year/1939",
"n": "1939"
}, {
"v": "/year/1925",
"n": "1925"
}]
}]
},
// searchUrl:'/search?q=**',
searchUrl: '/search?q=**',
searchable: 2, //是否启用全局搜索,
quickSearch: 0, //是否启用快速搜索,
headers: {
'User-Agent': 'UC_UA',
},
class_parse: '.navlist&&li;a&&Text;a&&href;.*/([^/]+)',
play_parse: true,
// lazy:'',
lazy: `js:
pdfh = jsp.pdfh;
var html = request(input);
var ohtml = pdfh(html, '.videoplay&&Html');
var url = pdfh(ohtml, "body&&iframe&&src");
if (/Cloud/.test(url)) {
var ifrwy = request(url);
let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join('');
let temp = '';
for (let i = 0x0; i < code.length; i = i + 0x2) {
temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10))
}
input = {
jx: 0,
url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7),
parse: 0
}
} else if (/decrypted/.test(ohtml)) {
var phtml = pdfh(ohtml, "body&&script:not([src])&&Html");
eval(getCryptoJS());
var scrpt = phtml.match(/var.*?\\)\\);/g)[0];
var data = [];
eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = '));
input = {
jx: 0,
url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1],
parse: 0
}
} else {
input
}
`,
limit: 6,
推荐: '.leibox&&li;*;*;*;*',
// double:true, // 推荐内容是否双层定位
一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href',
二级: {
"title": "h1&&Text;.moviedteail_list&&li:eq(0)&&Text",
"img": ".dyimg&&img&&src",
"desc": ".moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text",
"content": ".yp_context&&p&&Text",
"tabs": ".mi_paly_box .ypxingq_t--span",
"lists": ".paly_list_btn:eq(#id) a"
},
搜索: '.search_list&&li;img&&alt;img&&data-original;.nostag&&Text;a&&href',
}
File renamed without changes.
File renamed without changes.
+1458
View File
File diff suppressed because it is too large. Load diff
+26
View File
@@ -0,0 +1,26 @@
{
"SiteUrl": "https://pan1.me",
"Classes": [
{
"type_name": "电影",
"type_id": "2"
},
{
"type_name": "剧集",
"type_id": "48"
},
{
"type_name": "4K原盘",
"type_id": "56"
},
{
"type_name": "综艺",
"type_id": "52"
},
{
"type_name": "动漫",
"type_id": "37"
}
],
"Cookie": "bbs_sid=rrru52bda4v655kl9u1c87f00m; bbs_token=dZRAvHbHcUZkuJ7oHALqWoUs00C1fGqqXDXH7I8LH6hMddXP"
}
-41
View File
@@ -1,41 +0,0 @@
{
"作者":"天天开心",
"站名":"骚火影视",
"主页url":"https://saohuo.vip/",
"简介":"+<p class=\"p_txt show_part\"&&</p>",
"导演":"</h1><p>* / 导演:&& /",
"主演":"主演:&&</p>",
"影片地区":"</h1><p>&& / ",
"影片年代":"<p>* / && /",
"影片状态":"v_note\">&&</div>",
"搜索url":"/search.php?searchword={wd}",
"线路二次截取":"<ul class=\"from_list\">&&</ul>",
"线路数组":"<li&&/li>",
"线路标题":"+>&&<[替换:1号线路>>骚火专线#2线路>>骚火备用]",
"跳转播放链接":"<iframe*src=\"&&\"",
"二次跳转播放链接":"https://hhjx.hhplayer.com/api.php;post;url=+var url*\"&&\"+&t=+var t*\"&&\"+&key=+var key*\"&&\"+&act=0+&play=1",
"三次跳转播放链接":"\"url\"*\"&&\"",
"嗅探词":".m3u8#.mp4#.m3u8?#freeok.mp4",
"分类url":"https://saohuo.vip/list/{cateId}-{catePg}.html[https://saohuo.vip/list/{cateId}.html];;kdvr1au0",
//"分类url":"https://saohuo.vip/search.php?page={catePg}&searchtype=5&order={by}&tid={cateId};;akd",
"分类":"电影$1#电视剧$2#韩剧$22#美剧$22#综艺$3#动漫$4"}
File diff suppressed because it is too large. Load diff
+1457
View File
File diff suppressed because it is too large. Load diff
+1703
View File
File diff suppressed because it is too large. Load diff
+81
View File
@@ -0,0 +1,81 @@
{
"规则名": "八号影视",
"规则作者": "",
"请求头参数": "User-Agent$手机#accept$text/html",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "0",
"首页推荐链接": "http://www.bahaotv.com",
"首页列表数组规则": "body&&.show-vod-list",
"首页片单列表数组规则": ".myui-vodbox-content",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "http://www.bahaotv.com/vodshow/{cateId}--------{catePg}---.html",
"分类名称": "电影&电视剧&动漫",
"分类名称替换词": "movie&tvseries&anime",
"筛选数据": {},
//"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "",
"筛选子分类替换词": "",
//{class}
"筛选类型名称": "",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "时间&人气&评分",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": ".show-vod-list&&.myui-vodbox-content",
"分类片单是否Jsoup写法": "1",
"分类片单标题": ".title&&Text",
"分类片单链接": "a&&href",
"分类片单图片": "img&&src",
"分类片单副标题": ".right&&Text",
"分类片单链接加前缀": "http://www.bahaotv.com",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$手机#accept$text/html",
"搜索链接": "http://www.bahaotv.com/vodsearch/-------------.html?wd={wd}",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": ".show-vod-list&&.myui-vodbox-content",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "img&&src",
"搜索片单标题": ".title&&Text",
"搜索片单链接": "a&&href",
"搜索片单副标题": ".right&&Text",
"搜索片单链接加前缀": "http://www.bahaotv.com",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "https://live.52sf.ga/huya/",
"直接播放链接加后缀": "#isVideo=true#",
"直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
"详情是否Jsoup写法": "1",
"类型详情": "",
"年代详情": "",
"地区详情": "",
"演员详情": ".detail-box&&.director,1&&Text!主演:",
"简介详情": ".intro&&Text",
"线路列表数组规则": ".nav-btn&&li",
"线路标题": "Text",
"播放列表数组规则": "body&&[id^=playlist]",
"选集列表数组规则": "a",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "http://www.bahaotv.com",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
"手动嗅探视频链接过滤词": ".html#=http"
}
+8
View File
@@ -0,0 +1,8 @@
{
"简介": "tt\" style=*>&&</div>",
"数组": "<a&&module-item-pic",
"副标题": "module-item-text\">&&</div>",
"搜索url": "https://xiuer.pro/vod/search/?wd={wd}",
"分类url": "https://xiuer.pro/show/{cateId}/area/{area}/class/{class}/page/{catePg}/year/{year}/",
"分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi"
}
-17
View File
@@ -1,17 +0,0 @@
{
"作者":"天天开心",
"站名":"茶狐杯",
"主页url":"https://www.5jcd.com/",
"简介":"+col-pd\">&&</p>",
"线路数组":"<h3&&</h3>",
"线路标题":"+>&&",
"分类url":"https://www.5jcd.com/show_/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html;;ax",
"分类":"电影$1#电视剧$2#综艺$3#动漫$4"}
+81
View File
@@ -0,0 +1,81 @@
{
"规则名": "骚火电影VIP",
"规则作者": "",
"请求头参数": "User-Agent$MOBILE_UA#Referer$https://saohuo.tv",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "0",
"首页推荐链接": "https://saohuo.tv/",
"首页列表数组规则": "body&&.v_list",
"首页片单列表数组规则": "li",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "https://saohuo.tv/list/{cateId}-{catePg}.html[firstPage=https://saohuo.tv/list/{cateId}.html]",
"分类名称": "电影&电视剧&动漫",
"分类名称替换词": "1&2&13",
"筛选数据": {},
//"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "",
"筛选子分类替换词": "",
//{class}
"筛选类型名称": "",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "时间&人气&评分",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": ".v_list&&li",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "a&&title",
"分类片单链接": "a&&href",
"分类片单图片": "img&&data-original",
"分类片单副标题": ".v_note&&Text",
"分类片单链接加前缀": "https://saohuo.tv",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$手机#Accept$text/html",
"搜索链接": "https://saohuo.tv/s-{wd}---------{SearchPg}.html",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": ".v_list&&li",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "img&&data-original",
"搜索片单标题": "a&&title",
"搜索片单链接": "a&&href",
"搜索片单副标题": ".v_note&&Text",
"搜索片单链接加前缀": "https://saohuo.tv",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "",
"直接播放链接加后缀": "",
"直接播放直链视频请求头": "",
"详情是否Jsoup写法": "1",
"类型详情": "",
"年代详情": "",
"地区详情": "",
"演员详情": "",
"简介详情": ".p_txt&&Text",
"线路列表数组规则": ".from_list&&li",
"线路标题": "Text",
"播放列表数组规则": ".play_list&&li",
"选集列表数组规则": "a",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "1",
"选集链接加前缀": "https://saohuo.tv",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
"手动嗅探视频链接过滤词": ".html#=http"
}
BIN
View File
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
adgHZD4T/7tWFulh0C127b9BxztLdgaMQTADJnxZKZbY3ckvairRpCHy4DPsalkJ9gSwgZCDLdy4KBeQLIkceHOCS3Mu2XUxmJoneDAGC0e0spaKT/5U94AdpsDRBWWNtIcqbBwDbaTbLNnjlCBq0AYJceS9Kjm06ECDMd2dGe/KW3J76qu/DmsPuAmnVKn8Q3uSL2uhtsTuukMiEo0/mpxwlwSnuzKnZZhEaplyj5eo4iB7gcnPUzFi8YAQxziTD0MQZYk4vAaV2bpzUMIYXCtb+643J0JYn3In71iBNnncqF4a7tVaO+sj1rAtYwtAHZfyVKRmK8VrIKRxMCT1g9GQ7XF7oxsC/nimhCSWy3Rd8AU91E7hWaFxFAteN7X3+eht6q6fIrpb0tmUHyAR3x5GpES0mSs21xmQk1WhDRwEJLdU/RHyODDhgR+fxALd5sa42IJG6GKMWUKaYBUcANzDdDrQle256UEeh1w9zN0AWQys2rlp5OTk+1yqtlR0/+yV/N+cKaC8G1IkBFEedcAdKlDMvSsxH2xzKuIfpdur1vc8gL72/5YLQt6lR4HRkcbFUjY7tHNY/VVAMkDzMVP4PHdq+kdXT7RpHOEwEukvaG/tsf8EaVKk83LikN98Xpa/HzRuTv4xmFvfb5bKCTHL+T9523/6tvUQaQ+mNyAA=
File diff suppressed because it is too large. Load diff
+1848 -1802
View File
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
+12 -1
View File
@@ -61,9 +61,20 @@
"filterable": 0,
"ext": "./json/wogg.json?moyuer"
},
{
"key": "yt",
"name": "🌀风中知秋┃4K纯净",
"playerType": 1,
"type": 3,
"api": "csp_AppYsV2Guard",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": " http://110.42.45.218:8818/api.php/app/"
},
{
"key": "移动",
"name": "🍥移动急速┃4K纯净",
"name": "🌀移动急速┃4K纯净",
"type": 3,
"api": "csp_YD",
"searchable": 1,
+68 -68
View File
@@ -38,7 +38,7 @@
},
{
"key": "豆瓣1",
"name": "📢【公众号欧歌APP网络收集】请勿演示贩卖,即将关闭公告❤更新:3/31❤",
"name": "📢【公众号欧歌APP网络收集】请勿演示贩卖,即将关闭公告❤更新:4/3❤",
"type": 3,
"api": "csp_Notice",
"searchable": 0,
@@ -132,12 +132,10 @@
{
"key": "荐片",
"name": "💡荐片|影视",
"type": 3,
"api": "csp_Jianpian",
"type": 3,
"playerType": 1,
"searchable": 1,
"quickSearch": 1,
"filterable": 1
"ext": "http://api2.rinhome.com"
},
{
"key": "巧技",
@@ -181,14 +179,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "光速",
"name": "💡光速|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
},
{
"key": "雨滴",
"name": "💡雨滴|影视",
@@ -249,16 +239,6 @@
"filterable": 0,
"ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCocKbwqTCpMKgw6zCrcKpwqjDs8KXwqnCo8KUw7LDocObw6bDo8KWwpTCn8Kdw5rDnMOow6fDm8KgwpVeZsKxwqHDocOywrRkYGZnwrHCosOdwrLDp2XCmsKjYsKywqvDssKxwqzCm2ZfwpzCssOgwrLDm8OyZWPCmmLDqMKlw6rCssOrYsKUwqnCnsOaw6DDo8Ocw57CosKdwpHCmcOnw6HDm8Omw59hwqTCqMKkwqDCn8KawqDDjcKcwqTClcKFw6vDn8KhwrPCmlpXXFDCoMK8w6jDosOuworCn8KiwpTCoMKtwprCoMOjwqHCmcKkwobCqsKkwrPCoMKmU1fCpMKZw6nCmsK0wpnCocKO5Ya16YSY5o+V5ZGcwp/lh6bkvpDlkbFt5b6h6Ke26LW05ryJ562Mw5fCoMKmU1dxwpXDrMK+w5/DssKhbVBXwpvCssOiwq3DqcKswpZowpJnw6bCpsO0wqnDqWtXXFDCoMK0w5/DrMODwqlXalDCoMOewrPDqMKtwqNiwpNow5vCqsOnwqzDtGPCn2hXwqXCk8Khw53Dn8KWwqLCqcKgw63CvsOfw7LCoW1QV8Knw67DrMOjwq/CsGlXwq0="
},
{
"key": "洽洽影视",
"name": "💡洽洽|影视",
"type": 3,
"api": "csp_AppGZ",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw5rDqsKcXmnCk8Oew5bCscKyw55hwpPCn8KdwqDCn8KawqDDrsKcwqBXasKZwprDleWHvumFouaPmOWQk1zlhpzkvpDlkarCtOW/quipgOi1t+a7gOesicKNwqDCn8KawqDDnsKYwpPCosKpw6nDp8OFw57Ds1pqUFfDsMOow7PDosKwaWZXwq0="
},
{
"key": "爱看机器人",
"name": "💡爱看|影视",
@@ -295,25 +275,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "瓜子影视",
"name": "💡瓜子|影视",
"type": 3,
"api": "csp_Gz360",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "金牌影视",
"name": "💡金牌|影视",
"type": 3,
"api": "csp_WebJP",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw7DDscKqXsKbwqPDp8Ohw6LDm8OkYcKTwp/CncKgwp/CmsKgw67CnMKgV2rCmcKaw5Xlh77phaLmj5jlkJNc5Yac5L6Q5ZGqwrTlv6roqYDotbfmu4DnrInCjcKgwp/CmsKgw57CmMKTwqLCqcOpw6fDhcOew7NaalBXw7DDqMOzw6LCsGlmV8Kt"
},
{
"key": "耐看影视123",
"name": "💡耐看|影视",
@@ -337,7 +298,7 @@
"key": "预告",
"name": "💡新片|预告",
"type": 3,
"api": "csp_YGP",
"api": "csp_DouBan",
"searchable": 0
},
{
@@ -386,27 +347,25 @@
},
{
"key": "厂长影视",
"name": "💘厂长|弹幕",
"name": "💡厂长|影视",
"type": 3,
"api": "csp_WebCzApp",
"playerType": "2",
"api": "csp_Czsapp",
"searchable": 1,
"quickSearch": 1,
"filterable": 0,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDscKqwqdewpPDs8KjwqvCp8OwwpzCoFdcwpnCmsONw57Dm8KlwpPCmMKFw6vDn8KhwrPCmlrCmMKkwqTDqcOmwrTCqMKpwpbCqsKqwqnCp8Onw6nDqcKpwpfCkcKfwqnDqMOhw6HDo8OjwpjCm8KfwqPDocOcw5zDrsOtwpvCmcKpwp/DrsOVw6PDp8OhWlxQV8OMw5zDrsOew4/CpcKccsKRw6TCmsK0wpnCocKbwqTCpMKgw6zCrcKpwqjDscKqwqdewpPDs8Otw7PDr8OjwpfClcKfXsOcw6LDp8KgwqZTV8KkwpnDqcKawrTCmcKhwo7lhrXphJjmj5XlkZzCn+WHpuS+kOWRsW3lvqHop7botbTmvInnrYzDl8KgwqZTV8KUwpXDnMOlw7PDqcOufsKVwqlXwrPCk8Khw7DDr8KswplmZsKvwprDtw=="
"filterable": 1,
"ext": "http://www.czzyvideo.com"
},
{
"key": "糯米影视",
"name": "💘糯米|弹幕",
"name": "💡糯米┃影视",
"type": 3,
"api": "csp_WebNM",
"searchable": 1,
"quickSearch": 1,
"filterable": 0,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw7DDscKawqpewpPDp8KawqbCmcKhwqfCmcKgV8KzwpPCocOU5Ye/6YSb5o+V5ZCTXOWHpeS+iuWRscKz5b+r6Ke56LW05ruA56yJw5bCmsKmwpnCocKXwpXCk8Kiw7LDo8Ouw4TDn8KsV2pQwqDDqsOvw7LDo2lmZlfDtg=="
"api": "csp_Wwys",
"ext": "https://www.wwgz.cn"
},
{
"key": "热播影视",
"name": "💘热播|弹幕",
"name": "💡热播|影视",
"type": 3,
"api": "csp_AppRJ",
"searchable": 1,
@@ -415,7 +374,7 @@
},
{
"key": "天天影视",
"name": "💘天天|弹幕",
"name": "💡天天|影视",
"type": 3,
"api": "csp_AppRJ",
"searchable": 1,
@@ -425,7 +384,7 @@
},
{
"key": "浪酷影视",
"name": "💘浪酷|弹幕",
"name": "💡浪酷|影视",
"type": 3,
"api": "csp_AppRJ",
"searchable": 1,
@@ -435,25 +394,16 @@
},
{
"key": "耐看影视",
"name": "💘耐看|弹幕",
"name": "💡耐看|影视",
"type": 3,
"api": "csp_WebNK",
"searchable": 0,
"changeable": 0,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw7DDscKqXsKewpvDncOpw57Cp8OnwphXXFDCoMOnw6PDqcKhbVBXwovlh77phZvmkJ/lkZzCpuWGn+S9h+WQp2rlv6roqLnotr7mvInnrZPCkFdcUMKgw5fDn8Ocw6zCrMKgwqR7w57DrMKhwrPCmlrCp8KlwqnDosKpwrDCr8KhwrA="
},
{
"key": "来看影视",
"name": "💘来看|弹幕",
"type": 3,
"api": "csp_WebLK",
"searchable": 0,
"changeable": 0,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw6XDpcKpwp/ClF7DpsOYwqHCpcKaWsKkwpnCoMKgwq3CmsKgw5XlhrjphJjmj5XlkJPCpeWHn+S+keWRsMK05b6k6Ke26LW05ruA562Sw5DCocKlwppawpTClcKTw6vDrMOqw63DhcKYwqlXasKZwprDscOuw7PCnGZmZsKgw7A="
},
{
"key": "一起影视",
"name": "💘一起|弹幕",
"name": "💡一起|影视",
"type": 3,
"api": "csp_AppFree4K",
"searchable": 1,
@@ -461,6 +411,56 @@
"filterable": 0,
"ext": "w7TCmsONw6LDrsKYwoXCosKcwqDCrcKawqDDosKnwqTCoMKjwrPCosKpw5rDqsKjwpPCncKjwqfDmcOsw57Dn8KbwpRewqbDosOjwqHCpcKaWnvClcKpwqDCrcKawqDDnMKYZWNkwrHDl8Ogw5vCqsKWY8KTYsKxwqbCocKlwppaecKmV8KzwpPCocKuw6BoZGRpw53Dl8Krwq3CrWRjYmHCsMKawqbCmcKhdcKRwp7Cm8OHw5TDsMKgwrRTV+ecpOaTncKgwp/CmsKgw4rClMKiwqPClcOOw6XDpsKgwrRTV8KYwqTDrcOjw63Cs8KpYsKRwqDCoMOvwqTCqMOfw6zCmMKVwpjClMKnw6nDo8OpwqnCncKjwp/CnsKnw6PDosOpwrnCqMKiwpxtwqDCn8KawqDCvsKUwp59wqXDjsOlw6bCoMK0U1fCmMKkw63Do8OtwrPCqWLClMKdXsOvw5zDnsOzwqjClMKjwpnCkcKow5fDp8Okw69ib8KRwpPCtsOXw6fCn8OuwqLCm8KVwp7CtsOEw4PDhcK8dnh6dsOMwr/DkcOPw4B4e8KCVsOuw6XDpsK2wqFfUFfClMOew5bDrMOyw6rCp3vClcKpwqDCrcKawqDDscKowqnCmWbCr8KpwqHDtg=="
},
{
"key": "私人影视",
"name": "💡私人|影视",
"type": 3,
"api": "csp_Siren"
},
{
"key": "云播影视",
"name": "💡云播|影视",
"type": 3,
"api": "csp_Tvyb"
},
{
"key": "奇优影视",
"name": "💡奇优|影视",
"type": 3,
"api": "csp_Qiyou"
},
{
"key": "苹果影视",
"name": "💡苹果|影视",
"type": 3,
"api": "csp_LiteApple",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "全网影视",
"name": "💡全看|影视",
"type": 3,
"api": "csp_Quanwk",
"ext": "https://www.91qkw.com"
},
{
"key": "火火影视",
"name": "💡火火|影视",
"type": 3,
"api": "csp_SaoHuo",
"playerType": 2,
"ext": "https://shdy5.us"
},
{
"key": "光速",
"name": "💡光速|影视",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
},
{
"key": "csp_XYQHiker_农民影视",
"name": "🧿农民|影视",
@@ -1033,7 +1033,7 @@
},
{
"key": "欧uc",
"name": "❤欧uc|4K弹幕",
"name": "❤欧歌|uc4K弹幕",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
+247 -252
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

+185 -219
View File
@@ -66,46 +66,38 @@
"ext": "http://v.lkuys.cn"
},
{
"key": "追剧弹幕",
"name": "追剧|弹幕",
"key": "腾讯视频",
"name": "腾讯|视频",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/追剧弹幕.js"
"ext": "./js/腾讯视频.js"
},
{
"key": "腾讯弹幕",
"name": "腾讯|弹幕",
"key": "优酷视频",
"name": "优酷|视频",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/腾讯弹幕.js"
"ext": "./js/优酷视频.js"
},
{
"key": "优酷弹幕",
"name": "优酷|弹幕",
"key": "芒果视频",
"name": "芒果|视频",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/优酷弹幕.js"
"ext": "./js/芒果视频.js"
},
{
"key": "芒果弹幕",
"name": "芒果|弹幕",
"key": "爱奇艺",
"name": "爱奇艺|视频",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/芒果弹幕.js"
},
{
"key": "爱奇艺弹幕",
"name": "爱奇艺|弹幕",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/爱奇艺弹幕.js"
"ext": "./js/爱奇艺.js"
},
{
"key": "三六零",
"name": "三六零|弹幕",
"name": "三六零|视频",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/三六零弹幕.js"
"api": "csp_SP360"
},
{
"key": "哔哩合集",
@@ -126,68 +118,17 @@
}
},
{
"key": "阿里云盘",
"name": "阿里|云盘",
"key": "西瓜视频",
"name": "西瓜|视频",
"type": 3,
"api": "csp_PanAli",
"searchable": 0,
"api": "csp_AmuXiguaV2",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": "./json/aliShare.json"
},
{
"key": "夸克云盘",
"name": "夸克|云盘",
"type": 3,
"api": "csp_PanQuark",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": "./json/quarkShare.json"
},
{
"key": "UC",
"name": "UC|云盘",
"type": 3,
"api": "csp_PanUc",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": "./json/ucShare.json"
},
{
"key": "百度云盘",
"name": "百度|云盘",
"type": 3,
"api": "csp_PanBaiDu",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
"key": "短剧合集",
"name": "短剧|合集",
"type": 3,
"api": "./js/quark.min.js",
"ext": "./js/短剧合集.js",
"style": {
"type": "list"
"type": "rect",
"ratio": 1.597
}
},
{
@@ -351,13 +292,13 @@
"filterable": 1,
"changeable": 1,
"style": {
"type": "rect",
"type": "list",
"ratio": 1.433
},
"ext": "./json/lj.json?"
},
{
"key": "概念",
"key": "海绵",
"name": "海绵|4K",
"type": 3,
"api": "csp_PanWebShareCloudHM",
@@ -366,7 +307,7 @@
"filterable": 1,
"changeable": 1,
"style": {
"type": "rect",
"type": "list",
"ratio": 1.433
},
"ext": "./json/hm.json?"
@@ -381,7 +322,7 @@
"filterable": 1,
"changeable": 1,
"style": {
"type": "rect",
"type": "list",
"ratio": 1.433
},
"ext": "./json/pan1.json?"
@@ -547,7 +488,7 @@
"type": 3,
"api": "csp_Muou",
"playerType": 2,
"ext": "caHR0cDovLzExMC40MC42NC4yMjU6ODk0NXxHOGt6QjF2WHdRcDlaN21GfEc4a3pCMXZYd1FwOVo3bUZ8MTAw"
"ext": "caHR0cHM6Ly9yeHlzeXlkcy5vc3MtY24tY2hlbmdkdS5hbGl5dW5jcy5jb20vZ2V0YXBwLnR4dHxlYmFkM2YxYTU4YjEzOTMzfGViYWQzZjFhNThiMTM5MzN8MTAw"
},
{
"key": "星河",
@@ -555,7 +496,15 @@
"type": 3,
"api": "csp_Muou",
"playerType": 2,
"ext": "caHR0cDovL2EubXVxaXhoLnRvcDo1NjIzfOW5leWQr+aYn+ays3w0LjEuOA=="
"ext": "caHR0cDovL3Rlbmd4dW55dW5hbGl5dW4ub3NzLWNuLXNoYW5naGFpLmFsaXl1bmNzLmNvbS90ZW5neHVueXVuLnR4dHxmNWUydHg1M3lrcDZzMmM5fGY1ZTJ0eDUzeWtwNnMyYzl8MzYx"
},
{
"key": "油条",
"name": "油条|APP",
"type": 3,
"api": "csp_Muou",
"playerType": 2,
"ext": "caHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
},
{
"key": "二三",
@@ -566,12 +515,68 @@
"ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44"
},
{
"key": "油条",
"name": "油条|APP",
"key": "主角",
"name": "主角|APP",
"type": 3,
"api": "csp_Muou",
"api": "csp_Xdai",
"playerType": 2,
"ext": "caHR0cDovLzU5LjE1My4xNjcuMTM3Ojg4OTl8NGQ4M2I4N2M0YzVlYTExMXw0ZDgzYjg3YzRjNWVhMTExfDQ2Mg=="
"ext": "caHR0cHM6Ly9kdHltLnpqeXkuY2MvZ2ctZ2V0YXBwL2dldC1nZy50eHR8UE1LYVprQXY0UXA1M0VXbnxQTUthWmtBdjRRcDUzRVdufDQyNQ=="
},
{
"key": "时常",
"name": "时常|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cDovLzExMS4xODAuMTk4LjQwOjExMTB8YXNnY3hoamt0czEyNDU3M3xhc2djeGhqa3RzMTI0NTczfDEwMQ=="
},
{
"key": "雨滴",
"name": "雨滴|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly95ZHlzZHluYW1pY2RvbWFpbm5hbWUuNjguZ3k6MTA2NzgvYzltMmpzMjk4eDgyaDYvbDltOGJ4MjNqMm8ycDlxL2R5bmFtaWNkb21haW5uYW1lLnR4dHxrOW8zcDJjOGI3bTN6MG84fGs5bzNwMmM4YjdtM3owbzh8MTAw"
},
{
"key": "现代",
"name": "现代|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "caHR0cHM6Ly9jbXMud2xiYnEueHl6fHNkZXYxNXJ3c2E5NmZzZGV8c2RldjE1cndzYTk2ZnNkZXwzMDA="
},
{
"key": "淘气",
"name": "淘气|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9za2FwLm9zcy1jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20vZ2V0LnR4dHw0OTkwNDg4MjQ4OTA0ODg0fDQ5OTA0ODgyNDg5MDQ4ODR8MTA3"
},
{
"key": "玉米",
"name": "玉米|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly93d3cuempjLmFwcC98YWI0ZTlhNDIxNjc1ZjE0YnxhYjRlOWE0MjE2NzVmMTRifDQ0Mg=="
},
{
"key": "优质",
"name": "优质|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9sYnlzYXBpZHR5bWd4LjY4Lmd5OjE2Nzg5L2xieXNhcGlkdHltL2FwcC50eHR8YXBpYXBwbGJ5c2tleTE2OHxhcGlhcHBsYnlza2V5MTY4fDEwNw=="
},
{
"key": "木叶",
"name": "木叶|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 2,
"ext": "saHR0cDovLzExMy40NS4yNDMuMjMzL211eWUudHh0fFJ1TjlMUnZ3VFJncFFucEt8UnVOOUxSdndUUmdwUW5wS3w1NDc="
},
{
"key": "龙虾",
@@ -619,7 +624,15 @@
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cDovLzExMS4xODAuMTk4LjQwOjExMTB8NDk0ODA4MDgwbGdneXNjb3w0OTQ4MDgwODBsZ2d5c2NvfDY2Ng=="
"ext": "jaHR0cDovLzU5LjE1My4xNjcuMTg2OjEwMDk5fFBNS2Faa0F2NFFwNTNFV258UE1LYVprQXY0UXA1M0VXbnw0MjU="
},
{
"key": "电影",
"name": "电影|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9jOHcyb3Y3dTV3ZzJ6MW84cDIxYy5hbGl5dW5jcy5jbGljazoyNzg5OXxrOW8zcDJjOGI3bTN6MG84fGs5bzNwMmM4YjdtM3owbzh8MTAw"
},
{
"key": "奇妙",
@@ -629,54 +642,6 @@
"playerType": 1,
"ext": "jaHR0cDovLzE1NC4xMi45MS4yMTE6NjY4fDEyMzQ1Njc4OUFCQ0RFRkd8MTIzNDU2Nzg5QUJDREVGR3wxMDY="
},
{
"key": "时常",
"name": "时常|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9zYzEwODAudG9wfGU1OWQ0NGIyZWVmMDNiYTJ8ZTU5ZDQ0YjJlZWYwM2JhMnwxMzQ="
},
{
"key": "雨滴",
"name": "雨滴|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly95ZHlzZHluYW1pY2RvbWFpbm5hbWUuNjguZ3k6MTA2NzgvYzltMmpzMjk4eDgyaDYvbDltOGJ4MjNqMm8ycDlxL2R5bmFtaWNkb21haW5uYW1lLnR4dHxrOW8zcDJjOGI3bTN6MG84fGs5bzNwMmM4YjdtM3owbzh8MTAw"
},
{
"key": "现代",
"name": "现代|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "caHR0cHM6Ly94ZHlzLnZpcC9nZXRhcHAudHh0fHN6ZGp3ZGFwcHdjbm1kaGJ8c3pkandkYXBwd2NubWRoYnwxMTQ="
},
{
"key": "玉米",
"name": "玉米|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly93d3cuempjLmFwcC98YWI0ZTlhNDIxNjc1ZjE0YnxhYjRlOWE0MjE2NzVmMTRifDQ0Mg=="
},
{
"key": "优质",
"name": "优质|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 1,
"ext": "jaHR0cHM6Ly9keXl6dHZhcHBhcGlnb29kZ3guNjguZ3k6MTI2ODkvY2l3azI4dnUzOGlvOC9hcGl1cmwudHh0fGR5eXp0dmFwaWFwcHl5ZHN8ZHl5enR2YXBpYXBweXlkc3wxMDA="
},
{
"key": "木叶",
"name": "木叶|APP",
"type": 3,
"api": "csp_Xdai",
"playerType": 2,
"ext": "saHR0cDovLzExMy40NS4yNDMuMjMzL211eWUudHh0fFJ1TjlMUnZ3VFJncFFucEt8UnVOOUxSdndUUmdwUW5wS3w1NDc="
},
{
"key": "格格",
"name": "格格|APP",
@@ -814,7 +779,8 @@
"type": 3,
"api": "csp_Wetv",
"searchable": 1,
"quickSearch": 1
"quickSearch": 1,
"ext": "https://v.wetv.wang"
},
{
"key": "低端影视",
@@ -861,20 +827,6 @@
"quickSearch": 1,
"filterable": 1
},
{
"key": "西瓜视频",
"name": "西瓜|视频",
"type": 3,
"api": "csp_AmuXiguaV2",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "采集之王",
"name": "采集|合集",
@@ -886,7 +838,7 @@
"key": "爱看机器人",
"name": "爱看|影视",
"type": 3,
"api": "csp_IkanBot",
"api": "csp_Ikanbot",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
@@ -997,6 +949,13 @@
"api": "./js/drpy2.min.js",
"ext": "./js/思古影视.js"
},
{
"key": "追剧影视",
"name": "追剧|影视",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/追剧视频.js"
},
{
"key": "魔力高清",
"name": "魔力|影视",
@@ -1729,68 +1688,58 @@
"filterable": 1
},
{
"key": "我的阿里",
"name": "我的|阿里",
"key": "阿里云盘",
"name": "阿里|云盘",
"type": 3,
"api": "csp_MyAli",
"api": "csp_PanAli",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"indexs": 0,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt"
},
"style": {
"type": "list"
}
},
{
"key": "我的夸克",
"name": "我的|夸克",
"type": 3,
"api": "csp_MyQuark",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"indexs": 0,
"ext": {
"cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt"
},
"style": {
"type": "list"
}
},
{
"key": "我的UC",
"name": "我的|UC",
"type": 3,
"api": "csp_MyUc",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"indexs": 0,
"ext": {
"uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt"
},
"style": {
"type": "list"
}
},
{
"key": "阿里合集",
"name": "阿里|合集",
"type": 3,
"api": "csp_AliShare",
"searchable": 1,
"changeable": 0,
"filterable": 0,
"indexs": 0,
"ext": {
"token": "http://127.0.0.1:9978/file/TVBox/token.txt",
"share": "./js/alishare.txt"
},
"style": {
"type": "list"
"type": "list",
"ratio": 1.433
},
"ext": "./json/aliShare.json"
},
{
"key": "夸克云盘",
"name": "夸克|云盘",
"type": 3,
"api": "csp_PanQuark",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": "./json/quarkShare.json"
},
{
"key": "UC",
"name": "UC|云盘",
"type": 3,
"api": "csp_PanUc",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": "./json/ucShare.json"
},
{
"key": "百度云盘",
"name": "百度|云盘",
"type": 3,
"api": "csp_PanBaiDu",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
@@ -1816,13 +1765,6 @@
},
"ext": "./json/alist.json"
},
{
"key": "网络直播",
"name": "网络|直播",
"type": 3,
"api": "csp_Living",
"searchable": 1
},
{
"key": "88看球",
"name": "88|看球",
@@ -2208,6 +2150,30 @@
"playerType": 2,
"timeout": 10
},
{
"name": "虎牙一起看",
"type": 3,
"api": "csp_Feiyang",
"url": "https://9877.kstore.space/Live/huyayqk.m3u",
"timeout": 10,
"ua": "okhttp/3.15"
},
{
"name": "斗鱼一起看",
"type": 3,
"api": "csp_Feiyang",
"url": "https://9877.kstore.space/Live/douyuyqk.m3u",
"timeout": 10,
"ua": "okhttp/3.15"
},
{
"name": "YY轮播",
"type": 3,
"api": "csp_Feiyang",
"url": "https://9877.kstore.space/Live/yylunbo.m3u",
"timeout": 10,
"ua": "okhttp/3.15"
},
{
"name": "电视Live",
"type": 0,
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
-126
View File
@@ -202,48 +202,6 @@
],
"key": "area"
},
{
"name": "语言",
"value": [
{
"v": "国语",
"n": "国语"
},
{
"v": "英语",
"n": "英语"
},
{
"v": "粤语",
"n": "粤语"
},
{
"v": "闽南语",
"n": "闽南语"
},
{
"v": "韩语",
"n": "韩语"
},
{
"v": "日语",
"n": "日语"
},
{
"v": "法语",
"n": "法语"
},
{
"v": "德语",
"n": "德语"
},
{
"v": "其它",
"n": "其它"
}
],
"key": "lang"
},
{
"name": "时间",
"value": [
@@ -604,48 +562,6 @@
],
"key": "area"
},
{
"name": "语言",
"value": [
{
"v": "国语",
"n": "国语"
},
{
"v": "英语",
"n": "英语"
},
{
"v": "粤语",
"n": "粤语"
},
{
"v": "闽南语",
"n": "闽南语"
},
{
"v": "韩语",
"n": "韩语"
},
{
"v": "日语",
"n": "日语"
},
{
"v": "法语",
"n": "法语"
},
{
"v": "德语",
"n": "德语"
},
{
"v": "其它",
"n": "其它"
}
],
"key": "lang"
},
{
"name": "时间",
"value": [
@@ -998,48 +914,6 @@
],
"key": "area"
},
{
"name": "语言",
"value": [
{
"v": "国语",
"n": "国语"
},
{
"v": "英语",
"n": "英语"
},
{
"v": "粤语",
"n": "粤语"
},
{
"v": "闽南语",
"n": "闽南语"
},
{
"v": "韩语",
"n": "韩语"
},
{
"v": "日语",
"n": "日语"
},
{
"v": "法语",
"n": "法语"
},
{
"v": "德语",
"n": "德语"
},
{
"v": "其它",
"n": "其它"
}
],
"key": "lang"
},
{
"name": "时间",
"value": [
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+44 -23
View File
@@ -4,7 +4,7 @@
"sites": [
{
"key": "豆",
"name": "Fix优汐原【神秘的哥哥们】",
"name": "【神秘的哥哥们】",
"type": 3,
"api": "csp_DouDouGuard",
"indexs": 1,
@@ -77,7 +77,7 @@
"name": "☀原创┃不卡",
"type": 3,
"api": "csp_YCyzGuard",
"timeout": 15,
"timeout": 10,
"playerType": 1,
"searchable": 1,
"quickSearch": 1,
@@ -88,6 +88,7 @@
"name": "🍎苹果┃不卡",
"type": 3,
"api": "csp_LiteAppleGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -97,6 +98,7 @@
"name": "🍓糯米┃秒播",
"type": 3,
"api": "csp_NmyswvGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -106,6 +108,7 @@
"name": "🐟白白┃秒播",
"type": 3,
"api": "csp_SbaibaiGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -116,6 +119,7 @@
"name": "🐻小熊┃秒播",
"type": 3,
"api": "csp_AppSKGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 0,
"changeable": 0,
@@ -126,6 +130,7 @@
"name": "🌟立播┃秒播",
"type": 3,
"api": "csp_LibvioGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
@@ -139,7 +144,7 @@
"name": "🍊在线┃秒播",
"type": 3,
"api": "csp_ZxzjGuard",
"timeout": 15,
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
@@ -147,19 +152,21 @@
},
{
"key": "溢彩",
"name": "💡溢彩┃秒播",
"name": "💡流光┃秒播",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOX1voDIQhH8epBwpmIsuS/sSCZ0NTplTombcqjS1xHcE9fpWUjrfFiL+kMh4cw4jGBLJBFjnM="
"ext": "rfOb1uAWbkRHp7hdxprG9un3+T/f19e82TUvZMviAElDfhsS/jcju7U0fe1MnN1h63CTaYIPjmEw9C0qVsgBO8um85+eGlSkG/r2q6m0DA=="
},
{
"key": "比特",
"name": "🍄比特┃秒播",
"name": "🍄比特┃手机",
"type": 3,
"api": "csp_BttwooGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -169,6 +176,7 @@
"name": "⏮️低端┃外剧",
"type": 3,
"api": "csp_DdrkGuard",
"timeout": 10,
"playerType": "2",
"searchable": 1,
"quickSearch": 1,
@@ -179,6 +187,7 @@
"name": "👀萌米┃多线",
"type": 3,
"api": "csp_AppTTGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -190,6 +199,7 @@
"name": "🍊水星┃多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
@@ -197,19 +207,21 @@
},
{
"key": "火星",
"name": "🌞火星┃多线",
"name": "🌞星空┃多线",
"type": 3,
"api": "csp_AppSxGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
"ext": "rfOX1voDIQhH8epBwpmIsuSlujLK3srq3iIoaYP8Hh5fZE0d4nF48/dsb7YNi44z/yjNcsFajjBz6XJtDuw2FdqR/a6UV3ywWevO"
"ext": "rfOb1uAWbkRHp7hdxprGv+T3+2qcnI67lW1iKsuzUE0beEMA/nE2s7EhOq5X1M8s5yK9aPYa5Fgv9l9CG+gdBtq3uqM="
},
{
"key": "热播",
"name": "📺热播┃多线",
"type": 3,
"api": "csp_AppTTGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -221,6 +233,7 @@
"name": "👓欢视┃多线",
"type": 3,
"api": "csp_AppTTGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -232,6 +245,7 @@
"name": "💮文采┃秒播",
"type": 3,
"api": "csp_JpysGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -242,6 +256,7 @@
"name": "📔厂长┃不卡",
"type": 3,
"api": "csp_NewCzGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -253,7 +268,7 @@
"name": "🏝奥特┃多线",
"type": 3,
"api": "csp_AueteGuard",
"timeout": 15,
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1,
@@ -264,6 +279,7 @@
"name": "🐭荐片┃P2P",
"type": 3,
"api": "csp_JPJGuard",
"timeout": 10,
"playerType": 2,
"searchable": 1,
"quickSearch": 1,
@@ -274,6 +290,7 @@
"name": "🧲新6V┃磁力",
"type": 3,
"api": "csp_SixVGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
@@ -284,6 +301,7 @@
"name": "🚌巴士┃动漫",
"type": 3,
"api": "csp_Dm84Guard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -293,6 +311,7 @@
"name": "🎀异界┃动漫",
"type": 3,
"api": "csp_YsjGuard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -302,6 +321,7 @@
"name": "🐾日本┃动漫",
"type": 3,
"api": "csp_Anime1Guard",
"timeout": 10,
"searchable": 1,
"quickSearch": 1,
"changeable": 1
@@ -311,6 +331,7 @@
"name": "⚽926┃看球",
"type": 3,
"api": "csp_kanqiu926Guard",
"timeout": 10,
"searchable": 0,
"changeable": 0,
"style": {
@@ -322,6 +343,7 @@
"name": "⚽88┃看球",
"type": 3,
"api": "csp_Sir88Guard",
"timeout": 10,
"searchable": 0,
"changeable": 0,
"style": {
@@ -333,6 +355,7 @@
"name": "⚽看球┃直播",
"type": 3,
"api": "csp_KanqiuGuard",
"timeout": 10,
"searchable": 0,
"changeable": 0,
"style": {
@@ -348,6 +371,7 @@
"style": {
"type": "list"
},
"timeout": 10,
"searchable": 0,
"quickSearch": 0,
"changeable": 0
@@ -362,6 +386,7 @@
"type": "rect",
"ratio": 1.597
},
"timeout": 10,
"searchable": 0,
"quickSearch": 0,
"changeable": 0
@@ -379,7 +404,7 @@
"quickSearch": 0,
"changeable": 0,
"ext": {
"json": "./json/MTV.json"
"json": "https://im.feelec.com.cn/res/file.html?id=2c9a91099584ed490195f7bf50ac60b9"
}
},
{
@@ -392,6 +417,7 @@
"type": "rect",
"ratio": 1.755
},
"timeout": 10,
"playerType": "2",
"searchable": 0,
"quickSearch": 0,
@@ -407,6 +433,7 @@
"type": "rect",
"ratio": 1.755
},
"timeout": 10,
"playerType": "2",
"searchable": 0,
"quickSearch": 0,
@@ -422,6 +449,7 @@
"type": "rect",
"ratio": 1
},
"timeout": 10,
"searchable": 0,
"quickSearch": 0,
"changeable": 0
@@ -439,19 +467,6 @@
"ratio": 3.8
}
},
{
"key": "PanSso",
"name": "🐌盘他┃三盘",
"type": 3,
"api": "csp_PanSsoGuard",
"searchable": 1,
"quickSearch": 1,
"changeable": 0,
"ext": {
"Cloud-drive": "tvfan/Cloud-drive.txt",
"from": "4k|auto"
}
},
{
"key": "YpanSo",
"name": "🐟盘她┃三盘",
@@ -683,6 +698,12 @@
],
"logo": "https://s1.imagehub.cc/images/2025/01/15/e8b21391c58ed454c13ade26c003e857.gif",
"lives": [
{
"name": "牛播一(仅新版影视仓┃ok影视)",
"type": 0,
"url": "http://127.0.0.1:9978/proxy?do=饭太硬&type=liveList",
"epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"
},
{
"name": "V4聚合(卡顿请按左┃右键换线)",
"type": 0,
+1 -1
View File
@@ -1,7 +1,7 @@
var rule = {
title:'有声小说吧',
编码:'gb18030',
host:'http://m.ysxs8.vip',
host:'http://m.ysxs8.top',
url:'/downlist/fyclass_fypage.html',
searchUrl:'/search.asp?page=fypage&searchword=**&searchtype=-1',
searchable:2,
-1
View File
@@ -1 +0,0 @@
{"class":[{"type_name":"登陆配置","type_id":"peizhi"},{"type_name":"MV","type_id":"MV"},{"type_name":"抖音音乐","type_id":"抖音音乐MV"},{"type_name":"快手音乐","type_id":"快手音乐MV"},{"type_name":"酷狗音乐","type_id":"酷狗音乐MV"},{"type_name":"酷我音乐","type_id":"酷我音乐MV"},{"type_name":"QQ音乐","type_id":"QQ音乐MV"},{"type_name":"无损音乐","type_id":"无损音乐"},{"type_name":"助眠曲","type_id":"助眠曲MV"},{"type_name":"钢琴曲","type_id":"钢琴曲MV"},{"type_name":"舞曲","type_id":"舞曲超清"},{"type_name":"卡点","type_id":"影视卡点超清"},{"type_name":"时光音乐会","type_id":"时光音乐会MV"},{"type_name":"好声音","type_id":"中国好声音MV"},{"type_name":"粤语","type_id":"粤语MV"},{"type_name":"2023年热榜","type_id":"2023年热门MV"},{"type_name":"KTV热门","type_id":"KTV热门MV"},{"type_name":"滚石经典","type_id":"滚石MV"},{"type_name":"经典老歌","type_id":"经典老歌"},{"type_name":"古风MV","type_id":"古风MV"},{"type_name":"闽南语MV","type_id":"闽南语MV"},{"type_name":"印度歌舞","type_id":"印度歌舞MV"},{"type_name":"网红翻唱","type_id":"网红翻唱MV"},{"type_name":"韩国女团","type_id":"韩国女团MV"},{"type_name":"A阿黛尔","type_id":"阿黛尔MV"},{"type_name":"Blackpink","type_id":"blackpinkMV"},{"type_name":"Beyond","type_id":"beyondMV"},{"type_name":"B坂井泉水","type_id":"坂井泉水MV"},{"type_name":"B宝丽金","type_id":"宝丽金MV"},{"type_name":"B布兰妮","type_id":"布兰妮MV"},{"type_name":"C程响","type_id":"程响MV"},{"type_name":"C陈晓竹","type_id":"陈晓竹MV"},{"type_name":"C崔健","type_id":"崔健MV"},{"type_name":"C蔡依林","type_id":"蔡依林MV"},{"type_name":"C草蜢","type_id":"草蜢MV"},{"type_name":"Coldplay","type_id":"coldplayMV"},{"type_name":"C陈慧娴","type_id":"陈慧娴MV"},{"type_name":"C陈百强","type_id":"陈百强MV"},{"type_name":"C陈淑桦","type_id":"陈淑桦MV"},{"type_name":"C陈瑞","type_id":"陈瑞MV"},{"type_name":"C陈慧琳","type_id":"陈慧琳MV"},{"type_name":"D邓丽君","type_id":"邓丽君MV"},{"type_name":"D邓紫棋","type_id":"邓紫棋MV"},{"type_name":"D刀郎","type_id":"刀郎MV"},{"type_name":"D达明一派","type_id":"刘以达MV"},{"type_name":"F费玉清","type_id":"费玉清MV"},{"type_name":"F飞图","type_id":"飞图MV"},{"type_name":"G谷村新司","type_id":"谷村新司MV"},{"type_name":"G郭富城","type_id":"郭富城MV"},{"type_name":"G关淑怡","type_id":"关淑怡MV"},{"type_name":"H黄凯芹","type_id":"黄凯芹MV"},{"type_name":"J降央卓玛","type_id":"降央卓玛MV"},{"type_name":"J江慧","type_id":"江慧MV"},{"type_name":"J吉永小百合","type_id":"吉永小百合MV"},{"type_name":"J金庸","type_id":"金庸影视MV"},{"type_name":"K柯以敏","type_id":"柯以敏MV"},{"type_name":"K邝美云","type_id":"邝美云MV"},{"type_name":"L刘惜君","type_id":"刘惜君MV"},{"type_name":"L梁雁翎","type_id":"梁雁翎MV"},{"type_name":"L刘德华","type_id":"刘德华MV"},{"type_name":"Lady Gaga","type_id":"Lady GagaMV"},{"type_name":"L龙飘飘","type_id":"龙飘飘MV"},{"type_name":"L李贞贤","type_id":"李贞贤MV"},{"type_name":"L李秀英","type_id":"李秀英MV"},{"type_name":"L罗大佑","type_id":"罗大佑MV"},{"type_name":"L林志炫","type_id":"林志炫MV"},{"type_name":"L林忆莲","type_id":"林忆莲MV"},{"type_name":"L李知恩","type_id":"李知恩MV"},{"type_name":"L梁静茹","type_id":"梁静茹MV"},{"type_name":"L冷漠","type_id":"冷漠MV"},{"type_name":"L李克勤","type_id":"李克勤MV"},{"type_name":"L林子祥","type_id":"林子祥MV"},{"type_name":"L黎明","type_id":"黎明MV"},{"type_name":"L刘若英","type_id":"刘若英MV"},{"type_name":"M莫文蔚","type_id":"莫文蔚MV"},{"type_name":"M孟庭苇","type_id":"孟庭苇MV"},{"type_name":"M麦当娜","type_id":"麦当娜MV"},{"type_name":"M迈克杰克逊","type_id":"迈克杰克逊MV"},{"type_name":"N雅尼紫禁城","type_id":"雅尼紫禁城MV"},{"type_name":"P潘越云","type_id":"潘越云MV"},{"type_name":"P潘美辰","type_id":"潘美辰MV"},{"type_name":"Q齐秦","type_id":"齐秦MV"},{"type_name":"R任贤齐","type_id":"任贤齐MV"},{"type_name":"S苏慧伦","type_id":"苏慧伦MV"},{"type_name":"T童安格","type_id":"童安格MV"},{"type_name":"TFBOYS","type_id":"TFBOYSMV"},{"type_name":"T太极乐队","type_id":"太极乐队MV"},{"type_name":"T唐朝摇滚","type_id":"唐朝摇滚MV"},{"type_name":"T谭咏麟","type_id":"谭咏麟MV"},{"type_name":"W王琪","type_id":"王琪MV"},{"type_name":"W伍珂玥","type_id":"伍珂玥MV"},{"type_name":"W王杰","type_id":"王杰MV"},{"type_name":"W伍佰","type_id":"伍佰MV"},{"type_name":"W温兆伦","type_id":"温兆伦MV"},{"type_name":"W王菲","type_id":"王菲MV"},{"type_name":"X夏婉安","type_id":"夏婉安MV"},{"type_name":"X徐小凤","type_id":"徐小凤MV"},{"type_name":"X席琳迪翁","type_id":"席琳迪Line truncated
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
+1392 -1368
View File
File diff suppressed because it is too large. Load diff
+238 -192
View File
@@ -5,78 +5,125 @@ AMC电影,http://104.244.79.187:5050/litv/4gtv-4gtv017
AXN,http://122.117.71.103:8557/http/61.222.53.250:8081/hls/71/813/ch43.m3u8
BTV卡通,http://113.57.20.158:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV-4K 超高清,http://27.222.3.214/liveali-tp4k.cctv.cn/live/4K10M.stream/playlist.m3u8
CCTV1,http://36.105.100.208:35455/gaoma/cctv1.m3u8
CCTV1,http://115.159.35.169:35455/gaoma/cctv1.m3u8
CCTV10,http://115.159.35.169:35455/gaoma/cctv10.m3u8
CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
CCTV11,http://36.105.100.208:35455/gaoma/cctv11.m3u8
CCTV12,http://112.81.218.254:35455/gaoma/cctv12.m3u8
CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8
CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8
CCTV12,http://115.159.35.169:35455/gaoma/cctv12.m3u8
CCTV13,http://115.159.35.169:35455/gaoma/cctv13.m3u8
CCTV13,http://112.81.218.254:35455/gaoma/cctv13.m3u8
CCTV14,http://115.159.35.169:35455/gaoma/cctv14.m3u8
CCTV14,http://39.77.34.83:35455/gaoma/cctv14.m3u8
CCTV14,http://36.105.100.208:35455/gaoma/cctv14.m3u8
CCTV15,http://36.105.100.208:35455/gaoma/cctv15.m3u8
CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8
CCTV15,http://39.77.34.83:35455/gaoma/cctv15.m3u8
CCTV16,http://115.159.35.169:35455/gaoma/cctv16.m3u8
CCTV17,http://36.105.100.208:35455/gaoma/cctv17.m3u8
CCTV17,http://39.77.34.83:35455/gaoma/cctv17.m3u8
CCTV2,http://36.105.100.208:35455/gaoma/cctv2.m3u8
CCTV16,http://36.105.100.208:35455/gaoma/cctv16.m3u8
CCTV17,http://117.14.55.26:35455/gaoma/cctv17.m3u8
CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8
CCTV3,http://112.81.218.254:35455/gaoma/cctv3.m3u8
CCTV3,http://58.57.40.22:9901/tsfile/live/1002_1.m3u8
CCTV3,http://36.105.100.208:35455/gaoma/cctv3.m3u8
CCTV5,http://115.159.35.169:35455/gaoma/cctv5.m3u8
CCTV5+,http://115.159.35.169:35455/gaoma/cctv5p.m3u8
CCTV5+,http://36.105.100.208:35455/gaoma/cctv5p.m3u8
CCTV4,http://115.159.35.169:35455/gaoma/cctv4k.m3u8
CCTV4,http://115.159.35.169:35455/gaoma/cctv4.m3u8
CCTV5,http://39.77.34.83:35455/gaoma/cctv5.m3u8
CCTV5+,http://117.169.124.46:6410/ysten-businessmobile/live/hdcctv05plus/1.m3u8
CCTV5+,http://112.81.218.254:35455/gaoma/cctv5p.m3u8
CCTV5+,http://39.77.34.83:35455/gaoma/cctv5p.m3u8
CCTV6,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-6/1.m3u8
CCTV6,http://58.57.40.22:9901/tsfile/live/1006_1.m3u8
CCTV6,http://39.134.115.163:8080/PLTV/88888910/224/3221225632/index.m3u8
CCTV6,http://39.134.115.163:8080/PLTV/88888910/224/3221225650/index.m3u8
CCTV6,http://113.140.12.230:8888/newlive/live/hls/7/live.m3u8
CCTV7,http://112.81.218.254:35455/gaoma/cctv7.m3u8
CCTV7,http://36.105.100.208:35455/gaoma/cctv7.m3u8
CCTV6,http://110.53.52.63:8888/newlive/live/hls/8/live.m3u8
CCTV8,http://117.169.124.36:6610/ysten-businessmobile/live/cctv-8/1.m3u8
CCTV9,http://112.81.218.254:35455/gaoma/cctv9.m3u8
CCTV9,http://39.77.34.83:35455/gaoma/cctv9.m3u8
CCTV9,http://39.164.160.249:9901/tsfile/live/0009_1.m3u8
CCTV世界地理,http://111.61.236.247:9081/hls/62/index.m3u8
CCTV世界地理,http://120.76.248.139/live/bfgd/4200000177.m3u8
CCTV世界地理,http://36.129.204.117:9003//hls/78/index.m3u8
CCTV世界地理,http://60.7.56.33:4000/udp/239.253.92.113:8066
CCTV世界地理,http://180.213.174.225:9901/tsfile/live/1051_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV央视台球,http://183.11.239.36:808/hls/73/index.m3u8
CCTV央视台球,http://36.129.204.117:9003//hls/71/index.m3u8
CCTV央视台球,http://183.11.239.36:808/hls/73/index.m3u8
CCTV女性时尚,http://120.76.248.139/live/bfgd/4200000176.m3u8
CCTV女性时尚,http://111.61.236.247:9081/hls/59/index.m3u8
CCTV女性时尚,http://180.213.174.225:9901/tsfile/live/1054_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV少儿,http://123.138.22.30:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV怀旧剧场,http://120.76.248.139/live/bfgd/4200000224.m3u8
CCTV怀旧剧场,http://111.61.236.247:9081/hls/67/index.m3u8
CCTV怀旧剧场,http://121.19.134.200:808/tsfile/live/1035_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV怀旧剧场,http://180.213.174.225:9901/tsfile/live/1049_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV电视指南,http://120.76.248.139/live/bfgd/4200000164.m3u8
CCTV第一剧场,http://60.7.56.33:4000/udp/239.253.93.138:6428
CCTV第一剧场,http://180.213.174.225:9901/tsfile/live/1050_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV第一剧场,http://121.19.134.200:808/tsfile/live/1033_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV第一剧场,http://180.213.174.225:9901/tsfile/live/1048_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV第一剧场,http://60.7.56.33:4000/udp/239.253.93.138:6428
CCTV风云剧场,http://121.19.134.200:808/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0
CCTV风云足球,http://111.61.236.247:9081/hls/58/index.m3u8
CCTV风云足球,http://183.11.239.36:808/hls/133/index.m3u8
CCTV风云足球,http://120.76.248.139/live/bfgd/4200000225.m3u8
CCTV风云足球,http://183.11.239.36:808/hls/11/index.m3u8
CCTV风云足球,http://36.105.100.208:35455/itv/5000000011000031207.m3u8?cdn=bestzb
CCTV风云音乐,http://121.19.134.200:808/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&authid=0
CETV1,http://120.198.95.220:9901/tsfile/live/1039_1.m3u8?key=txiptv
CHC动作电影,http://218.15.183.23:9901/tsfile/live/23039_1.m3u8
CHC动作电影,http://120.238.94.82:9901/tsfile/live/1052_1.m3u8
CHC动作电影,http://119.32.12.17:2901/udp/224.1.100.131:11111
CHC动作电影,http://120.198.95.220:9901/tsfile/live/1038_1.m3u8?key=txiptv
CHC动作电影,http://58.19.38.162:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
CHC华诚影视,http://120.76.248.139/live/bfgd/4200000289.m3u8
CHC家庭影院,http://61.162.52.6:8088/newlive/live/hls/60/live.m3u8
CHC家庭影院,http://110.53.52.63:8888/newlive/live/hls/53/live.m3u8
CHC家庭影院,http://120.198.101.106:9901/tsfile/live/1051_1.m3u8?key=txiptv
CHC家庭影院,http://58.19.38.162:9901/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
CHC影迷电影,http://110.53.52.63:8888/newlive/live/hls/52/live.m3u8
CHC电影,http://180.213.174.225:9901/tsfile/live/1029_1.m3u8?key=txiptv&playlive=1&authid=0
CHC影迷电影,http://58.19.38.162:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
CHC电影,http://218.15.183.23:9901/tsfile/live/23044_1.m3u8
CHC电影,http://183.237.95.108:9901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=0&authid=0
CINEMAX,http://122.117.71.103:8558/http/61.222.53.250:8081/hls/71/813/ch42.m3u8
DogTV,http://180.213.174.225:9901/tsfile/live/1042_1.m3u8?key=txiptv&playlive=1&authid=0
CN卡通,http://50.7.234.10:8278/momo1_twn/playlist.m3u8?ct=19225&tid=MA0A4898983648989836&tsum=bd109117d126916f203880b1f2063d5e
HBO,http://122.117.71.103:8556/http/61.222.53.250:8081/hls/71/813/ch41.m3u8
HBO家庭,http://50.7.234.10:8278/fyi_twn/playlist.m3u8?tid=18186902&ct=17988&&tsum=7a21abab0a5912afb0ebc01db111e59f
IPTV经典电影,http://43.138.0.72:35455/yy/1382754187
KBC,http://119.200.131.11:1935/KBCTV/tv/playlist.m3u8
KCTV,http://119.77.96.184:1935/chn05/chn05/chunklist.m3u8
NewTV东北热剧,http://45.8.113.249:50001/TVOD/2000000003000000051/hnbblive/index.m3u8
NewTV东北热剧,http://39.134.64.87:6610/PLTV/88888888/224/3221225741/index.m3u8?IASHttpSessionId=
NewTV军事评论,http://45.8.113.249:50001/TVOD/2000000003000000022/hnbblive/index.m3u8
NewTV军事评论,http://39.134.64.87:6610/PLTV/88888888/224/3221225668/index.m3u8?IASHttpSessionId=
NewTV军旅剧场,http://45.8.113.249:50001/TVOD/2000000003000000014/hnbblive/index.m3u8
NewTV军旅剧场,http://39.134.64.87:6610/PLTV/88888888/224/3221225676/index.m3u8?IASHttpSessionId=
NewTV农业致富,http://45.8.113.249:50001/TVOD/2000000003000000003/hnbblive/index.m3u8
NewTV农业致富,http://39.134.64.87:6610/PLTV/88888888/224/3221225683/index.m3u8?IASHttpSessionId=
NewTV古装剧场,http://45.8.113.249:50001/TVOD/2000000003000000024/hnbblive/index.m3u8
NewTV哒啵电竞,http://39.134.64.87:6610/PLTV/88888888/224/3221225675/index.m3u8?IASHttpSessionId=
NewTV家庭剧场,http://45.8.113.249:50001/TVOD/2000000003000000012/hnbblive/index.m3u8
NewTV家庭剧场,http://45.8.113.249:50001/TVOD/1000000004000008284/ystenlive/index.m3u8
NewTV家庭剧场,http://39.134.64.87:6610/PLTV/88888888/224/3221225677/index.m3u8?IASHttpSessionId=
NewTV怡伴健康,http://45.8.113.249:50001/TVOD/2000000003000000023/hnbblive/index.m3u8
NewTV怡伴健康,http://45.8.113.249:50001/TVOD/1000000005000266011/ystenlive/index.m3u8
NewTV怡伴健康,http://39.134.64.87:6610/PLTV/88888888/224/3221225673/index.m3u8?IASHttpSessionId=
NewTV惊悚悬疑,http://45.8.113.249:50001/TVOD/2000000003000000015/hnbblive/index.m3u8
NewTV惊悚悬疑,http://45.8.113.249:50001/TVOD/1000000004000024282/ystenlive/index.m3u8
NewTV惊悚悬疑,http://39.134.64.87:6610/PLTV/88888888/224/3221225665/index.m3u8?IASHttpSessionId=
NewTV明星大片,http://45.8.113.249:50001/TVOD/2000000003000000016/hnbblive/index.m3u8
NewTV明星大片,http://39.134.64.87:6610/PLTV/88888888/224/3221225664/index.m3u8?IASHttpSessionId=
NewTV欢乐剧场,http://45.8.113.249:50001/TVOD/2000000003000000050/hnbblive/index.m3u8
NewTV欢乐剧场,http://45.8.113.249:50001/TVOD/1000000005000266012/ystenlive/index.m3u8
NewTV欢乐剧场,http://39.134.64.87:6610/PLTV/88888888/224/3221225742/index.m3u8?IASHttpSessionId=
NewTV武搏世界,http://39.134.64.87:6610/PLTV/88888888/224/3221225680/index.m3u8?IASHttpSessionId=
NewTV潮妈辣婆,http://45.8.113.249:50001/TVOD/2000000003000000018/hnbblive/index.m3u8
NewTV潮妈辣婆,http://39.134.64.87:6610/PLTV/88888888/224/3221225685/index.m3u8?IASHttpSessionId=
NewTV炫舞未来,http://45.8.113.249:50001/TVOD/2000000003000000044/hnbblive/index.m3u8
NewTV炫舞未来,http://45.8.113.249:50001/TVOD/1000000001000000515/ystenlive/index.m3u8
NewTV爱情喜剧,http://45.8.113.249:50001/TVOD/2000000003000000010/hnbblive/index.m3u8
NewTV精品体育,http://39.134.64.87:6610/PLTV/88888888/224/3221225674/index.m3u8?IASHttpSessionId=
NewTV精品大剧,http://45.8.113.249:50001/TVOD/2000000003000000020/hnbblive/index.m3u8
NewTV精品大剧,http://45.8.113.249:50001/TVOD/1000000004000013968/ystenlive/index.m3u8
NewTV精品大剧,http://39.134.64.87:6610/PLTV/88888888/224/3221225670/index.m3u8?IASHttpSessionId=
NewTV精品纪录,http://45.8.113.249:50001/TVOD/1000000004000013730/ystenlive/index.m3u8
NewTV精品纪录,http://39.134.64.87:6610/PLTV/88888888/224/3221225672/index.m3u8?IASHttpSessionId=
NewTV精品萌宠,http://45.8.113.249:50001/TVOD/2000000003000000067/hnbblive/index.m3u8
NewTV精品萌宠,http://45.8.113.249:50001/TVOD/1000000006000032328/ystenlive/index.m3u8
NewTV精品萌宠,http://39.134.64.87:6610/PLTV/88888888/224/3221226505/index.m3u8?IASHttpSessionId=
NewTV超级电影,http://45.8.113.249:50001/TVOD/2000000003000000031/hnbblive/index.m3u8
NewTV超级电影,http://45.8.113.249:50001/TVOD/1000000001000012884/ystenlive/index.m3u8
NewTV超级电影,http://45.8.113.249:50001/TVOD/1000000004000002120/ystenlive/index.m3u8
NewTV超级电视剧,http://45.8.113.249:50001/TVOD/1000000006000268003/ystenlive/index.m3u8
NewTV超级电视剧,http://45.8.113.249:50001/TVOD/2000000003000000032/hnbblive/index.m3u8
NewTV超级电视剧,http://45.8.113.249:50001/TVOD/1000000001000008139/ystenlive/index.m3u8
cctv10,http://61.136.172.236:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0
cctv12,http://61.136.172.236:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0
iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.m3u8
七彩戏剧,http://36.105.100.208:35455/itv/5000000011000031116.m3u8?cdn=bestzb
万州三峡移民,http://123.146.162.24:8013/tslslive/PU2vzMI/hls/live_sd.m3u8
@@ -93,8 +140,8 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
三沙卫视,http://111.160.17.2:59901/tsfile/live/0001_45.m3u8
三沙卫视,http://119.36.148.115:59901/tsfile/live/1009_1.m3u8
三沙卫视,http://61.138.128.226:19901/tsfile/live/1020_1.m3u8
上海东方卫视,http://180.213.174.225:9901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
上海第一财经,http://36.105.100.208:35455/itv/5000000010000027146.m3u8?cdn=bestzb
上海纪实,http://39.134.115.163:8080/PLTV/88888910/224/3221225655/index.m3u8
东南卫视,http://117.169.124.37:6610/ysten-businessmobile/live/dongnanstv/yst.m3u8
东南卫视,http://58.57.40.22:9901/tsfile/live/1037_1.m3u8
东南卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225657/index.m3u8
@@ -104,20 +151,19 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
东方卫视,http://58.57.40.22:9901/tsfile/live/1030_1.m3u8
东方卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225659/index.m3u8
东方卫视,http://112.46.85.60:8009/hls/31/index.m3u8
东方财经,http://124.248.69.76:26781/douyu/9548279
东方财经,http://61.133.118.228:5001/douyu/9548279
东森幼幼,http://122.117.71.103:8515/http/61.222.53.250:8081/hls/63/805/ch09.m3u8
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/803/ch13.m3u8
东森戏剧,http://122.117.71.103:8529/http/61.222.53.250:8081/hls/64/806/ch13.m3u8
中华小当家,http://61.221.215.25:8800/hls/40/index.m3u8
中华美食,http://61.133.118.228:5001/yy/1354930954
中国天气,http://36.105.100.208:35455/itv/5000000005000031974.m3u8?cdn=bestzb
中国教育,http://113.57.20.158:9901/tsfile/live/1018_1.m3u8?key=txiptv&playlive=1&authid=0
乐游,http://36.105.100.208:35455/itv/5000000011000031112.m3u8?cdn=bestzb
乐至综合,http://175.155.106.72:89/live1/live1.m3u8
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd
乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd;http://rmlive.lzxrmtzx.com/live1/live1.m3u8?zsicd
云南卫视,http://39.164.160.249:9901/tsfile/live/0119_1.m3u8
云南卫视,http://58.57.40.22:9901/tsfile/live/1047_1.m3u8
云南卫视,http://110.53.52.63:8888/newlive/live/hls/26/live.m3u8
云南卫视,http://36.32.174.67:60080/newlive/live/hls/45/live.m3u8
云浮综合,http://125.89.163.44:8888/udp/239.77.0.253:5146
伊拉克life,http://195.142.3.105/artidijital_lifetv/lifetv/chunks.m3u8?autoplay=1
伊犁哈萨克,http://110.153.180.106:55555/out_3/index.m3u8
伊犁哈萨克,http://110.153.180.106:55555/out_3/index.m3u8?zxinjd
@@ -128,12 +174,14 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8
伊犁维吾尔,http://110.153.180.106:55555/out_2/index.m3u8?zxinjd
优漫卡通,http://58.221.214.82:9901/tsfile/live/0008_2.m3u8
优漫卡通,http://119.32.12.17:2901/udp/224.1.100.119:11111
优漫卡通,http://123.138.22.30:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
优漫卡通,http://39.134.115.163:8080/PLTV/88888910/224/3221225665/index.m3u8
优漫卡通,http://110.53.218.182:9902/tsfile/live/1006_1.m3u8
优漫卡通,http://36.105.100.208:35455/itv/1000000002000010063.m3u8?cdn=ystenlive
优漫卡通,http://58.221.214.82:9901/tsfile/live/0008_2.m3u8?key=txiptv
佛山公共,http://125.89.163.44:8888/udp/239.253.43.53:5146
佛山影视,http://125.89.163.44:8888/udp/239.253.43.56:5146
佛山综合,http://125.89.163.44:8888/udp/239.253.43.57:5146
佳木斯新闻综合,http://39.134.65.106/PLTV/88888888/224/3221225993/1.m3u8?
俄国NordTV,http://195.142.3.105/artidijital_noratv/noratv/chunks.m3u8?autoplay=1
兵团八师石河子影文体,http://124.88.144.73:1935/live/jjsh/playlist.m3u8?zxinjd
兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8
@@ -143,73 +191,81 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
兵团八师石河子经济生活,http://124.88.144.73:1935/live/dywt/playlist.m3u8?zxinjd
兵团卫视,http://183.11.239.36:808/hls/7/index.m3u8
兵团卫视,http://120.76.248.139/live/bfgd/4200000124.m3u8
兵团卫视,http://218.89.240.144:59901/tsfile/live/0115_1.m3u8
兵团卫视,http://218.13.14.6:60050/tsfile/live/1053_1.m3u8
兵团卫视,http://110.80.17.38:9901/tsfile/live/0015_1.m3u8
内蒙卫视,http://58.220.219.14:9901/tsfile/live/0114_1.m3u8?key=txiptv&playlive=1&authid=0
内蒙古卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225667/index.m3u8
内蒙古卫视,http://110.53.52.63:8888/newlive/live/hls/45/live.m3u8
内蒙古卫视,http://111.61.236.247:9081/hls/48/index.m3u8
内蒙古卫视,http://183.11.239.36:808/hls/60/index.m3u8
内蒙古卫视,http://120.76.248.139/live/bfgd/4200000110.m3u8
农林卫视,http://120.76.248.139/live/bfgd/4200000122.m3u8
农林卫视,http://124.116.183.146:9901/tsfile/live/1004_1.m3u8
农林卫视,http://8.138.7.223/【公众号:榴芒电视】/农林卫视.m3u8
农林卫视,http://112.46.85.60:8009/hls/27/index.m3u8
凉山新闻综合,http://118.122.8.156:11111/lstv1/LSTV1.flv
凤凰卫视,http://221.7.175.154:8445/tsfile/live/1020_1.m3u8
凤凰卫视,http://119.32.12.17:2901/udp/224.1.100.3:11111
凤凰卫视,http://120.198.101.106:9901/tsfile/live/1062_1.m3u8?key=txiptv
刘德华,http://124.248.69.76:26781/huya/11342424
功夫片,http://124.248.69.76:26781/huya/11352941
动漫秀场,http://36.129.204.117:9003//hls/67/index.m3u8
动漫秀场,http://180.213.174.225:9901/tsfile/live/1034_1.m3u8?key=txiptv&playlive=1&authid=0
动漫秀场,http://60.7.56.33:4000/udp/239.253.93.225:6403
动漫秀场,http://60.2.190.206:4000/udp/239.253.93.225:6403
动漫秀场,http://60.29.124.66:6080/hls/62/index.m3u8
动漫秀场,http://120.238.94.10:9901/tsfile/live/1037_1.m3u8
动漫秀场,http://36.105.100.208:35455/itv/5000000011000031113.m3u8?cdn=bestzb
动漫秀场,http://183.237.95.108:9901/tsfile/live/1104_1.m3u8?key=txiptv&playlive=0&authid=0
动漫秀场,http://36.105.100.208:35455/itv/5000000011000031123.m3u8?cdn=bestzb
动物星球,http://61.221.215.25:8800/hls/57/index.m3u8
劲爆体育,http://120.238.94.82:9901/tsfile/live/1086_1.m3u8
劲爆体育,http://150.230.250.89:50001/TVOD/5000000002000029972/bestzb/index.m3u8
劲爆体育,http://146.56.165.66:7788/TVOD/5000000002000029972/bestzb/index.m3u8
劲爆体育,http://119.32.12.17:2901/udp/224.1.100.129:11111
劲爆体育,http://36.105.100.208:35455/itv/5000000002000029972.m3u8?cdn=bestzb
北京中华特产,http://120.76.248.139/live/bfgd/4200000158.m3u8
北京优优宝贝,http://120.76.248.139/live/bfgd/4200000153.m3u8
北京北京纪实科教,http://120.76.248.139/live/bfgd/4200000113.m3u8
北京卫视,http://39.164.160.249:9901/tsfile/live/0122_1.m3u8
北京卫视,http://58.57.40.22:9901/tsfile/live/1032_1.m3u8
北京卫视,http://110.53.52.63:8888/newlive/live/hls/18/live.m3u8
北京卫视,http://36.32.174.67:60080/newlive/live/hls/25/live.m3u8
北京纪实,http://39.134.115.163:8080/PLTV/88888910/224/3221225675/index.m3u8
华数4K,http://36.105.100.208:35455/itv/2000000004000000014.m3u8?cdn=hnbblive
北京四海钓鱼,http://120.76.248.139/live/bfgd/4200000229.m3u8
北京环球旅游,http://120.76.248.139/live/bfgd/4200000147.m3u8
北京生态环境频道,http://120.76.248.139/live/bfgd/4200000149.m3u8
北京纪实科教,http://39.134.65.106/PLTV/88888888/224/3221225670/1.m3u8?
北京车迷频道,http://120.76.248.139/live/bfgd/4200000146.m3u8
南京少儿,http://221.226.51.220:50080/newlive/live/hls/46/live.m3u8
南方卫视,http://182.91.124.224:9901/tsfile/live/1059_1.m3u8?key=txiptv&playlive=0&authid=0
卡酷少儿,http://58.57.40.22:9901/tsfile/live/1060_1.m3u8
卡酷少儿,http://218.13.170.98:9901/tsfile/live/1021_1.m3u8
卡酷少儿,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8
卡酷少儿,http://60.29.124.66:6080/hls/58/index.m3u8
卡酷少儿,http://61.157.139.15:9901/tsfile/live/2418_1.m3u8
卡酷少儿,http://183.66.15.146:60901/tsfile/live/0126_2.m3u8
厦门卫视,http://183.11.239.36:808/hls/17/index.m3u8
厦门卫视,http://110.80.17.38:9901/tsfile/live/0128_1.m3u8
厦门卫视,http://123.132.233.194:352/tsfile/live/0119_1.m3u8
厦门卫视,http://220.161.87.62:8090/hls/0/index.m3u8?zfud
厦门卫视,http://36.105.100.208:35455/itv/1000000005000266006.m3u8?cdn=ystenlive
厦门卫视,http://125.42.150.114:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
双流综合,http://171.221.250.130:18888/27e684978eb642eeb90ab815f6cc51bf/c41893de5e8645b3b43aef1640859b0d.m3u8?zsicd,
双流综合,http://171.221.250.130:18888/27e684978eb642eeb90ab815f6cc51bf/c41893de5e8645b3b43aef1640859b0d.m3u8?zsicd
吉木萨尔综合,http://218.31.201.189:9000/api/material/local/mnt/shiping1/prog_index.m3u8?zxinjd
吉林乡村,http://36.129.204.117:9003//hls/23/index.m3u8
吉林卫视,http://220.164.192.48:50085/tsfile/live/0118_1.m3u8
吉林卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225680/index.m3u8
吉林卫视,http://58.57.40.22:9901/tsfile/live/1050_1.m3u8
吉林卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225680/index.m3u8
吉林卫视,http://110.53.52.63:8888/newlive/live/hls/34/live.m3u8
吉林卫视,http://36.32.174.67:60080/newlive/live/hls/40/live.m3u8
吉林生活,http://36.129.204.117:9003//hls/22/index.m3u8
吉林都市,http://36.129.204.117:9003//hls/20/index.m3u8
周星驰,http://124.248.69.76:26781/huya/11342412
哈哈炫动,http://120.238.94.10:9901/tsfile/live/1037_1.m3u8
哈哈炫动,http://39.134.115.163:8080/PLTV/88888910/224/3221225720/index.m3u8
哈哈炫动,http://58.57.40.22:9901/tsfile/live/1061_1.m3u8
哈哈炫动,http://111.29.9.33:6610/000000001000/5000000011000031123/index.m3u8?channel-id=bestzb&Contentid=5000000011000031123&livemode=1&stbId=3
哈哈炫动,http://39.134.65.106/PLTV/88888888/224/3221225534/1.m3u8?
哈哈炫动,http://61.138.128.226:19901/tsfile/live/1016_1.m3u8
哒啵电竞,http://36.105.100.208:35455/itv/1000000006000032327.m3u8?cdn=ystenlive
哈尔滨新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226093/1.m3u8?
哈尔滨生活,http://39.134.65.106/PLTV/88888888/224/3221226095/1.m3u8?
嘉佳卡通,http://183.11.239.36:808/hls/8/index.m3u8
嘉佳卡通,http://218.89.240.144:59901/tsfile/live/1003_1.m3u8
嘉佳卡通,http://61.157.139.15:9901/tsfile/live/2420_1.m3u8
嘉佳卡通,http://183.11.239.36:808/hls/8/index.m3u8
嘉佳卡通,http://61.138.128.226:19901/tsfile/live/1019_1.m3u8
嘉佳卡通,http://121.33.239.242:9901/tsfile/live/1001_1.m3u8
四川卫视,http://220.164.192.48:50085/tsfile/live/0143_1.m3u8
四川卫视,http://58.57.40.22:9901/tsfile/live/1046_1.m3u8
四川卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225733/index.m3u8
四川卫视,http://110.53.52.63:8888/newlive/live/hls/31/live.m3u8
@@ -217,27 +273,20 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
四川科教,http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8
四川科教,http://8.138.7.223/【公众号:榴芒电视】/四川科教.m3u8
垫江综合,http://123.146.162.24:8013/tslslive/noEX9SG/hls/live_sd.m3u8?zzhongqd
大湾区卫视,http://183.11.239.36:808/hls/132/index.m3u8
大庆新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226052/1.m3u8?
大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8
大湾区卫视,http://183.11.239.36:808/hls/132/index.m3u8
大湾区卫视,http://36.105.100.208:35455/itv/1000000002000011619.m3u8?cdn=ystenlive
大湾区卫视,http://183.237.95.108:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=0&authid=0
天元围棋,http://120.76.248.139/live/bfgd/4200000633.m3u8
天津卫视,http://220.164.192.48:50085/tsfile/live/0130_1.m3u8
天津卫视,http://58.57.40.22:9901/tsfile/live/1034_1.m3u8
天津卫视,http://112.46.85.60:8009/hls/44/index.m3u8
天津卫视,http://110.53.52.63:8888/newlive/live/hls/42/live.m3u8
天津卫视,http://36.32.174.67:60080/newlive/live/hls/26/live.m3u8
天津影视,http://180.213.174.225:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
天津文艺,http://180.213.174.225:9901/tsfile/live/0019_1.m3u8?key=txiptv&playlive=1&authid=0
天津新闻,http://111.160.17.2:59901/tsfile/live/0001_22.m3u8?key=txiptv&playlive=1&authid=0
天津新闻,http://180.213.174.225:9901/tsfile/live/0018_1.m3u8?key=txiptv&playlive=1&authid=0
天津都市,http://180.213.174.225:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8
奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8?zxinjd
宁夏卫视,http://58.57.40.22:9901/tsfile/live/1054_1.m3u8
宁夏卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225726/index.m3u8
宁夏卫视,http://110.53.52.63:8888/newlive/live/hls/39/live.m3u8
宁夏卫视,http://36.32.174.67:60080/newlive/live/hls/49/live.m3u8
宁夏卫视,http://58.19.43.46:9901/tsfile/live/1003_1.m3u8
安多卫视,http://39.134.65.166/PLTV/88888888/224/3221225531/1.m3u8
安多卫视,http://39.134.66.66/PLTV/88888888/224/3221225531/1.m3u8
安多卫视,http://39.134.65.106/PLTV/88888888/224/3221225531/1.m3u8?
@@ -248,20 +297,24 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
安徽卫视,http://110.53.52.63:8888/newlive/live/hls/24/live.m3u8
安徽卫视,http://36.32.174.67:60080/newlive/live/hls/34/live.m3u8
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8
安徽影视,http://43.129.81.169/live.ahsx.ahtv.cn/live/ystv.m3u8
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be.flv
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd#http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8#http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be.flv
安徽影视,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd
安徽影院,http://112.30.194.221:20080/live/d18ff95cb1fb4bbcb56215e189fc12be/hls.m3u8?zanhd,
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8
安徽经济生活,http://43.129.81.169/live.ahsx.ahtv.cn/live/jjshtv.m3u8
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959.flv
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8#http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8?zanhd#http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959.flv
安徽经济生活,http://112.30.194.221:20080/live/eac499adad7b49ff9cfa79ba84693959/hls.m3u8?zanhd
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8
安徽综艺体育,http://43.129.81.169/live.ahsx.ahtv.cn/live/zytytv.m3u8
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3.flv
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8?zanhd%EF%BC%9F%E4%B8%96%E7%95%8C%E6%9D%AF%E4%B8%96%E7%95%8C%E6%9D%AF
安徽综艺体育,http://112.30.194.221:20080/live/c41f112b83f644ddb082669501c8ecd3/hls.m3u8?zanhd
家庭影院,http://60.172.130.146:352/tsfile/live/1010_1.m3u8?key=txiptv&playlive=1&authid=0
少儿动画,http://218.15.183.23:9901/tsfile/live/23045_1.m3u8
少儿动画,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
山东体育,http://58.57.40.22:9901/tsfile/live/1020_1.m3u8
山东体育,http://123.132.233.194:352/tsfile/live/1001_1.m3u8
山东体育,http://61.156.228.12:8154/tsfile/live/1006_1.m3u8
山东体育,http://111.14.181.15:9901/tsfile/live/1022_1.m3u8
山东农科,http://58.57.40.22:9901/tsfile/live/1022_1.m3u8
@@ -270,47 +323,46 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
山东卫视,http://110.53.52.63:8888/newlive/live/hls/29/live.m3u8
山东卫视,http://36.32.174.67:60080/newlive/live/hls/42/live.m3u8
山东少儿,http://111.14.181.15:9901/tsfile/live/1005_1.m3u8
山东少儿,http://123.132.233.194:352/tsfile/live/1002_1.m3u8
山东少儿,http://58.57.40.22:9901/tsfile/live/1024_1.m3u8
山东少儿,http://111.14.181.15:9901/tsfile/live/1005_1.m3u8?key=tvbox6_com&playlive=1&authid=0
山东少儿,http://123.129.70.178:9901/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
山东少儿,http://123.132.233.194:352/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
山东少儿,http://221.2.148.205:8154/tsfile/live/1007_1.m3u8?key=txiptv&playlive=1&authid=0
山东教育,http://183.11.239.36:808/hls/72/index.m3u8
山东教育,http://121.19.134.222:808/tsfile/live/1033_1.m3u8
山东教育,http://120.238.94.10:9901/tsfile/live/1062_1.m3u8
山东教育,http://183.11.239.36:808/hls/72/index.m3u8
山东教育卫视,http://58.57.40.22:9901/tsfile/live/1026_1.m3u8
山东教育卫视,http://120.76.248.139/live/bfgd/4200000112.m3u8
山东教育卫视,http://123.132.233.194:352/tsfile/live/1003_1.m3u8
山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8
山东文旅,http://221.2.148.205:8154/tsfile/live/1004_1.m3u8?key=txiptv&playlive=1&authid=0
山东文旅,http://60.209.125.254:352/tsfile/live/1004_1.m3u8?ace
山东新闻,http://221.2.148.205:8154/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
山东新闻,http://123.129.70.178:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
山东新闻,http://221.2.148.205:8154/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
山东生活,http://58.57.40.22:9901/tsfile/live/1018_1.m3u8
山东生活,http://123.129.70.178:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
山东生活,http://221.2.148.205:8154/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8
山东综艺,http://111.14.181.15:9901/tsfile/live/1004_1.m3u8
山东综艺,http://58.57.40.22:9901/tsfile/live/1021_1.m3u8
山东综艺,http://123.132.233.194:352/tsfile/live/1000_1.m3u8
山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8
山东综艺,http://221.2.148.205:8154/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
山东综艺,http://111.14.181.15:9901/tsfile/live/1004_1.m3u8?key=tvbox6_com&playlive=1&authid=0
山东综艺,http://123.132.233.194:352/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
山东齐鲁,http://124.128.73.58:9901/tsfile/live/1000_1.m3u8
山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8
山东齐鲁,http://123.132.233.194:352/tsfile/live/1019_1.m3u8
山东齐鲁,http://123.130.84.106:8154/tsfile/live/1001_1.m3u8
山东齐鲁,http://111.14.181.15:9901/tsfile/live/1000_1.m3u8
山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8
山东齐鲁,http://123.129.70.178:9901/tsfile/live/0019_1.m3u8?key=txiptv&playlive=1&authid=0
山西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225730/index.m3u8
山西卫视,http://110.53.52.63:8888/newlive/live/hls/43/live.m3u8
山西卫视,http://36.32.174.67:60080/newlive/live/hls/43/live.m3u8
山西卫视,http://113.140.12.230:8888/newlive/live/hls/41/live.m3u8
山西卫视,http://58.19.43.46:9901/tsfile/live/1009_1.m3u8
山西卫视,http://36.32.174.67:60080/newlive/live/hls/43/live.m3u8
山西影视,http://60.223.224.176:8888/newlive/live/hls/54/live.m3u8
广东体育,http://120.238.94.10:9901/tsfile/live/1012_1.m3u8
广东体育,http://218.13.14.6:60050/tsfile/live/1021_1.m3u8
广东体育,http://218.15.183.23:9901/tsfile/live/23012_1.m3u8
广东体育,http://120.238.94.82:9901/tsfile/live/1012_1.m3u8
广东体育,http://120.198.95.220:9901/tsfile/live/1010_1.m3u8?key=txiptv
广东体育,http://121.33.239.242:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
广东体育,http://183.11.239.36:808/hls/2/index.m3u8
广东体育,http://218.13.170.98:9901/tsfile/live/0019_1.m3u8
广东体育,http://119.32.12.17:2901/udp/224.1.100.34:11111
广东公共,http://218.13.14.6:60050/tsfile/live/1020_1.m3u8
广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8
广东卫视,http://58.57.40.22:9901/tsfile/live/1039_1.m3u8
@@ -319,36 +371,40 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
广东少儿,http://121.33.239.242:9901/tsfile/live/0130_2.m3u8?key=txiptv&playlive=1&authid=0
广东影视,http://121.33.239.242:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
广东新闻,http://218.13.14.6:60050/tsfile/live/1019_1.m3u8
广东新闻,http://218.15.183.23:9901/tsfile/live/23010_1.m3u8
广东新闻,http://120.238.94.10:9901/tsfile/live/1010_1.m3u8
广东民生,http://183.11.239.36:808/hls/18/index.m3u8
广东民生,http://121.33.239.242:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
广东民生,http://119.32.12.17:2901/udp/224.1.100.4:11111
广东民生,http://183.237.95.108:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0
广东民生,http://121.33.239.242:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
广东民生,http://121.11.160.7:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
广东珠江,http://218.13.14.6:60050/tsfile/live/1018_1.m3u8
广东珠江,http://120.238.94.10:9901/tsfile/live/1009_1.m3u8
广东珠江,http://218.15.183.23:9901/tsfile/live/23009_1.m3u8
广东珠江,http://183.11.239.36:808/hls/83/index.m3u8
广州新闻,http://125.89.163.44:8888/udp/239.253.43.72:5146
广州新闻,http://119.32.12.17:2901/udp/224.1.100.38:11111
广州竞赛,http://119.32.12.17:2901/udp/224.1.100.105:11111
广州综合,http://119.32.12.17:2901/udp/224.1.100.36:11111
广西卫视,http://58.57.40.22:9901/tsfile/live/1049_1.m3u8
广西卫视,http://110.53.52.63:8888/newlive/live/hls/25/live.m3u8
广西卫视,http://36.32.174.67:60080/newlive/live/hls/38/live.m3u8
广西卫视,http://111.160.17.2:59901/tsfile/live/0001_44.m3u8
广西卫视,http://183.11.239.36:808/hls/56/index.m3u8
广西新闻,http://116.9.204.242:9901/tsfile/live/1001_1.m3u8
康巴卫视,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8
康巴卫视,http://39.134.66.66/PLTV/88888888/224/3221225527/1.m3u8
康巴卫视,http://61.157.139.15:9901/tsfile/live/2415_1.m3u8?key=txiptv&playlive=1&authid=0
康巴卫视,http://61.157.139.15:9901/tsfile/live/2415_1.m3u8?key=txiptv&amp;playlive=1&amp;authid=0
康巴卫视,http://36.105.100.208:35455/itv/1000000005000266002.m3u8?cdn=ystenlive
延边卫视,http://120.76.248.139/live/bfgd/4200000117.m3u8
延边卫视,http://39.134.67.108/PLTV/88888888/224/3221226040/1.m3u8
延边卫视,http://36.105.100.208:35455/itv/1000000005000266008.m3u8?cdn=ystenlive
延边卫视,http://61.138.128.226:19901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0
当涂新闻综合,http://112.30.194.221:20080/live/4f38ef59c79e4d4bac1a995681102573/hls.m3u8
快乐垂钓,http://180.213.174.225:9901/tsfile/live/1028_1.m3u8?key=txiptv&playlive=1&authid=0
快乐购,http://116.128.242.83:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
怡家,http://180.213.174.225:9901/tsfile/live/1031_1.m3u8?key=txiptv&playlive=1&authid=0
新疆卫视,http://39.164.160.249:9901/tsfile/live/0110_1.m3u8
新疆卫视,http://58.57.40.22:9901/tsfile/live/1055_1.m3u8
新疆卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225725/index.m3u8
新疆卫视,http://110.53.52.63:8888/newlive/live/hls/37/live.m3u8
新疆卫视,http://113.140.12.230:8888/newlive/live/hls/35/live.m3u8
新疆卫视,http://36.32.174.67:60080/newlive/live/hls/47/live.m3u8
新疆奎屯汉语综合,http://218.84.12.186:8001/hls/main/playlist.m3u8
新疆奎屯汉语综合,http://218.84.12.186:8001/hls/main/playlist.m3u8?zxinjd
@@ -361,7 +417,6 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
旅游卫视,http://113.57.93.165:9900/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
旅游卫视,http://113.57.20.158:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
旅游卫视,http://124.128.73.58:9901/tsfile/live/0114_1.m3u8?key=txiptv&playlive=1&authid=0
旅游卫视,http://180.213.174.225:9901/tsfile/live/0114_1.m3u8?key=txiptv&playlive=1&authid=0
时尚台FTV,http://80.94.54.42/fashiontv/stream/playlist.m3u8
星空卫视,http://218.202.220.2:5000/nn_live.ts?id=STARTV#rtmp://58.200.131.2:1935/livetv/startv#rtmp://ivi.bupt.edu.cn:1935/livetv/startv
星空卫视,http://122.224.58.42:85/tsfile/live/1024_1.m3u8?key=txiptv&playlive=1&authid=0
@@ -372,25 +427,25 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
有线财经资讯,http://61.10.2.145/live_freedirect/freehd208_h.live/chunklist.m3u8
朝阳新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8
李连杰,http://124.248.69.76:26781/huya/11342390
杭州明珠,http://120.198.101.106:9901/tsfile/live/1008_1.m3u8?key=txiptv
极速汽车,http://180.213.174.225:9901/tsfile/live/1037_1.m3u8?key=txiptv&playlive=1&authid=0
梨园,http://61.163.181.78:9901/tsfile/live/1006_1.m3u8
梨园频道,http://60.7.56.33:4000/udp/239.253.92.152:8086
梨园频道,http://60.7.56.33:4000/udp/239.253.93.133:6441
梨园频道,http://42.225.117.174:11199/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
梨园频道,http://60.2.190.206:4000/udp/239.253.92.152:8086
欢笑剧场,http://36.105.100.208:35455/itv/2000000002000000014.m3u8?cdn=hnbblive
欢笑剧场,http://180.213.174.225:9901/tsfile/live/1036_1.m3u8?key=txiptv&playlive=1&authid=0
欢笑剧场,http://36.105.100.208:35455/itv/5000000002000009455.m3u8?cdn=bestzb
武乡新闻综合,http://60.220.198.84:81/0.m3u8
求索动物,http://39.134.65.106/PLTV/88888888/224/3221225730/1.m3u8?
求索动物,http://36.105.100.208:35455/itv/2000000004000000009.m3u8?cdn=hnbblive
求索生活,http://36.105.100.208:35455/itv/2000000004000000008.m3u8?cdn=hnbblive
求索科学,http://36.105.100.208:35455/itv/2000000004000000011.m3u8?cdn=hnbblive
求索纪录,http://36.105.100.208:35455/itv/2000000004000000010.m3u8?cdn=hnbblive
求索生活,http://39.134.65.106/PLTV/88888888/224/3221225715/1.m3u8?
求索科学,http://39.134.65.106/PLTV/88888888/224/3221225728/1.m3u8?
求索纪录,http://39.134.65.106/PLTV/88888888/224/3221225713/1.m3u8?
求索纪录,http://60.2.190.206:4000/udp/239.253.93.236:6414
汕头文旅,http://125.89.163.44:8888/udp/239.77.1.132:5146
汕头经济,http://125.89.163.44:8888/udp/239.77.1.131:5146
汕头综合,http://125.89.163.44:8888/udp/239.77.1.130:5146
江夏新闻综合,http://59.175.226.142:280/gb28181/xwzh.m3u8?zhubd
江夏新闻综合,http://59.175.226.142:280/gb28181/xwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8
江津新闻综合,http://222.179.155.21:1935/ch1.m3u8?zzhongqd
江苏体育,http://58.221.214.82:9901/tsfile/live/0006_2.m3u8
江苏卫视,http://39.164.160.249:9901/tsfile/live/0127_1.m3u8
江苏卫视,http://58.57.40.22:9901/tsfile/live/1031_1.m3u8
江苏卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225702/index.m3u8
@@ -399,11 +454,21 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
江苏城市,http://58.210.168.86:10800/newlive/live/hls/52/live.m3u8
江苏教育,http://58.221.214.82:9901/tsfile/live/0012_2.m3u8?key=txiptv
江苏综艺,http://58.220.219.14:9901/tsfile/live/0120_4.m3u8?key=txiptv&playlive=1&authid=0
江西公共农业,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv5.m3u8
江西卫视,http://39.164.160.249:9901/tsfile/live/0138_1.m3u8
江西卫视,http://58.57.40.22:9901/tsfile/live/1043_1.m3u8
江西卫视,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv1.m3u8
江西卫视,http://110.53.52.63:8888/newlive/live/hls/41/live.m3u8
江西卫视,http://58.17.48.228:808/hls/17/index.m3u8
江西少儿,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv6.m3u8
江西影视旅游,http://43.129.81.169/yun-live.jxtvcn.com.cn/jxtv-jxtv/tv_jxtv4.m3u8
江西教育,http://58.17.48.228:808/hls/24/index.m3u8
江西新闻,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv7.m3u8
江西经济生活,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv3_hd.m3u8
江西都市,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_jxtv2.m3u8
江西陶瓷,http://43.129.81.169/yun-live.jxtvcn.com.cn/live-jxtv/tv_taoci.m3u8
江门侨乡生活,http://125.89.163.44:8888/udp/239.77.0.202:5146
江门综合,http://125.89.163.44:8888/udp/239.77.0.201:5146
河北农民,http://124.239.135.194:11080/live/hbnm/index.m3u8
河北农民,http://121.19.134.222:808/tsfile/live/1005_1.m3u8
河北卫视,http://39.164.160.249:9901/tsfile/live/0117_1.m3u8
@@ -412,14 +477,14 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
河北少儿科教,http://124.239.135.194:11080/live/sekj/index.m3u8
河北都市,http://124.239.135.194:11080/live/hbds/index.m3u8
河北都市,http://121.19.134.222:808/tsfile/live/1001_1.m3u8
河北都市,http://121.19.134.222:808/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
河南卫视,http://39.164.160.249:9901/tsfile/live/0139_1.m3u8
河南卫视,http://58.57.40.22:9901/tsfile/live/1048_1.m3u8
河南卫视,http://110.53.52.63:8888/newlive/live/hls/32/live.m3u8
河南卫视,http://36.32.174.67:60080/newlive/live/hls/35/live.m3u8
河南卫视,http://175.31.21.146:4480/hls/19/index.m3u8
河南卫视,http://36.32.174.67:60080/newlive/live/hls/35/live.m3u8
河南民生,http://61.163.181.78:85/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
河南都市,http://61.163.181.78:9901/tsfile/live/1004_1.m3u8
河源公共,http://125.89.163.44:8888/udp/239.253.43.214:5146
河源公共,http://120.234.5.28:6000/udp/239.21.0.49:3536
河源综合,http://120.234.5.28:6000/udp/239.21.0.48:3532
河源综合,http://125.89.163.44:8888/udp/239.253.43.213:5146
@@ -430,17 +495,17 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
济南综合,http://124.128.73.58:9901/tsfile/live/1003_1.m3u8?key=txiptv&playlive=1&authid=0
济宁公共,http://111.14.181.15:9901/tsfile/live/1009_1.m3u8
济宁公共,http://111.14.181.15:9901/tsfile/live/1009_1.m3u8?key=tvbox6_com&playlive=1&authid=0
济宁综合,http://111.14.181.15:9901/tsfile/live/1007_1.m3u8
济宁综合,http://111.14.181.15:9901/tsfile/live/1007_1.m3u8?key=tvbox6_com&playlive=1&authid=0
浙江卫视,http://220.164.192.48:50085/tsfile/live/0127_1.m3u8
浙江卫视,http://58.57.40.22:9901/tsfile/live/1029_1.m3u8
浙江卫视,http://112.46.85.60:8009/hls/34/index.m3u8
浙江卫视,http://110.53.52.63:8888/newlive/live/hls/23/live.m3u8
浙江卫视,http://175.31.21.146:4480/hls/28/index.m3u8
浙江卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225703/index.m3u8
浙江卫视测试,http://180.213.174.225:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
海南卫视,http://220.164.192.48:50085/tsfile/live/1003_1.m3u8
海南卫视,http://58.57.40.22:9901/tsfile/live/1000_1.m3u8
海南卫视,http://36.32.174.67:60080/newlive/live/hls/46/live.m3u8
海南卫视,http://183.11.239.36:808/hls/124/index.m3u8
海南卫视,http://120.76.248.139/live/bfgd/4200000473.m3u8
海峡卫视,http://38.64.72.148:80/hls/modn/list/4009/chunklist0.m3u8
海峡卫视,http://38.64.72.148:80/hls/modn/list/4009/playlist.m3u8
海绵宝宝,http://124.248.69.76:26781/huya/11352919
@@ -454,16 +519,14 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
深圳少儿,http://183.11.239.36:808/hls/157/index.m3u8
深圳少儿,http://125.89.163.44:8888/udp/239.77.1.244:5146
深圳移动电视,http://125.89.163.44:8888/udp/239.77.1.175:5146
深圳财经生活,http://183.11.239.36:808/hls/151/index.m3u8
游戏风云,http://36.105.100.208:35455/itv/5000000011000031114.m3u8?cdn=bestzb
湖北卫视,http://220.164.192.48:50085/tsfile/live/0123_1.m3u8
湖北卫视,http://58.57.40.22:9901/tsfile/live/1038_1.m3u8
湖北卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225699/index.m3u8
湖北卫视,http://110.53.52.63:8888/newlive/live/hls/33/live.m3u8
湖北卫视,http://36.32.174.67:60080/newlive/live/hls/28/live.m3u8
湖北卫视,http://60.223.224.176:8888/newlive/live/hls/33/live.m3u8
湖北垄上,http://58.19.43.46:9901/tsfile/live/1015_1.m3u8
湖北垄上,http://113.57.20.158:9901/tsfile/live/1015_1.m3u8
湖北垄上,http://119.36.148.115:59901/tsfile/live/1006_1.m3u8
湖北垄上,http://113.57.20.158:9901/tsfile/live/1015_1.m3u8
湖北垄上,http://113.57.20.158:9901/tsfile/live/1015_1.m3u8?key=txiptv&playlive=1&authid=0
湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8
湖北影视,http://113.57.20.158:9901/tsfile/live/1016_1.m3u8
@@ -471,27 +534,29 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8
湖北经视,http://183.94.1.118:8801/tsfile/live/1017_1.m3u8
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
湖北经视,http://119.36.148.115:59901/tsfile/live/1004_1.m3u8?key=txiptv
湖北经视,http://113.57.20.158:9901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
湖北综合,http://58.19.133.144:9901
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8
湖南公共,http://116.128.242.83:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0
湖南卫视,http://39.164.160.249:9901/tsfile/live/0128_1.m3u8
湖南卫视,http://58.57.40.22:9901/tsfile/live/1028_1.m3u8
湖南卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225704/index.m3u8
湖南卫视,http://110.53.52.63:8888/newlive/live/hls/22/live.m3u8
湖南卫视,http://175.31.21.146:4480/hls/36/index.m3u8
湖南娱乐,http://116.128.242.83:9901/tsfile/live/0125_1.m3u8
湖南娱乐,http://116.128.243.121:85/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0
湖南娱乐,http://116.128.242.83:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0
湖南导视,http://116.128.242.83:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0
湖南电影,http://110.53.52.63:8888/newlive/live/hls/50/live.m3u8
湖南电影,http://116.128.242.83:9901/tsfile/live/1009_1.m3u8
湖南电视剧,http://116.128.242.83:9901/tsfile/live/0120_1.m3u8
湖南电视剧,http://116.128.242.83:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0
湖南经视,http://110.53.218.182:9902/tsfile/live/1004_1.m3u8
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8
湖南经视,http://116.128.243.121:85/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
湖南经视,http://116.128.242.83:9901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0
湖南都市,http://110.53.218.182:9902/tsfile/live/0127_1.m3u8
湖南都市,http://116.128.243.121:85/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
湖南都市,http://116.128.242.83:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0
湖南金鹰纪实,http://180.213.174.225:9901/tsfile/live/1012_1.m3u8?key=txiptv&playlive=1&authid=0
漫画解说,http://124.248.69.76:26781/douyu/5907076
漫画解说,http://61.133.118.228:5001/yy/1382735568
漳浦综合,http://220.161.87.62:8090/hls/0/index.m3u8
@@ -501,19 +566,19 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
潞城新闻综合,http://59.48.42.6:62204/lucheng.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
潞城新闻综合,http://59.48.42.6:62204/lucheng.m3u8?zshanxd
灾难片,http://124.248.69.76:26781/huya/11602075
炫动卡通,http://218.15.183.23:9901/tsfile/live/23042_1.m3u8
炫动卡通,http://120.198.95.220:9901/tsfile/live/1034_1.m3u8?key=txiptv
炫动卡通,http://183.237.95.108:9901/tsfile/live/1100_1.m3u8?key=txiptv&playlive=0&authid=0
爱体育,http://36.105.100.208:35455/itv/1000000001000009601.m3u8?cdn=ystenlive
爱情喜剧,http://36.105.100.208:35455/itv/2000000003000000010.m3u8?cdn=hnbblive
玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8
玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8?zxinjd,
环映,http://180.213.174.225:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=1&authid=0
璧山综合,http://222.179.42.129:8181/hls1.m3u8
甄子丹,http://124.248.69.76:26781/huya/11352935
甘肃卫视,http://58.57.40.22:9901/tsfile/live/1056_1.m3u8
甘肃卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225724/index.m3u8
甘肃卫视,http://58.57.40.22:9901/tsfile/live/1056_1.m3u8
甘肃卫视,http://43.129.81.169/9bwaz8y2.gzstv.com/live/CH01_lo.m3u8
甘肃卫视,http://110.53.52.63:8888/newlive/live/hls/35/live.m3u8
生活时尚,http://146.56.165.66:7788/TVOD/5000000002000019634/bestzb/index.m3u8
电影丧尸片,http://124.248.69.76:26781/huya/21059578
电影喜乐影院,http://124.248.69.76:26781/huya/21059580
电影强森,http://124.248.69.76:26781/huya/21059581
@@ -521,7 +586,6 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
电影战争片,http://124.248.69.76:26781/huya/21059574
电影救援,http://124.248.69.76:26781/huya/21059594
电影梁家辉,http://124.248.69.76:26781/huya/11342429
电影死神来了,http://124.248.69.76:26781/huya/11352903
电影犯罪片,http://124.248.69.76:26781/huya/11352974
电影玄幻,http://124.248.69.76:26781/huya/11342414
电影盗墓,http://124.248.69.76:26781/huya/21059552
@@ -529,14 +593,11 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
电影贺岁,http://124.248.69.76:26781/huya/11601971
睛彩广场舞,http://36.105.100.208:35455/itv/2000000003000000062.m3u8?cdn=hnbblive
睛彩河北,http://124.239.135.194:11080/live/qchb/index.m3u8
睛彩竞技,http://138.2.61.159:5000/2000000003000000060/hnbblive/index.m3u8
睛彩竞技,http://138.2.61.159:5000/1000000006000270001/ystenlive/index.m3u8
睛彩篮球,http://138.2.61.159:5000/2000000003000000061/hnbblive/index.m3u8
睛彩篮球,http://138.2.61.159:5000/2000000003000000065/hnbblive/index.m3u8
睛彩篮球,http://138.2.61.159:5000/1000000006000270002/ystenlive/index.m3u8
睛彩篮球,http://138.2.61.159:5000/1000000006000270006/ystenlive/index.m3u8
睛彩竞技,http://39.134.65.106/PLTV/88888888/224/3221225897/1.m3u8?
睛彩篮球,http://39.134.67.108/PLTV/88888888/224/3221225895/1.m3u8
睛彩篮球,http://36.105.100.208:35455/itv/2000000003000000061.m3u8?cdn=hnbblive
睛彩青少,http://36.105.100.208:35455/itv/1000000006000270007.m3u8?cdn=ystenlive
睛彩篮球,http://39.134.65.106/PLTV/88888888/224/3221225895/1.m3u8?
睛彩篮球,http://39.134.65.106/PLTV/88888888/224/3221226027/1.m3u8?
石家庄新闻综合,http://124.239.135.194:11080/live/sjzxwzh/index.m3u8
石河子影视文体,http://124.88.144.73:1935/live/jjsh/playlist.m3u8#@http://202.107.188.141:5002/shiheziyinshiwenti_hdgq.m3u8?token=guoziyun#@http://202.107.188.139:5002/shiheziyinshiwenti_hdcq.m3u8?token=guoziyun
石河子教育,http://124.88.144.73:1935/live/xwzh/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
@@ -549,36 +610,39 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
福建旅游,http://110.81.206.138:49231/tsfile/live/23027_1.m3u8?key=txiptv&playlive=1&authid=0
福建电视剧,http://110.81.206.138:49231/tsfile/live/23026_1.m3u8?key=txiptv&playlive=1&authid=0
福建综合,http://110.81.206.138:49231/tsfile/live/23023_1.m3u8?key=txiptv&playlive=1&authid=0
精品体育,http://39.134.115.163:8080/PLTV/88888910/224/3221225709/index.m3u8
精品体育,http://146.56.165.66:7788/TVOD/2000000003000000021/hnbblive/index.m3u8
精彩影视,http://36.105.100.208:35455/itv/6000000006000320630.m3u8?cdn=wasusyt
纪实科教,http://36.105.100.208:35455/itv/1000000001000001910.m3u8?cdn=ystenlive
纪实科教8K,http://111.31.106.140/downflv.brtvcloud.com/8klive/8kliveok.m3u8
纬来体育,http://122.117.71.103:8562/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
纬来电影台,http://122.117.71.103:8554/http/61.222.53.250:8081/hls/69/811/ch35.m3u8
纯享4K,http://36.105.100.208:35455/itv/1000000004000011651.m3u8?cdn=ystenlive
经典动漫,http://61.133.118.228:5001/yy/24180320
经典电影,http://61.163.181.78:9901/tsfile/live/1059_1.m3u8
经典电影,http://120.238.94.10:9901/tsfile/live/1040_1.m3u8
经典电影,http://60.172.130.146:352/tsfile/live/1006_1.m3u8?key=txiptv&playlive=1&authid=0
经典电影,http://61.163.181.78:9901/tsfile/live/1059_1.m3u8
经典电影,http://61.133.118.228:5001/yy/1356363815
绵阳综合,http://119.6.59.216:60033/tsfile/live/1007_1.m3u8?key=txiptv
自贡综合,http://110.189.153.160:1001/zhpd.flv?zsicd
茶,http://180.213.174.225:9901/tsfile/live/1041_1.m3u8?key=txiptv&playlive=1&authid=0
茶频道,http://36.105.100.208:35455/itv/5000000011000031209.m3u8?cdn=bestzb
芜湖新闻综合,http://43.129.81.169/live.ahsx.ahtv.cn/live/whpd.m3u8
苏州文化生活,http://61.155.203.93:5021/live_hls/3/.m3u8
苏州生活资讯,http://61.155.203.93:5021/live_hls/4/.m3u8
茂名公共,http://125.89.163.44:8888/udp/239.77.0.207:5146
茂名综合,http://125.89.163.44:8888/udp/239.77.0.206:5146
西安1套,http://112.46.85.60:8009/hls/28/index.m3u8
西安2套,http://112.46.85.60:8009/hls/29/index.m3u8
西藏卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225723/index.m3u8
西藏卫视,http://110.53.52.63:8888/newlive/live/hls/36/live.m3u8
西藏卫视,http://36.32.174.67:60080/newlive/live/hls/48/live.m3u8
西藏卫视,http://111.61.236.247:9081/hls/52/index.m3u8
西藏卫视,http://183.11.239.36:808/hls/64/index.m3u8
贵州卫视,http://39.164.160.249:9901/tsfile/live/0120_1.m3u8
贵州卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8
贵州卫视,http://58.57.40.22:9901/tsfile/live/1042_1.m3u8
贵州卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8
贵州卫视,http://110.53.52.63:8888/newlive/live/hls/28/live.m3u8
贵州卫视,http://58.19.43.46:9901/tsfile/live/1011_1.m3u8
超级体育,http://111.29.9.33:6610/000000001000/1000000004000007755/index.m3u8?channel-id=bestzb&Contentid=1000000004000007755&livemode=1&stbId=3
超级体育,http://39.134.115.163:8080/PLTV/88888910/224/3221225622/index.m3u8
超级体育,http://39.134.65.106/PLTV/88888888/224/3221225635/1.m3u8?
超级电影,http://111.29.9.33:6610/000000001000/1000000001000012884/index.m3u8?channel-id=bestzb&Contentid=1000000001000012884&livemode=1&stbId=3
超级电影,http://39.134.65.106/PLTV/88888888/224/3221225644/1.m3u8?
超级电影,http://36.105.100.208:35455/itv/1000000003000012426.m3u8?cdn=ystenlive
超级电视剧,http://36.105.100.208:35455/itv/1000000004000024993.m3u8?cdn=ystenlive
超级综艺,http://39.134.115.163:8080/PLTV/88888910/224/3221225620/index.m3u8
超级综艺,http://39.134.65.106/PLTV/88888888/224/3221225642/1.m3u8?
超级综艺,http://111.29.9.33:6610/000000001000/1000000004000023658/index.m3u8?channel-id=bestzb&Contentid=1000000004000023658&livemode=1&stbId=3
辽宁体育,http://120.76.248.139/live/bfgd/4200000611.m3u8
辽宁公共,http://120.76.248.139/live/bfgd/4200000077.m3u8
@@ -587,7 +651,7 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
辽宁卫视,http://39.164.160.249:9901/tsfile/live/0121_1.m3u8
辽宁卫视,http://58.57.40.22:9901/tsfile/live/1035_1.m3u8
辽宁卫视,http://110.53.52.63:8888/newlive/live/hls/46/live.m3u8
辽宁卫视,http://58.19.43.46:9901/tsfile/live/1041_1.m3u8
辽宁卫视,http://222.219.183.103:8089/hls/35/index.m3u8
辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8
辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8
辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8
@@ -597,32 +661,29 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
辽宁都市,http://120.76.248.139/live/bfgd/4200000610.m3u8
都市剧场,http://36.105.100.208:35455/itv/5000000011000031111.m3u8?cdn=bestzb
都市剧场,http://222.179.155.21:1935/ch1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
都市剧场,http://183.64.174.171:40123/ch1.m3u8?zzhongqd
都市剧场,http://180.213.174.225:9901/tsfile/live/1040_1.m3u8?key=txiptv&playlive=1&authid=0
都市剧场,http://183.237.95.108:9901/tsfile/live/1069_1.m3u8?key=txiptv&playlive=0&authid=0
鄂托克旗电视台,http://110.19.181.138:10080/hls/F509Rh7GR/F509Rh7GR_live.m3u8?zneimd
重庆卫视,http://58.57.40.22:9901/tsfile/live/0142_1.m3u8
重庆卫视,http://110.53.52.63:8888/newlive/live/hls/30/live.m3u8
重庆卫视,http://111.160.17.2:59901/tsfile/live/0001_31.m3u8
重庆卫视,http://183.11.239.36:808/hls/53/index.m3u8
重庆卫视,http://120.76.248.139/live/bfgd/4200000107.m3u8
重庆汽摩,http://120.76.248.139/live/bfgd/4200000168.m3u8
重庆汽摩,http://183.230.184.51:65500/tntv1.m3u8?zzhongqd
重庆汽摩,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8?key=txiptv
重庆璧山综合,http://222.179.42.129:8181/hls1.m3u8?zzhongqd
金川乡村,http://139.203.180.9:90/live/jcxc.m3u8
金川新闻综合,http://139.203.180.9:90/live/zhxw.m3u8
金牌综艺,http://111.29.9.33:6610/000000001000/1000000004000026167/index.m3u8?channel-id=bestzb&Contentid=1000000004000026167&livemode=1&stbId=3
金色学堂,http://36.105.100.208:35455/itv/5000000010000026105.m3u8?cdn=bestzb
金鹰卡通,http://58.19.43.46:9901/tsfile/live/1000_1.m3u8
金牌综艺,http://39.134.115.163:8080/PLTV/88888910/224/3221225711/index.m3u8
金牌综艺,http://39.134.65.106/PLTV/88888888/224/3221225525/1.m3u8?
金鹰卡通,http://218.15.183.23:9901/tsfile/live/23041_1.m3u8
金鹰卡通,http://111.160.17.2:59901/tsfile/live/0001_33.m3u8
金鹰卡通,http://121.33.239.242:9901/tsfile/live/38727_1.m3u8
金鹰卡通,http://113.57.20.158:9901/tsfile/live/1000_1.m3u8
金鹰卡通,http://110.53.52.63:8888/newlive/live/hls/49/live.m3u8
金鹰卡通,http://110.80.17.38:9901/tsfile/live/0016_2.m3u8
金鹰卡通,http://39.134.115.163:8080/PLTV/88888910/224/3221225721/index.m3u8
金鹰纪实,http://120.238.94.10:9901/tsfile/live/1059_1.m3u8
金鹰纪实,http://121.19.134.222:808/tsfile/live/1037_1.m3u8
金鹰纪实,http://183.11.239.36:808/hls/171/index.m3u8
金鹰纪实,http://58.57.40.22:9901/tsfile/live/1070_1.m3u8
铜梁综合,http://183.64.174.171:40123/ch1.m3u8
陕西1套,http://112.46.85.60:8009/hls/18/index.m3u8
陕西1套,http://123.138.22.30:9901/tsfile/live/1000_1.m3u8
陕西1套,http://112.46.85.60:8009/hls/18/index.m3u8
陕西1套,http://124.116.183.146:9901/tsfile/live/1000_1.m3u8
陕西2套,http://123.138.22.30:9901/tsfile/live/1001_1.m3u8
陕西2套,http://124.116.183.146:9901/tsfile/live/1001_1.m3u8
@@ -637,107 +698,98 @@ iHOT爱体育,http://146.56.165.66:7788/TVOD/2000000004000000060/hnbblive/index.
陕西卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225729/index.m3u8
陕西卫视,http://110.53.52.63:8888/newlive/live/hls/40/live.m3u8
陕西卫视,http://36.32.174.67:60080/newlive/live/hls/44/live.m3u8
陕西卫视,http://58.19.43.46:9901/tsfile/live/1013_1.m3u8
陕西新闻资讯,http://113.200.148.203:85/tsfile/live/1011_1.m3u8?key=txiptv&playlive=1&authid=0
陕西新闻资讯,http://124.116.183.146:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
雅趣,http://180.213.174.225:9901/tsfile/live/1033_1.m3u8?key=txiptv&playlive=1&authid=0
青海卫视,http://58.57.40.22:9901/tsfile/live/1057_1.m3u8
青海卫视,http://220.164.192.48:50085/tsfile/live/0140_1.m3u8
青海卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225727/index.m3u8
青海卫视,http://110.53.52.63:8888/newlive/live/hls/38/live.m3u8
青海卫视,http://120.76.248.139/live/bfgd/4200000111.m3u8
魅力足球,http://146.56.165.66:7788/TVOD/5000000011000031207/bestzb/index.m3u8
魅力足球,http://36.105.100.208:35455/itv/5000000011000031206.m3u8?cdn=bestzb
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226043/1.m3u8?
鹤岗新闻综合,http://39.134.65.106/PLTV/88888888/224/3221226073/1.m3u8?
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8
黎城综合,http://111.53.96.67:8081/live/1/index.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD]
黑莓动画,http://111.29.9.33:6610/000000001000/1000000004000021734/index.m3u8?channel-id=bestzb&Contentid=1000000004000021734&livemode=1&stbId=3
黑莓动画,http://39.134.115.163:8080/PLTV/88888910/224/3221225672/index.m3u8
黑莓动画,http://36.105.100.208:35455/itv/1000000004000021734.m3u8?cdn=ystenlive
黑莓电影,http://146.56.165.66:7788/TVOD/2000000003000000001/hnbblive/index.m3u8
黑莓电影,http://111.29.9.33:6610/000000001000/1000000004000019624/index.m3u8?channel-id=bestzb&Contentid=1000000004000019624&livemode=1&stbId=3
黑莓电影,http://36.105.100.208:35455/itv/1000000004000019624.m3u8?cdn=ystenlive
黑莓电影,http://39.134.65.106/PLTV/88888888/224/3221225681/1.m3u8?
黑龙江卫视,http://39.164.160.249:9901/tsfile/live/0143_1.m3u8
黑龙江卫视,http://58.57.40.22:9901/tsfile/live/1040_1.m3u8
黑龙江卫视,http://39.134.115.163:8080/PLTV/88888910/224/3221225690/index.m3u8
黑龙江卫视,http://110.53.52.63:8888/newlive/live/hls/44/live.m3u8
黑龙江卫视,http://113.140.12.230:8888/newlive/live/hls/42/live.m3u8
黑龙江卫视,http://183.131.246.250:9901/tsfile/live/0143_1.m3u8
黑龙江少儿,http://39.134.67.108/PLTV/88888888/224/3221225979/1.m3u8
黑龙江少儿,http://112.99.193.34:9901/tsfile/live/1030_1.m3u8?key=txiptv&playlive=1&authid=0
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221225979/1.m3u8?
黑龙江少儿,http://39.134.65.106/PLTV/88888888/224/3221226002/1.m3u8?
黑龙江影视,http://39.134.67.108/PLTV/88888888/224/3221225973/1.m3u8
黑龙江影视,http://112.99.193.34:9901/tsfile/live/1025_1.m3u8?key=txiptv&amp;playlive=1&amp;authid=0
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225971/1.m3u8?
黑龙江影视,http://39.134.65.106/PLTV/88888888/224/3221225973/1.m3u8?
黑龙江文体,http://39.134.67.108/PLTV/88888888/224/3221225965/1.m3u8
黑龙江文体,http://112.99.193.34:9901/tsfile/live/1022_1.m3u8?
黑龙江新闻,http://112.99.193.34:9901/tsfile/live/1024_1.m3u8?
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221225965/1.m3u8?
黑龙江文体,http://39.134.65.106/PLTV/88888888/224/3221226012/1.m3u8?
黑龙江新闻法治,http://39.134.67.108/PLTV/88888888/224/3221225967/1.m3u8
黑龙江都市,http://39.134.67.108/PLTV/88888888/224/3221225969/1.m3u8
黑龙江都市,http://112.99.193.34:9901/tsfile/live/1027_1.m3u8?key=txiptv&amp;playlive=1&amp;authid=0
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225969/1.m3u8?
黑龙江都市,http://39.134.65.106/PLTV/88888888/224/3221225990/1.m3u8?
齐鲁,http://124.128.73.58:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
龙华卡通,http://122.117.71.103:8516/http/61.222.53.250:8068/hls/14/80/cstv14.m3u8
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
龙华戏剧,http://122.117.71.103:8533/http/61.222.53.250:8068/hls/13/80/cstv13.m3u8
龙华洋片,http://50.7.234.10:8278/lunghuawestern_twn/playlist.m3u8?tid=MC1C3944472239444722&ct=19226&tsum=99c0c7c82e2fc48b16605865c3eaeb82
龙华电影,http://122.117.71.103:8555/http/61.222.53.250:8068/hls/10/80/cstv10.m3u8
龙华电影,http://122.117.71.103:8555/http/61.222.53.250:8081/hls/75/817/ch59.m3u8
# IPv6 Streams
CCTV-1 综合,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8
CCTV-10 科教,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225677/index.m3u8
CCTV-11 戏曲,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226565/index.m3u8
CCTV-12 社会与法,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225731/index.m3u8
CCTV-13 新闻,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8
CCTV-14 少儿,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225732/index.m3u8
CCTV-15 音乐,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8
CCTV-16 奥林匹克,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225893/index.m3u8
CCTV-17 农业农村,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8
CCTV-2 财经,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8
CCTV-3 综艺,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225799/index.m3u8
CCTV-4 中文国际,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/index.m3u8
CCTV-5 体育,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8
CCTV-5+ 体育赛事,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225507/index.m3u8
CCTV-6 电影,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226010/index.m3u8
CCTV-7 国防军事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225733/index.m3u8
CCTV-8 电视剧,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8
CCTV-9 纪录,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225642/index.m3u8
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225618/2/index.m3u8
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225642/2/index.m3u8
CCTV1,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225501/2/index.m3u8
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225627/2/index.m3u8
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225637/2/index.m3u8
CCTV12,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225495/2/index.m3u8
CCTV15,http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8
CCTV16,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221226230/index.m3u8
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225908/2/index.m3u8
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225907/2/index.m3u8
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225909/2/index.m3u8
CCTV17,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225909/index.m3u8
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225636/2/index.m3u8
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225636/index.m3u8
CCTV10,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225496/2/index.m3u8
CCTV17,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8
CCTV2,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225643/2/index.m3u8
CCTV3,http://[2409:8087:1a01:df::4041]:80/TVOD/88888888/224/3221225799/main.m3u8
CCTV5,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225633/index.m3u8
CCTV5+,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225649/2/index.m3u8
CCTV6,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225650/2/index.m3u8
CCTV6,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225632/index.m3u8
CCTV6,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225632/2/index.m3u8
CCTV7,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225624/index.m3u8
CCTV7,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225624/2/index.m3u8
CCTV7,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225644/2/index.m3u8
CCTV7,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225499/2/index.m3u8
CCTV8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8
上海纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225655/index.m3u8
东北热剧,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225741/index.m3u8
东南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8
东南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225657/2/index.m3u8
东南卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225950/main.m3u8
东南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225585/2/index.m3u8
东南卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225585/index.m3u8?fmt=ts2hls
东方卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225659/index.m3u8
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225658/2/index.m3u8
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225659/2/index.m3u8
东方卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225489/2/index.m3u8
北京卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8
吉林卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226397/index.m3u8
咪咕,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221226240/2/index.m3u8
哒啵赛事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225675/index.m3u8
四川卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226338/index.m3u8
天津卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225698/index.m3u8
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225698/2/index.m3u8
天津卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225485/2/index.m3u8
天津卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225739/2/index.m3u8
安徽卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8
山东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8
山东卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225484/index.m3u8?fmt=ts2hls
山东卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225484/2/index.m3u8
山东卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225738/2/index.m3u8
山东卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225697/2/index.m3u8
山西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225730/2/index.m3u8
广东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8
广西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8
@@ -748,21 +800,17 @@ CCTV8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8
武术世界,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225508/2/index.m3u8
江苏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8
江西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225705/2/index.m3u8
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225746/2/index.m3u8
江西卫视,http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225492/2/index.m3u8
江西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225492/index.m3u8?fmt=ts2hls
河北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8
河北卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225961/main.m3u8
河南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8
浙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8
浙江卫视,http://[2409:8087:1a01:df::4043]:80/TVOD/88888888/224/3221225959/main.m3u8
海南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8
深圳卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8
深圳卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225598/index.m3u8?fmt=ts2hls
湖北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8
湖南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8
甘肃卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225724/2/index.m3u8
睛彩竞技,http://[2409:8087:1a01:df::4061]:80/TVOD/88888888/224/3221225899/main.m3u8
睛彩篮球,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8
精品体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225709/2/index.m3u8
@@ -772,20 +820,18 @@ CCTV8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8
西藏卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225723/2/index.m3u8
贵州卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8
贵州卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8
贵州卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225483/index.m3u8?fmt=ts2hls
超级体育,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8
超级体育,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225622/2/index.m3u8
超级电影,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225717/index.m3u8
超级综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225714/index.m3u8
超级视剧,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225716/index.m3u8
辽宁卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8
重庆卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8
重庆卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225612/index.m3u8?fmt=ts2hls
金牌综艺,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8
金鹰纪实,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225595/index.m3u8?fmt=ts2hls
陕西卫视,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225729/2/index.m3u8
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8
鹤岗新闻综合,http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225769/2/index.m3u8
黑莓电影,http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8
黑龙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8
黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8
黑龙江都市,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8