[
  {
    "path": "MediaPlayParse - M3U8.as",
    "content": "/*\r\n    资源站视频\r\n*/\r\n\r\n// void OnInitialize()\r\n// void OnFinalize()\r\n// string GetTitle() \t\t\t\t\t\t\t\t\t-> get title for UI\r\n// string GetVersion\t\t\t\t\t\t\t\t\t-> get version for manage\r\n// string GetDesc()\t\t\t\t\t\t\t\t\t\t-> get detail information\r\n// string GetLoginTitle()\t\t\t\t\t\t\t\t-> get title for login dialog\r\n// string GetLoginDesc()\t\t\t\t\t\t\t\t-> get desc for login dialog\r\n// string GetUserText()\t\t\t\t\t\t\t\t\t-> get user text for login dialog\r\n// string GetPasswordText()\t\t\t\t\t\t\t\t-> get password text for login dialog\r\n// string ServerCheck(string User, string Pass) \t\t-> server check\r\n// string ServerLogin(string User, string Pass) \t\t-> login\r\n// void ServerLogout() \t\t\t\t\t\t\t\t\t-> logout\r\n//------------------------------------------------------------------------------------------------\r\n// bool PlayitemCheck(const string &in)\t\t\t\t\t                                            -> check playitem\r\n// string PlayitemParse(const string &in path,dictionary &MetaData, array<dictionary> &QualityList)\t-> parse playitem\r\n// bool PlaylistCheck(const string &in)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t-> check playlist\r\n// array<dictionary> PlaylistParse(const string &in)\t\t\t\t\t\t\t\t\t\t\t\t-> parse playlist\r\n\r\nstring GetTitle()\r\n{\r\n    return \"M3U8\";\r\n}\r\n\r\nstring GetVersion()\r\n{\r\n    return \"1\";\r\n}\r\n\r\nstring GetDesc()\r\n{\r\n    return \"M3U8\";\r\n}\r\n\r\nstring USERAGENT = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36\";\r\nstring HOMEURL;\r\nint RI=0,PG=1;\r\nbool isOnly = false;\r\nJsonReader JSON;\r\narray<string> URLLIST={\r\n    \"https://ikunzyapi.com/api.php/provide/vod\",\r\n    \"https://www.feisuzyapi.com/api.php/provide/vod/\",\r\n    \"https://api.tiankongapi.com/api.php/provide/vod/\",\r\n    \"https://api.ukuapi.com/api.php/provide/vod/\",\r\n    \"https://api.1080zyku.com/inc/apijson.php\",\r\n    \"https://api.tiankongapi.com/api.php/provide/vod/at/json/from/tkm3u8/\",\r\n    \"https://sdzyapi.com/api.php/provide/vod/\",\r\n    \"https://www.hongniuzy2.com/api.php/provide/vod/at/json/\"\r\n    };\r\n\r\nvoid getHomeURL(string name)\r\n{\r\n    HOMEURL = URLLIST[RI] + \"?ac=list&PG=\"+PG+\"&wd=\" + HostUrlEncode(name);\r\n}\r\n\r\nJsonValue getPlayList()\r\n{\r\n    JsonValue ret;\r\n    string tempstr = HostUrlGetString(HOMEURL, USERAGENT, \"\", \"\", false);\r\n    JSON.parse(tempstr, ret);\r\n    return ret[\"list\"];\r\n}\r\n\r\nJsonValue getItemdetail(string ids)\r\n{\r\n    JsonValue ret;\r\n    string detailurl = URLLIST[RI] + \"?ac=detail&ids=\" + ids;\r\n    HostPrintUTF8(detailurl);\r\n    string tempstr = HostUrlGetString(detailurl, USERAGENT, \"\", \"\", false);\r\n    JSON.parse(tempstr, ret);\r\n    return ret[\"list\"];\r\n}\r\n\r\narray<string> handelUrlStr(string url)\r\n{\r\n    array<string> ret;\r\n    if(url.find('#')>0)\r\n    {\r\n        url.replace(\"#\",\"$\");\r\n    }\r\n    else{\r\n        url.replace(\"$$$\",\"$\");\r\n    }\r\n    ret = url.split(\"$\");\r\n    //HostPrintUTF8(url);\r\n    return ret;\r\n}\r\n\r\nbool PlaylistCheck(const string & in path)\r\n{\r\n    array < string > temp = path.split(\"#\");\r\n    isOnly = false;\r\n    if(path.find(\"￥\")==0||path.find(\"$\")==0){\r\n        isOnly = true;\r\n    }\r\n    if(path.find(\"panvideo\") == 0)\r\n    {\r\n        return false;\r\n    }\r\n    if (path.find(\":\") < 0 && temp.size() < 4) \r\n    {\r\n        if(temp.length()>1){\r\n            if(parseInt(temp[1])<100){\r\n                RI = parseInt(temp[1])-1;\r\n                PG = 1;\r\n            }\r\n            else{\r\n                RI = parseInt(temp[1])/100-1;\r\n                PG = parseInt(temp[1])%100;\r\n            }\r\n        }\r\n        string name = temp[0];\r\n        name.replace(\"$\",\"\");\r\n        name.replace(\"￥\",\"\");\r\n        getHomeURL(name);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n\r\narray < dictionary > PlaylistParse(const string & in path)\r\n{\r\n    //HostOpenConsole();\r\n    array < dictionary > ret;\r\n    string tempstr,ids,orign = path.split(\"#\")[0];\r\n    JsonValue Itemlist;\r\n    JsonValue showList;\r\n\r\n    HostPrintUTF8(HOMEURL);\r\n    Itemlist = getPlayList();\r\n    \r\n    for (int i = 0; i < Itemlist.size(); i++) \r\n    {\r\n        ids = ids + Itemlist[i][\"vod_id\"].asString() + \",\";\r\n    }\r\n    showList = getItemdetail(ids);\r\n    for (int i = 0; i < showList.size(); i++) \r\n    {\r\n        string showName = showList[i][\"vod_name\"].asString();\r\n        if(isOnly && (\"$\"+showName != orign && \"￥\"+showName != orign))\r\n        {\r\n            HostPrintUTF8(showName);\r\n            continue;\r\n        }\r\n        array <string> showurl = handelUrlStr(showList[i][\"vod_play_url\"].asString());\r\n        dictionary item;\r\n        for (int j = 0; j < showurl.size(); j++)\r\n        {\r\n            if(showurl[j]==\"\")\r\n            {\r\n                continue;\r\n            }\r\n            else if(showurl[j].find(\"http\") < 0)\r\n            {\r\n                item[\"title\"] = \"【资源\"+(RI+1)+\"】\"+showName +\" \"+ showurl[j];\r\n            }\r\n            else if(showurl[j].find(\"m3u8\") > 0)\r\n            {\r\n                item[\"url\"] = showurl[j];\r\n                ret.insertLast(item);   \r\n            }\r\n        }\r\n    }\r\n    return ret;\r\n}\r\n"
  },
  {
    "path": "README.md",
    "content": "# PotplayerM3U8\n\n## 简介\n\n- 小型在线看视频网站寿命都比较短，网址经常更换，网站广告，播放器不好用。  \n- 所以我们跳过中间商，直接查找它们引用的资源站资源。***请勿相信视频中的广告，造成损失概不负责***。\n\n## 用法\n\n- 1.安装[【Potplayer】](https://bleu.lanzoue.com/iFZgu07w69vg)密码：`3mk7`。\n- 2.下载`MediaPlayParse - M3U8.as`文件。\n- 3.打开PotPlayer安装路径，依次选择目录`Extension\\Media\\PlayParse`，将下载的文件粘贴到这里。\n- 4.重新打开`PotPlayer`,`Ctrl+u`，文本框输入影视名称（豆瓣中文名），`确定`。\n\n## 影视名称的几种写法\n\n- 1.`西游记`\n  > 使用第一个资源站（默认），查找跟`西游记`相关的影视\n\n- 2.`西游记#3`\n  > 使用第三个资源站，查找跟`西游记`相关的影视\n\n- 3.`￥西游记#3`\n  > 使用第三个资源站，查找名字是`西游记`的影视\n\n- 4.`$西游记#3`\n  > 同第三种用法\n\n  ![资源站图片](https://github.com/Bleu404/PotplayerM3U8/blob/main/resource.png)\n  \n## 手动添加资源站\n    保证支持CMS采集，数据格式是json,填写到上图的数组中，注意其中标点为英文。\n    上图第三个资源站api接口：https://help.tiankongapi.com/#More\n"
  }
]