code:
{
  "author":"takagen99",
  "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",
  "homeUrl": "https://olevod.com",
  "dcVipFlag": "true",
  "pCfgJs": "https://olevod.com/static/js/playerconfig.js",
  "pCfgJsR": "[\\W|\\S|.]*?MacPlayerConfig.player_list[\\W|\\S|.]*?=([\\W|\\S|.]*?),MacPlayerConfig.downer_list",
  "dcShow2Vip": {},
  "dcPlayUrl": "true",
  "cateNode": "//ul[contains(@class,'top_nav clearfix')]//li/a[contains(@href,'type')and not(contains(@href,'5'))]",
  "cateName": "/text()",
  "cateId": "/@href",
  "cateIdR": "/index.php/vod/type/id/(\\d+).html",
  "cateManual": {
    "电影": "1",
    "国产剧": "202",
    "港台剧": "203",
    "欧美剧": "201",
    "日韩剧": "204",
    "综艺": "3",
    "日漫": "401",
    "国漫": "402",
    "欧美": "403",
    "动漫": "4"
  },

// Home Summary ================================================
  "homeVodNode": "//div[contains(@class, 'pannel')]//ul[contains(@class,'vodlist vodlist_wi list_v12 clearfix')]/li/a[contains(@class,'vodlist_thumb')]",
  "homeVodName": "/@title",
  "homeVodId": "/@href",
  "homeVodIdR": "/index.php/vod/detail/id/(\\w+).html",
  "homeVodImg": "/@data-original",
  "homeVodImgR": "\\S+(http\\S+)",
  "homeVodMark": "/span[@class='pic_text text_right']/em/text()",

// Category Summary ================================================
  "cateUrl": "https://olevod.com/index.php/vod/show{area}/id/{cateId}/page/{catePg}{year}.html",
  "cateVodNode": "//ul[contains(@class,'vodlist vodlist_wi')]//li//a[contains(@class,'vodlist_thumb')]",
  "cateVodName": "/@title",
  "cateVodId": "/@href",
  "cateVodIdR": "/index.php/vod/detail/id/(\\w+).html",
  "cateVodImg": "/@data-original",
  "cateVodImgR": "\\S+(http\\S+)",
  "cateVodMark": "/span[@class='pic_text text_right']/em/text()",

// Category Details ================================================
  "dtUrl": "https://olevod.com/index.php/vod/detail/id/{vid}.html",
  "dtNode": "//div[contains(@class,'hot_banner')]",
  "dtName": "//div[@class='content_box clearfix']/div/a/@title",
  "dtNameR": "",
  "dtImg": "//div[@class='content_box clearfix']/div/a/@data-original",
  "dtImgR": "\\S+(http\\S+)",
  "dtYear": "//div[contains(@class,'content_detail')]//span[contains(@class,'text_muted hidden_xs') and contains(text(), '年份')]/following-sibling::*/text()",
  "dtYearR": "",
  "dtArea": "//div[contains(@class,'content_detail')]//span[contains(@class,'text_muted hidden_xs') and contains(text(), '地区')]/following-sibling::*/text()",
  "dtAreaR": "",
  "dtCate": "//div[contains(@class,'content_detail')]//span[contains(@class,'text_muted hidden_xs') and contains(text(), '类型')]/following-sibling::*/text()",
  "dtCateR": "",
  "dtMark": "//div[contains(@class,'content_detail')]//span[contains(text(), '状态')]/following-sibling::*/text()",
  "dtMarkR": "",
  "dtActor": "//div[contains(@class,'content_detail')]//span[contains(text(), '主演')]/following-sibling::*/text()",
  "dtActorR": "",
  "dtDirector": "//div[contains(@class,'content_detail')]//span[contains(text(), '导演')]/following-sibling::*/text()",
  "dtDirectorR": "",
  "dtDesc": "///div[contains(@class,'content_detail')]//span[contains(@class,'left text_muted') and contains(text(), '简介')]/parent::text()",
  "dtDescR": "",

// Playlist =====================================================
  "dtFromNode": "//div[contains(@class,'play_source_tab')]/a",
  "dtFromName": "/@alt",
  "dtFromNameR": "",
  "dtUrlNode": "//div[contains(@class,'playlist_full')]/ul[contains(@class,'content_playlist clearfix')]",
  "dtUrlSubNode": "//li/a",
  "dtUrlId": "/@href",
  "dtUrlIdR": "/index.php/vod/play/id/(\\S+).html",
  "dtUrlName": "/text()",
  "dtUrlNameR": "",
  "playUrl": "https://olevod.com/index.php/vod/play/id/{playUrl}.html",
  "playUa": "",

// Search Results ================================================
  "searchUrl": "https://olevod.com/index.php/ajax/suggest?mid=1&wd={wd}&limit=10",
  "scVodNode": "json:list",
  "scVodName": "name",
  "scVodId": "id",
  "scVodIdR": "",
  "scVodImg": "pic",
  "scVodMark": "",

// Filters =======================================================
    "filter": {
      "1": [
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "大陆","v": "/area/大陆"},
            {"n": "香港","v": "/area/香港"},
            {"n": "台湾","v": "/area/台湾"},
            {"n": "美国","v": "/area/美国"},
            {"n": "英国","v": "/area/英国"},
            {"n": "日本","v": "/area/日本"},
            {"n": "韩国","v": "/area/韩国"},
            {"n": "泰国","v": "/area/泰国"},
            {"n": "印度","v": "/area/印度"},
            {"n": "法国","v": "/area/法国"},
            {"n": "加拿大","v": "/area/加拿大"},
            {"n": "西班牙","v": "/area/西班牙"},
            {"n": "德国","v": "/area/德国"},
            {"n": "俄罗斯","v": "/area/俄罗斯"},
            {"n": "意大利","v": "/area/意大利"},
            {"n": "新加坡","v": "/area/新加坡"},
            {"n": "马来西亚","v": "/area/马来西亚"},
            {"n": "其他","v": "/area/其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "2": [
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "大陆","v": "/area/大陆"},
            {"n": "香港","v": "/area/香港"},
            {"n": "台湾","v": "/area/台湾"},
            {"n": "美国","v": "/area/美国"},
            {"n": "英国","v": "/area/英国"},
            {"n": "日本","v": "/area/日本"},
            {"n": "韩国","v": "/area/韩国"},
            {"n": "泰国","v": "/area/泰国"},
            {"n": "其他","v": "/area/其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "202": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "203": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "201": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "204": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "3": [
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "大陆","v": "/area/大陆"},
            {"n": "香港","v": "/area/香港"},
            {"n": "台湾","v": "/area/台湾"},
            {"n": "美国","v": "/area/美国"},
            {"n": "英国","v": "/area/英国"},
            {"n": "日本","v": "/area/日本"},
            {"n": "韩国","v": "/area/韩国"},
            {"n": "泰国","v": "/area/泰国"},
            {"n": "其他","v": "/area/其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "401": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "402": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "403": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ],
      "4": [
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "大陆","v": "/area/大陆"},
            {"n": "香港","v": "/area/香港"},
            {"n": "台湾","v": "/area/台湾"},
            {"n": "美国","v": "/area/美国"},
            {"n": "英国","v": "/area/英国"},
            {"n": "日本","v": "/area/日本"},
            {"n": "韩国","v": "/area/韩国"},
            {"n": "泰国","v": "/area/泰国"},
            {"n": "其他","v": "/area/其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "/year/2022"},
            {"n": "2021","v": "/year/2021"},
            {"n": "2020","v": "/year/2020"},
            {"n": "2019","v": "/year/2019"},
            {"n": "2018","v": "/year/2018"},
            {"n": "2017","v": "/year/2017"},
            {"n": "2016","v": "/year/2016"},
            {"n": "2015","v": "/year/2015"},
            {"n": "2014","v": "/year/2014"},
            {"n": "2013","v": "/year/2013"},
            {"n": "2012","v": "/year/2012"},
            {"n": "2011","v": "/year/2011"},
            {"n": "2010","v": "/year/2010"},
            {"n": "2009","v": "/year/2009"},
            {"n": "2008","v": "/year/2008"},
            {"n": "2007","v": "/year/2007"},
            {"n": "2006","v": "/year/2006"},
            {"n": "2005","v": "/year/2005"},
            {"n": "2004","v": "/year/2004"}
          ]
        }
      ]
    }
}


dcVipFlag: true

dcPlayUrl: true

cateName: /text()

homeVodImgR: \S+(http\S+)

cateVodImgR: \S+(http\S+)

dtNode: //body

dtFromName: /text()

dtUrlName: /text()

scVodName: name

scVodId: id

scVodImg: pic

license: mit


电影: movie

连续剧: tv

动漫: dongman

综艺: zongyi

homeVodNode: //li[@class='fed-list-item fed-padding fed-col-xs4 fed-col-sm3 fed-col-md2']

dtName: //dd[@class='fed-deta-content fed-col-xs7 fed-col-sm8 fed-col-md10']/h1/a/span/text()

dtImgR: \S+(http\S+)


cateName: /div/text()

dtUrlNode: //ul[contains(@class, 'content_playlist flex wrap')]


cateNode: //ul[contains(@class,'stui-header__menu')]/li/a[contains(@href, 'sort') and not(contains(@href,'label'))]

dtDesc: //div[@class='stui-content__detail']//span[contains(@class,'data2') and contains(text(), '简介')]/parent::text()


code:
{
  "ua": "",
  "homeUrl": "https://www.pianku.la",
  "cateNode": "//ul[contains(@class,'myui-header__menu nav-menu')]/li[contains(@class, 'dropdown-hover')]//div/ul/li/a[contains(@href, 'list') and not(contains(@href,'label'))]",
  "cateName": "/text()",
  "cateId": "/@href",
  "cateIdR": "/list/(\\w+).html",
  "cateManual": {},
  "homeVodNode": "//div[contains(@class, 'padding-0')]//ul[contains(@class,'myui-vodlist')]/li//a[contains(@class,'myui-vodlist__thumb')]",
  "homeVodName": "/@title",
  "homeVodId": "/@href",
  "homeVodIdR": "/detail/(\\w+).html",
  "homeVodImg": "/@data-original",
  "homeVodImgR": "\\S+(http\\S+)",
  "homeVodMark": "/span[contains(@class,'pic-text')]/text()",
  "cateUrl": "https://www.pianku.la/list/{cateId}-{catePg}.html",
  "cateVodNode": "//ul[contains(@class,'myui-vodlist')]//li//a[contains(@class,'myui-vodlist__thumb')]",
  "cateVodName": "/@title",
  "cateVodId": "/@href",
  "cateVodIdR": "/detail/(\\w+).html",
  "cateVodImg": "/@data-original",
  "cateVodImgR": "\\S+(http\\S+)",
  "cateVodMark": "/span[contains(@class,'pic-text')]/text()",
  "dtUrl": "https://www.pianku.la/detail/{vid}.html",
  "dtNode": "//div[contains(@class,'col-md-wide-7')]",
  "dtName": "//div[@class='myui-content__thumb']/a[contains(@class,'myui-vodlist__thumb')]/@title",
  "dtNameR": "",
  "dtImg": "//div[@class='myui-content__thumb']/a[contains(@class,'myui-vodlist__thumb')]/img/@data-original",
  "dtImgR": "\\S+(http\\S+)",
  "dtCate": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '分类')]/following-sibling::*/text()",
  "dtCateR": "",
  "dtYear": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '年份')]/following-sibling::*/text()",
  "dtYearR": "",
  "dtArea": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '地区')]/following-sibling::*/text()",
  "dtAreaR": "",
  "dtMark": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '更新')]/following-sibling::*/text()",
  "dtMarkR": "",
  "dtActor": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '主演')]/following-sibling::*/text()",
  "dtActorR": "",
  "dtDirector": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '导演')]/following-sibling::*/text()",
  "dtDirectorR": "",
  "dtDesc": "//div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '简介')]/parent::text()",
  "dtDescR": "",
  "dtFromNode": "//a[@data-toggle='tab' and contains(@href, 'playlist')]",
  "dtFromName": "/text()",
  "dtFromNameR": "",
  //  "dtUrlNode": "//div[contains(@class,'tab-content')]//ul[contains(@id, 'playlist')]",
  "dtUrlNode": "//div[contains(@class,'tab-content')]/div[contains(@id, 'playlist')]",
  "dtUrlSubNode": "//li/a",
  "dtUrlId": "@href",
  "dtUrlIdR": "/play/(\\S+).html",
  "dtUrlName": "/text()",
  "dtUrlNameR": "",
  "playUrl": "https://www.pianku.la/play/{playUrl}.html",
  "playUa": "",
  "searchUrl": "https://www.pianku.la/index.php/ajax/suggest?mid=1&wd={wd}&limit=10",
  "scVodNode": "json:list",
  "scVodName": "name",
  "scVodId": "id",
  "scVodIdR": "",
  "scVodImg": "pic",
  "scVodMark": ""
}


cateNode: //ul[contains(@class,'myui-header__menu nav-menu')]/li[contains(@class, ' hidden-sm hidden-xs')]/a[contains(@href, 'vodtype')]

dtDesc: //div[@class='myui-content__detail']//span[contains(@class,'text-muted') and contains(text(), '简介')]/parent::text()

dtFromNode: //a[@data-toggle='tab' and contains(@href, 'playlist')]


author: 春风

电影: rrdy

连续剧: rrdsj

动漫: rrdm

综艺: rrzy

纪录片: rrjlp

国产剧: rrgcj

香港剧: rrxgj

台湾剧: rrtwj

韩剧: rrhgj

日剧: rrrbj

海外剧: rrhwj

动作片: rrdzp

喜剧片: rrxjp

爱情片: rraqp

科幻片: rrkhp

恐怖片: rrkbp

剧情片: rrjqp

战争片: rrzzp

国漫: rrdm/area/大陆

日漫: rrdm/area/日本

韩漫: rrdm/area/韩国

美漫: rrdm/area/美国

英漫: rrdm/area/英国

法漫: rrdm/area/法国


ua: Mozilla/5.0 (Android 12; Mobile; rv:68.0) Gecko/68.0 Firefox/99.0

dtUrlSubNode: /a


author: Shixue

dtNode: //div[@class='box view-heading']

dtYear: //div[@class='video-info']//span[contains(@class,'itemtitle') and contains(text(), '上映')]/following-sibling::div/text()

dtUrlName: /span/text()


type_name: 电影

type_id: dianying

type_name: 电视剧

type_id: dianshiju

type_name: 综艺

type_id: zongyi

type_name: 动漫

type_id: dongman

类型

key: type

n: 全部

n: 爱情

v: aiqing

n: 动画

v: donghua

n: 动作

v: dongzuo

n: 纪录片

v: jilupian

n: 惊悚

v: jingsong

n: 警匪

v: jingfei

n: 剧情

v: juqing

n: 科幻

v: kehuan

n: 恐怖

v: kongbu

n: 伦理

v: lunli

n: 奇幻

v: qihuan

n: 青春

v: qingchun

n: 微电影

v: weidianying

n: 文艺

v: wenyi

n: 武侠

v: wuxia

n: 喜剧

v: xiju

n: 悬疑

v: xuanyi

n: 音乐

v: yinyue

n: 灾难

v: zainan

n: 战争

v: zhanzheng

n: 其他

v: qita

地区

key: area

n: 韩国

v: hanguo

n: 内地

v: neidi

n: 香港

v: xianggang

n: 台湾

v: taiwan

n: 美国

v: meiguo

n: 欧洲

v: ouzhou

n: 法国

v: faguo

n: 日本

v: riben

n: 泰国

v: taiguo

年份

key: year

n: 更早

类型

n: 家庭

v: jiating

n: 军旅

v: junlv

n: 言情

v: yanqing

n: 古装

v: guzhuang

n: 偶像

v: ouxiang

n: 谍战

v: diezhan

n: 宫廷

v: gongting


国产剧: guochanju

港台剧: gangju

欧美剧: oumeiju

韩剧: hanju

日剧: riju

泰剧: taiju

动漫剧: dongmanju

国产电影: guochandy

港台电影: gangtaidy

日韩电影: rihandy

欧美电影: oumeidy

印度电影: yindudy

泰国电影: thaidy

动漫电影: dongmandy

纪录片: documentary

香港经典: xianggangdy


n: 全部

v: qingchun

n: 青春

v: wuxia

n: 武侠

v: xiju

n: 喜剧

v: xunayi

n: 悬疑

v: lishi

n: 历史

v: niandai

n: 年代

v: dushi

n: 都市

v: lunli

n: 伦理

v: jingfei

n: 警匪

v: kehuan

n: 科幻

v: dongzuo

n: 动作

v: nongcun

n: 农村

v: shenhua

n: 神话

v: zhanzheng

n: 战争

v: qingjing

n: 情景

v: jilupian

n: 纪录片

v: qita

n: 其他

地区

n: 韩国

v: xinjiapo

n: 新加坡

v: yingguo

n: 英国

v: qinggan

n: 情感

v: zhenrenxiu

n: 真人秀

v: fangtan

n: 访谈

v: xuanxiu

n: 选秀

v: gaoxiao

n: 搞笑

v: tuokouxiu

n: 脱口秀

v: jiaoyou

n: 交友

v: meishi

n: 美食

v: yinyue

n: 音乐

v: quyi

n: 曲艺

v: tiyu

n: 体育

v: qiuzhi

n: 求职


code:
{
    "author":"takagen99",
    "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",
    "homeUrl": "https://www.ttsp.tv/",
    "cateManual": {
        "电影": "1",
        "剧集": "2",
        "综艺": "3",
        "动漫": "4",
        "??": "61"
    },
    // Home Summary =====================================================
    "homeVodNode": "//ul[@class='vodlist vodlist_wi  clearfix']/li",
    "homeVodName": "/a/@title",
    "homeVodId": "/a/@href",
    "homeVodIdR": "/voddetail/(\\w+)",
    "homeVodImg": "/a/@data-original",
    "homeVodMark": "/a/span[3]/text()",
    // Category Summary =================================================
    "cateUrl": "https://www.ttsp.tv/vodshow/{cateId}-{area}-------{catePg}---{year}.html",
    "cateVodNode": "//li[contains(@class,'vodlist_item')]",
    "cateVodName": "/a/@title",
    "cateVodId": "/a/@href",
    "cateVodIdR": "/voddetail/(\\w+).html",
    "cateVodImg": "/a/@data-original",
    "cateVodMark": "/a/span[2]/text()",
    // Category Details =================================================
    "dtUrl": "https://www.ttsp.tv/voddetail/{vid}.html",
    "dtNode": "//div[contains(@class,'detail_list_box')]",
    "dtName": "//a[contains(@class,'vodlist_thumb')]/@title",
    "dtImg": "//a[contains(@class,'vodlist_thumb')]/@data-original",
    "dtCate": "//div[contains(@class,'content_detail content_min fl')]/ul/li[1]/a[3]/text()",
    "dtYear": "//div[contains(@class,'content_detail content_min fl')]/ul/li[1]/a[1]/text()",
    "dtArea": "//div[contains(@class,'content_detail content_min fl')]/ul/li[1]/a[2]/text()",
    "dtActor": "//div[contains(@class,'content_detail content_min fl')]/ul/li[4]/a[1]/text()",
    "dtMark": "//div[@class='stui-content__detail']/p[4]/text()",
    "dtDirector": "//div[contains(@class,'content_detail content_min fl')]/ul/li[5]/a[1]/text()",
    "dtDesc": "//div[contains(@class,'content_detail content_min fl')]/ul/li[6]",
    // Playlist =========================================================
    "dtFromNode": "//div[contains(@class,'play_source_tab')]/a",
    "dtFromName": "/@alt",
    "dtFromNameR": "(.+) \\(\\S+",
    "dtUrlNode": "//div[contains(@class,'playlist_notfull')]/ul", // number must match
    "dtUrlSubNode": "/li/a",
    "dtUrlId": "/@href",
    "dtUrlIdR": "/vodplay/(\\S+).html",
    "dtUrlName": "/text()",
    "playUrl": "https://www.ttsp.tv/vodplay/{playUrl}.html",
    "playUa": "",
    // Search Results ===================================================
    "searchUrl": "https://www.ttsp.tv/vodsearch/-------------.html?wd={wd}&submit=",
    "scVodNode": "//div[@class='searchlist_img']",
    "scVodName": "/a/@title",
    "scVodId": "/a/@href",
    "scVodIdR": "/voddetail/(\\w+).html",
    "scVodImg": "/a/@data-original",
    "scVodMark": "/a/span[2]/text()",
    // Filters ==========================================================
    "filter": {
        "1": [
          {
            "key": "area",
            "name": "地区",
            "value": [
              {"n": "全部","v": ""},
              {"n": "大陆","v": "大陆"},
              {"n": "香港","v": "香港"},
              {"n": "台湾","v": "台湾"},
              {"n": "美国","v": "美国"},
              {"n": "英国","v": "英国"},
              {"n": "日本","v": "日本"},
              {"n": "韩国","v": "韩国"},
              {"n": "泰国","v": "泰国"},
              {"n": "印度","v": "印度"},
              {"n": "其他","v": "其他"}
            ]
          },
          {
            "key": "year",
            "name": "年份",
            "value": [
              {"n": "全部","v": ""},
              {"n": "2022","v": "2022"},
              {"n": "2021","v": "2021"},
              {"n": "2020","v": "2020"},
              {"n": "2019","v": "2019"},
              {"n": "2018","v": "2018"},
              {"n": "2017","v": "2017"},
              {"n": "2016","v": "2016"},
              {"n": "2015","v": "2015"},
              {"n": "2014","v": "2014"},
              {"n": "2013","v": "2013"},
              {"n": "2012","v": "2012"},
              {"n": "2011","v": "2011"},
              {"n": "2010","v": "2010"},
              {"n": "2009","v": "2009"},
              {"n": "2008","v": "2008"},
              {"n": "2007","v": "2007"},
              {"n": "2006","v": "2006"},
              {"n": "2005","v": "2005"},
              {"n": "2004","v": "2004"}
            ]
          }
        ],
        "2": [
          {
            "key": "area",
            "name": "地区",
            "value": [
              {"n": "全部","v": ""},
              {"n": "大陆","v": "内地"},
              {"n": "香港","v": "香港"},
              {"n": "台湾","v": "台湾"},
              {"n": "美国","v": "美国"},
              {"n": "英国","v": "英国"},
              {"n": "日本","v": "日本"},
              {"n": "韩国","v": "韩国"},
              {"n": "泰国","v": "泰国"},
              {"n": "新加坡","v": "新加坡"},
              {"n": "其他","v": "其他"}
            ]
          },
          {
            "key": "year",
            "name": "年份",
            "value": [
              {"n": "全部","v": ""},
              {"n": "2022","v": "2022"},
              {"n": "2021","v": "2021"},
              {"n": "2020","v": "2020"},
              {"n": "2019","v": "2019"},
              {"n": "2018","v": "2018"},
              {"n": "2017","v": "2017"},
              {"n": "2016","v": "2016"},
              {"n": "2015","v": "2015"},
              {"n": "2014","v": "2014"},
              {"n": "2013","v": "2013"},
              {"n": "2012","v": "2012"},
              {"n": "2011","v": "2011"}
            ]
          }
        ],
        "3": [
          {
            "key": "area",
            "name": "地区",
            "value": [
              {"n": "全部","v": ""},
              {"n": "大陆","v": "内地"},
              {"n": "港台","v": "港台"},
              {"n": "日韩","v": "日韩"},
              {"n": "欧美","v": "欧美"}
            ]
          },
          {
            "key": "year",
            "name": "年份",
            "value": [
              {"n": "全部","v": ""},
              {"n": "2022","v": "2022"},
              {"n": "2021","v": "2021"},
              {"n": "2020","v": "2020"},
              {"n": "2019","v": "2019"},
              {"n": "2018","v": "2018"},
              {"n": "2017","v": "2017"},
              {"n": "2016","v": "2016"},
              {"n": "2015","v": "2015"},
              {"n": "2014","v": "2014"},
              {"n": "2013","v": "2013"},
              {"n": "2012","v": "2012"},
              {"n": "2011","v": "2011"}
            ]
          }
        ],
        "4": [
          {
            "key": "area",
            "name": "地区",
            "value": [
              {"n": "全部","v": ""},
              {"n": "大陆","v": "国产"},
              {"n": "日本","v": "日本"},
              {"n": "欧美","v": "欧美"},
              {"n": "其他","v": "其他"}
            ]
          },
          {
            "key": "year",
            "name": "年份",
            "value": [
              {"n": "全部","v": ""},
              {"n": "2022","v": "2022"},
              {"n": "2021","v": "2021"},
              {"n": "2020","v": "2020"},
              {"n": "2019","v": "2019"},
              {"n": "2018","v": "2018"},
              {"n": "2017","v": "2017"},
              {"n": "2016","v": "2016"},
              {"n": "2015","v": "2015"},
              {"n": "2014","v": "2014"},
              {"n": "2013","v": "2013"},
              {"n": "2012","v": "2012"},
              {"n": "2011","v": "2011"}
            ]
          }
        ]
      }
  }


dtYear: //div[@class='stui-content__detail']//span[contains(@class,'text-muted hidden-xs') and contains(text(), '年份')]/following-sibling::*/text()

dtArea: //div[@class='stui-content__detail']//span[contains(@class,'text-muted hidden-xs') and contains(text(), '地区')]/following-sibling::*/text()


code:
// https://wds.ecsxs.com/224261.json
{
    "author": "春风",
    "ua": "Mozilla/5.0 (Android 12; Mobile; rv:68.0) Gecko/68.0 Firefox/99.0",
    "homeUrl": "http://www.vip1280.net",
    "dcVipFlag": "true",
    "dcPlayUrl": "true",
    "cateManual": {
        "电影": "1",
        "国产剧": "2",
        "港台剧": "3",
        "日韩剧": "5",
        "欧美剧": "4",
        "泰剧": "22",
        "动作片": "6",
        "喜剧片": "11",
        "科幻片": "8",
        "爱情片": "7",
        "恐怖片": "9",
        "战争片": "10",
        "剧情片": "20",
        "动画片": "21"
    },
    "homeVodNode": "//div[@class='stui-pannel stui-pannel-bg clearfix'][position()>2]//div[@class='stui-vodlist__box']/a",
    "homeVodName": "/@title",
    "homeVodId": "/@href",
    "homeVodIdR": "/movie/(\\S+).html",
    "homeVodImg": "/@data-original",
    "homeVodImgR": "",
    "homeVodMark": "/span[@class='pic-text text-right']/text()",
    "cateUrl": "http://www.vip1280.net/frim/index{cateId}/page/{catePg}.html",
    "cateVodNode": "//div[@class='stui-vodlist__box']/a",
    "cateVodName": "/@title",
    "cateVodId": "/@href",
    "cateVodIdR": "/movie/(\\S+).html",
    "cateVodImg": "/@data-original",
    "cateVodImgR": "",
    "cateVodMark": "/span[@class='pic-text text-right']/text()",
    "dtUrl": "http://www.vip1280.net/movie/{vid}.html",
    "dtNode": "//body",
    "dtName": "//div[@class='stui-content__thumb']/a/@title",
    "dtNameR": "",
    "dtImg": "//div[@class='stui-content__thumb']/a/img/@data-original",
    "dtImgR": "",
    "dtCate": "//span[contains(text(), '类型')]/following-sibling::a/text()",
    "dtCateR": "",
    "dtYear": "//span[contains(text(), '年份')]/following-sibling::a/text()",
    "dtYearR": "",
    "dtArea": "//span[contains(text(), '地区')]/following-sibling::a/text()",
    "dtAreaR": "",
    "dtDirector": "//span[contains(text(), '导演')]/following-sibling::a/text()",
    "dtDirectorR": "",
    "dtActor": "//span[contains(text(), '主演')]/following-sibling::a/text()",
    "dtActorR": "",
    "dtDesc": "//span[contains(@class,'detail-content')]/text()",
    "dtDescR": "",
    "dtFromNode": "//div[contains(@class,'stui-pannel__head')]/h3",
    "dtFromName": "/text()",
    "dtFromNameR": "",
    "dtUrlNode": "//ul[@class='stui-content__playlist clearfix']",
    "dtUrlSubNode": "/li/a",
    "dtUrlId": "@href",
    "dtUrlIdR": "/play/(\\S+).html",
    "dtUrlName": "/text()",
    "dtUrlNameR": "",
    "playUrl": "http://www.vip1280.net/play/{playUrl}.html",
    "playUa": "",
    "searchUrl": "http://www.vip1280.net/search.html?wd={wd}&submit=",
    "scVodNode": "//a[contains(@class,'v-thumb')]",
    "scVodName": "/@title",
    "scVodId": "/@href",
    "scVodIdR": "/movie/(\\S+).html",
    "scVodImg": "/@data-original",
    "scVodMark": "/span[@class='pic-text text-right']/text()"
}


cateName: /spam/text()

dtImg: //div[@class='s-cover box']/a/img/@src

dtFromName: [substring-before(text(),'(')]


author: zhao xiaoyun

电影: dianying

剧集: juji

纪录片: jilupian

dtArea: //span[contains(@class,'text-muted') and contains(text(), '地区')]/following-sibling::a/text()

dtDirector: //span[contains(@class,'text-muted') and contains(text(), '导演')]/following-sibling::*/text()

dtActor: //span[contains(@class,'text-muted') and contains(text(), '主演')]/following-sibling::*/text()

dtYear: //span[contains(@class,'text-muted') and contains(text(), '年份')]/following-sibling::a/text()

dtMark: //span[contains(@class,'text-muted') and contains(text(), '集数')]/following-sibling::*/text()


homeVodIdR: /detail/(\w+)/

cateVodIdR: /detail/(\w+)/

dtCate: //span[contains(@class,'text-muted') and contains(text(), '类型')]/following-sibling::*/text()

dtArea: //span[contains(@class,'text-muted') and contains(text(), '地区')]/following-sibling::*/text()

dtYear: //span[contains(@class,'text-muted') and contains(text(), '年份')]/following-sibling::*/text()


cateNode: //ul[contains(@class,'myui-header__menu nav-menu')]/li[contains(@class, ' hidden-sm hidden-xs')]/a[contains(@href, 'vodtype') and not(contains(@href,'label'))]


homeVodIdR: /xvideo/(\w+)/

类型

key: catelog

n: 全部

n: 喜剧

v: 喜剧

n: 爱情

v: 爱情

n: 恐怖

v: 恐怖

n: 动作

v: 动作

n: 科幻

v: 科幻

n: 剧情

v: 剧情

n: 战争

v: 战争

n: 警匪

v: 警匪

n: 犯罪

v: 犯罪

n: 动画

v: 动画

n: 奇幻

v: 奇幻

n: 武侠

v: 武侠

n: 冒险

v: 冒险

n: 枪战

v: 枪战

n: 悬疑

v: 悬疑

n: 惊悚

v: 惊悚

n: 经典

v: 经典

n: 青春

v: 青春

n: 文艺

v: 文艺

n: 微电影

v: 微电影

n: 古装

v: 古装

n: 历史

v: 历史

n: 运动

v: 运动

n: 农村

v: 农村

n: 儿童

v: 儿童

n: 网络电影

v: 网络电影

n: 大陆

v: 大陆

n: 香港

v: 香港

n: 台湾

v: 台湾

n: 美国

v: 美国

n: 法国

v: 法国

v: 英国

n: 日本

v: 日本

v: 韩国

n: 德国

v: 德国

n: 泰国

v: 泰国

n: 印度

v: 印度

n: 意大利

v: 意大利

n: 西班牙

v: 西班牙

n: 加拿大

v: 加拿大

v: 其他

排序

key: by

n: 时间


dtNode: //div[@class='vod-detail ']


code:
{
    "author": "ajk",
    "ua": "",
    // 首页地址 用于获取 分类和首页推荐
    "homeUrl": "https://www.xqmi.top",
    // 手动设置分类，如果手动设置了分类则不使用上面的分类xpath获取分类  例如 "cateManual": {"电影": "1", "电视剧": "2"},
    "cateManual": {
        "推荐": "0",
        "电影": "1",
        "电视剧": "2",
        "综艺": "3",
        "动漫": "4",
        "国产剧": "13",
        "港台剧": "14",
        "日韩剧": "15",
        "欧美剧": "16",
        "动作片": "6",
        "喜剧片": "7",
        "爱情片": "8",
        "科幻片": "9",
        "恐怖片": "10",
        "剧情片": "11",
        "战争片": "12"
    },
    // 首页推荐视频的节点
    "homeVodNode": "//ul[@class='stui-vodlist clearfix']/li/a",
    // 首页推荐视频的名称
    "homeVodName": "/@title",
    // 二次处理正则
    "homeVodNameR": "",
    // 首页推荐视频的id
    "homeVodId": "/@href",
    // 二次处理正则
    "homeVodIdR": "/id/(\\w+).html",
    // 首页推荐视频的图片
    "homeVodImg": "/@data-original",
    // 二次处理正则
    "homeVodImgR": "",
    // 首页推荐视频的简介
    "homeVodMark": "/span[@class='pic-text text-right']/text()",
    // 二次处理正则
    "homeVodMarkR": "",
    // 分类页地址 {cateId} 分类id {catePg} 当前页
    "cateUrl": "https://www.xqmi.top/index.php/vod/type/id/{cateId}/page/{catePg}.html",
    // 同上面的homeVod字段 分类列表中的视频信息
    "cateVodNode": "//ul[@class='stui-vodlist clearfix']/li/a",
    "cateVodName": "/@title",
    "cateVodId": "/@href",
    "cateVodIdR": "/id/(\\w+).html",
    "cateVodImg": "/@data-original",
    "cateVodMark": "/span[@class='pic-text text-right']/text()",
    // 详情页地址 用于获取详情页信息 及 播放列表和地址
    "dtUrl": "https://www.xqmi.top/index.php/vod/play/id/{vid}.html",
    // 详情节点
    "dtNode": "//body",
    // 视频名
    "dtName": "//div[contains(@class,'video-title')]/h2[@class='title']/text()",
    "dtNameR": "",
    // 视频图片
    "dtImg": "//a[contains(@class,'stui-vodlist__thumb')][1]/@data-original",
    "dtImgR": "",
    // 视频分类
    "dtCate": "//span[contains(@class,'text-muted hidden-xs') and contains(text(), '类型：')]/following-sibling::*/text()",
    "dtCateR": "",
    // 视频年份
    "dtYear": "//span[contains(@class,'text-muted hidden-xs') and contains(text(), '年份：')]/following-sibling::*/text()",
    // 视频简介
    "dtDesc": "//div[contains(@class,'stui-content__desc col-pd clearfix')]/text()",
    "dtDescR": "",
    // 播放源节点
    "dtFromNode": "//div[contains(@class,'tabs')]/ul[@class='t-ul']",
    // 播放源名称 多个重名播放源
    "dtFromName": "concat('播放源',count(parent::*/preceding::*//div[contains(@class,'tabs')]/ul[@class='t-ul']) + 1)",
    // 二次处理正则
    "dtFromNameR": "(\\S+).0",
    // 播放列表节点
    "dtUrlNode": "//div[contains(@class,'tabs')]/div//ul",
    // 播放地址节点
    "dtUrlSubNode": "/li/a",
    // 播放地址
    "dtUrlId": "/@href",
    // 二次处理正则
    "dtUrlIdR": "/index.php/vod/play/id/(\\S+).html",
    // 剧集名称
    "dtUrlName": "/text()",
    // 二次处理正则
    "dtUrlNameR": "",
    // 播放页面的地址 {playUrl} 对应上面 dtUrlId 获取到的地址
    "playUrl": "https://www.xqmi.top/index.php/vod/play/id/{playUrl}.html",
    // 解析webview的user-agent
    "playUa": "",
    // 搜索地址
    "searchUrl": "https://www.xqmi.top/index.php/vod/search.html?wd={wd}",
    // 同上面的homeVod字段 搜索结果中的视频信息, 这里有对苹果cms suggest搜索接口的特殊支持，参考示例中的极品影视
    "scVodNode": "//ul[@class='stui-vodlist clearfix']/li/a",
    "scVodName": "/@title",
    "scVodId": "/@href",
    "scVodIdR": "/id/(\\w+).html",
    "scVodImg": "/@data-original",
    "scVodMark": "/span[@class='pic-text text-right']/text()"
}


cateNode: //ul[@class='nav navbar-nav']/li/a[contains(@href,'whole') and not(contains(@href, '5'))]

dtUrlNode: //div[@class='row tv-js-list']

scVodMark: /a/span/text()


homeVodImgR: (http\S+)

cateVodImgR: (http\S+)

dtImgR: (http\S+)

scVodImgR: (http\S+)

类型

key: cateId

n: 全部类型

n: 动作片

n: 喜剧片

n: 爱情片

n: 科幻片

n: 恐怖片

n: 剧情片

n: 战争片

n: 悬疑片

n: 冒险片

n: 犯罪片

n: 奇幻片

n: 惊悚片

n: 青春片

n: 纪录片

n: 灾难片

n: 古装片

n: 动画片

剧情

key: class

n: 全部剧情

n: 喜剧

v: 喜剧

n: 爱情

v: 爱情

n: 恐怖

v: 恐怖

n: 动作

v: 动作

n: 科幻

v: 科幻

n: 剧情

v: 剧情

n: 战争

v: 战争

n: 警匪

v: 警匪

n: 犯罪

v: 犯罪

n: 动画

v: 动画

n: 奇幻

v: 奇幻

n: 武侠

v: 武侠

n: 冒险

v: 冒险

n: 枪战

v: 枪战

n: 悬疑

v: 悬疑

n: 惊悚

v: 惊悚

n: 经典

v: 经典

n: 青春

v: 青春

n: 文艺

v: 文艺

n: 微电影

v: 微电影

n: 古装

v: 古装

n: 历史

v: 历史

n: 运动

v: 运动

v: 农村

v: 儿童

地区

n: 全部

n: 韩国


国产动漫: guochandongman

日本动漫: ribendongman

美国动漫: meiguodongman

动漫电影: movie

亲子动漫: qinzi

homeVodMark: /p[contains(text(),'最新')]/a/text()

cateVodMark: /p[contains(text(),'最新')]/a/text()

dtNode: //div[@class='fire l']

dtName: //div[@class='thumb l']/img/@alt

dtImg: //div[@class='thumb l']/img/@src


code:
{
  "author":"takagen99",
  "ua": "",
  "homeUrl": "http://www.yinghuacd.com",
  "cateManual": {
    "国漫": "china",
    "日本": "japan",
    "美国": "american"
  },

// Home Summary ====================================================
  "homeVodNode": "//div[@class='img']/ul/li",
  "homeVodName": "/p[@class='tname']/a/text()",
  "homeVodNameR": "",
  "homeVodId": "/a/@href",
  "homeVodIdR": "/show/(\\w+).html",
  "homeVodImg": "/a/img/@src",
  "homeVodImgR": "",
  "homeVodMark": "/p[contains(text(),'最新')]/a/text()",
  "homeVodMarkR": "",

// Category Summary ================================================
  "cateUrl": "http://www.yinghuacd.com/{cateId}/{catePg}.html",
  "cateVodNode": "//div[@class='lpic']/ul/li",
  "cateVodName": "/a/img/@alt",
  "cateVodId": "/a/@href",
  "cateVodIdR": "/show/(\\w+).html",
  "cateVodImg": "/a/img/@src",
  "cateVodMark": "/span/font/text()",

// Category Details ================================================
  "dtUrl": "http://www.yinghuacd.com/show/{vid}.html",
  "dtNode": "//div[@class='fire l']",
  "dtName": "//div[@class='thumb l']/img/@alt",
  "dtNameR": "",
  "dtImg": "//div[@class='thumb l']/img/@src",
  "dtImgR": "",
  "dtCate": "//div[@class='sinfo']//label[contains(text(),'类型')]/parent::*/a/text()",
  "dtCateR": "",
  "dtYear": "//div[@class='sinfo']//label[contains(text(),'上映')]/parent::*/a/text()",
  "dtYearR": "",
  "dtArea": "//div[@class='sinfo']//label[contains(text(),'地区')]/parent::*/a/text()",
  "dtAreaR": "",
  "dtMark": "//div[@class='sinfo']/p/text()",
  "dtMarkR": "",
  "dtDesc": "//div[@class='info']/text()",
  "dtDescR": "",

// Playlist ========================================================
  "dtFromNode": "//div[contains(@class,'tabs')]/ul[@class='menu0']/li",
  "dtFromName": "/text()",
  "dtUrlNode": "//div[contains(@class,'movurl')]/ul",
  "dtUrlSubNode": "/li/a",
  "dtUrlId": "@href",
  "dtUrlIdR": "/v/(\\S+).html",
  "dtUrlName": "/text()",
  "dtUrlNameR": "",
  "playUrl": "http://www.yinghuacd.com/v/{playUrl}.html",
  "playUa": "",

// Search Results ==================================================
  "searchUrl": "http://www.yinghuacd.com/search/{wd}",
  "scVodNode": "//div[@class='lpic']/ul/li",
  "scVodName": "/a/img/@alt",
  "scVodId": "/a/@href",
  "scVodIdR": "/show/(\\w+).html",
  "scVodImg": "/a/img/@src",
  "scVodMark": "//font[@class='red']/text()"
}


code:
{
  "author": "takagen99",
  "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
  "homeUrl": "https://ysjdm.net/index.php/vod/show/id/20.html",

  "dcVipFlag": "true",
  "pCfgJs": "https://ysjdm.net/static/js/playerconfig.js",
  "pCfgJsR": "[\\W|\\S|.]*?MacPlayerConfig.player_list[\\W|\\S|.]*?=([\\W|\\S|.]*?),MacPlayerConfig.downer_list",
  "dcShow2Vip": {},
  "dcPlayUrl": "true",

  "cateNode": "//li/a[contains(@href,'class')]",
  "cateName": "/text()",
  "cateId": "/@href",
  "cateIdR": "/index.php/vod/show/(\\S+)/id/20.html",
  "cateManual": {
    "日漫": "area/日本",
    "国漫": "area/中國"
  },

  // Home Summary =====================================================
  "homeVodNode": "//ul[contains(@class,'vodlist')]/li",
  "homeVodName": "/a/@title",
  "homeVodId": "/a/@href",
  "homeVodIdR": "/index.php/vod/detail/id/(\\w+).html",
  "homeVodImg": "/a/@data-original",
  "homeVodMark": "/a/span[2]/text()",

  // Category Summary =================================================
  "cateUrl": "https://ysjdm.net/index.php/vod/show/{cateId}{type}/id/20/page/{catePg}{year}.html",
  "cateVodNode": "//ul[contains(@class,'vodlist')]/li",
  "cateVodName": "/a/@title",
  "cateVodId": "/a/@href",
  "cateVodIdR": "/index.php/vod/detail/id/(\\w+).html",
  "cateVodImg": "/a/@data-original",
  "cateVodMark": "/a/span[2]/text()",

  // Category Details =================================================
  "dtUrl": "https://ysjdm.net/index.php/vod/detail/id/{vid}.html",
  "dtNode": "//div[@class='detail_list_box']",
  "dtName": "//div[@class='content_thumb fl']/a/@title",
  "dtImg": "//div[@class='content_thumb fl']/a/@data-original",

  // Playlist =========================================================
  "dtFromNode": "//div[@class='play_source']",
  "dtFromName": "/div/a/@alt",
  "dtUrlNode": "//div[@id='playlistbox']",
  "dtUrlSubNode": "/ul/li/a",
  "dtUrlId": "/@href",
  "dtUrlIdR": "/index.php/vod/play/id/(\\S+).html",
  "dtUrlName": "/text()",
  "dtUrlNameR": "",
  "playUrl": "https://ysjdm.net/index.php/vod/play/id/{playUrl}.html",
  "playUa": "",

  // Search Results ===================================================
  "searchUrl": "https://ysjdm.net/index.php/ajax/suggest?mid=1&wd={wd}&limit=100",
  "scVodNode": "json:list",
  "scVodName": "name",
  "scVodId": "id",
  "scVodIdR": "",
  "scVodImg": "pic",
  "scVodMark": "",

  // Filters =======================================================
  "filter": {
    "area/日本": [
      {
        "key": "type",
        "name": "类型",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "OVA", "v": "/class/OVA" },
          { "n": "剧场版", "v": "/class/剧场版" },
          { "n": "无修", "v": "/class/BD无修" },
          { "n": "萝莉", "v": "/class/萝莉" },
          { "n": "学園", "v": "/class/学園" },
          { "n": "后宫", "v": "/class/后宫" },
          { "n": "恋爱", "v": "/class/恋爱" },
          { "n": "热血", "v": "/class/热血" },
          { "n": "神魔", "v": "/class/神魔" },
          { "n": "奇幻", "v": "/class/奇幻" },
          { "n": "治愈", "v": "/class/治愈" },
          { "n": "搞笑", "v": "/class/搞笑" },
          { "n": "百合", "v": "/class/百合" },
          { "n": "冒险", "v": "/class/冒险" },
          { "n": "魔法", "v": "/class/魔法" },
          { "n": "机战", "v": "/class/机战" },
          { "n": "战争", "v": "/class/战争" },
          { "n": "犯罪", "v": "/class/犯罪" },
          { "n": "悬疑", "v": "/class/悬疑" },
          { "n": "推理", "v": "/class/推理" },
          { "n": "科幻", "v": "/class/科幻" },
          { "n": "竞技", "v": "/class/竞技" },
          { "n": "运动", "v": "/class/运动" },
          { "n": "耽美", "v": "/class/耽美" },
          { "n": "其他", "v": "/class/其他" }
        ]
      },
      {
        "key": "year",
        "name": "年份",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "2023", "v": "/year/2023" },
          { "n": "2022", "v": "/year/2022" },
          { "n": "2021", "v": "/year/2021" },
          { "n": "2020", "v": "/year/2020" },
          { "n": "2019", "v": "/year/2019" },
          { "n": "2018", "v": "/year/2018" },
          { "n": "2017", "v": "/year/2017" },
          { "n": "2016", "v": "/year/2016" },
          { "n": "2015", "v": "/year/2015" },
          { "n": "2014", "v": "/year/2014" },
          { "n": "2013", "v": "/year/2013" },
          { "n": "2012", "v": "/year/2012" },
          { "n": "2011", "v": "/year/2011" },
          { "n": "2010", "v": "/year/2010" },
          { "n": "2009", "v": "/year/2009" },
          { "n": "2008", "v": "/year/2008" }
        ]
      }
    ],
    "area/中國": [
      {
        "key": "year",
        "name": "年份",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "2023", "v": "/year/2023" },
          { "n": "2022", "v": "/year/2022" },
          { "n": "2021", "v": "/year/2021" },
          { "n": "2020", "v": "/year/2020" },
          { "n": "2019", "v": "/year/2019" },
          { "n": "2018", "v": "/year/2018" },
          { "n": "2017", "v": "/year/2017" },
          { "n": "2016", "v": "/year/2016" },
          { "n": "2015", "v": "/year/2015" },
          { "n": "2014", "v": "/year/2014" },
          { "n": "2013", "v": "/year/2013" },
          { "n": "2012", "v": "/year/2012" },
          { "n": "2011", "v": "/year/2011" },
          { "n": "2010", "v": "/year/2010" },
          { "n": "2009", "v": "/year/2009" },
          { "n": "2008", "v": "/year/2008" }
        ]
      }
    ],
    "4": [
      // 动漫
      {
        "key": "area",
        "name": "地区",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "日本", "v": "/area/日本" },
          { "n": "中国", "v": "/area/国产" },
          { "n": "欧美", "v": "/area/欧美" },
          { "n": "其他", "v": "/area/其他" }
        ]
      },
      {
        "key": "year",
        "name": "年份",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "2022", "v": "/year/2022" },
          { "n": "2021", "v": "/year/2021" },
          { "n": "2020", "v": "/year/2020" },
          { "n": "2019", "v": "/year/2019" },
          { "n": "2018", "v": "/year/2018" },
          { "n": "2017", "v": "/year/2017" },
          { "n": "2016", "v": "/year/2016" },
          { "n": "2015", "v": "/year/2015" },
          { "n": "2014", "v": "/year/2014" },
          { "n": "2013", "v": "/year/2013" },
          { "n": "2012", "v": "/year/2012" },
          { "n": "2011", "v": "/year/2011" },
          { "n": "2010", "v": "/year/2010" },
          { "n": "2009", "v": "/year/2009" },
          { "n": "2008", "v": "/year/2008" }
        ]
      }
    ],
    "3": [
      // 综艺
      {
        "key": "area",
        "name": "地区",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "中国", "v": "/area/内地" },
          { "n": "港台", "v": "/area/港台" },
          { "n": "日韩", "v": "/area/日韩" },
          { "n": "欧美", "v": "/area/欧美" }
        ]
      },
      {
        "key": "year",
        "name": "年份",
        "value": [
          { "n": "全部", "v": "" },
          { "n": "2022", "v": "/year/2022" },
          { "n": "2021", "v": "/year/2021" },
          { "n": "2020", "v": "/year/2020" },
          { "n": "2019", "v": "/year/2019" },
          { "n": "2018", "v": "/year/2018" },
          { "n": "2017", "v": "/year/2017" },
          { "n": "2016", "v": "/year/2016" },
          { "n": "2015", "v": "/year/2015" },
          { "n": "2014", "v": "/year/2014" },
          { "n": "2013", "v": "/year/2013" },
          { "n": "2012", "v": "/year/2012" },
          { "n": "2011", "v": "/year/2011" },
          { "n": "2010", "v": "/year/2010" },
          { "n": "2009", "v": "/year/2009" },
          { "n": "2008", "v": "/year/2008" }
        ]
      }
    ]
  }
}


cateNode: //ul[@class='item nav-list clearfix']/li/a[contains(@href, 'id')]

dtFromNode: //ul[@class='nav nav-tabs active']/li/a


dtDesc: //span[@class='sketch content']/text()


homeVodMark: /text()

cateVodNode: //div[contains(@class, 'pannel clearfix')]//a[@class='vodlist_thumb lazyload']

dtFromName: text()


code:
{
  "author": "takagen99",
  "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",
  "homeUrl": "https://www.zxzjtv.com/",
  "cateManual": {
    "电影": "1",
    "美剧": "2",
    "韩剧": "3",
    "日剧": "4",
    "泰剧": "5",
    "动漫": "6"
  },
  // Home Summary ================================================
  "homeVodNode": "//div[@class='stui-vodlist__box']",
  "homeVodName": "/a/@title",
  "homeVodId": "/a/@href",
  "homeVodIdR": "/detail/(\\w+)",
  "homeVodImg": "/a/@data-original",
  "homeVodMark": "/a/span[@class='pic-text text-right']/text()",
  // Category Summary ================================================
  "cateUrl": "https://www.zxzjtv.com/vodshow/{cateId}-{area}--{class}-----{catePg}---{year}.html",
  "cateVodNode": "//ul[@class='stui-vodlist clearfix']/li/div[@class='stui-vodlist__box']",
  "cateVodName": "/a/@title",
  "cateVodId": "/a/@href",
  "cateVodIdR": "/detail/(\\w+).html",
  "cateVodImg": "/a/@data-original",
  "cateVodMark": "/a/span[@class='pic-text text-right']/text()",
  // Category Details ================================================
  "dtUrl": "https://www.zxzjtv.com/detail/{vid}.html",
  "dtNode": "//div[@class='stui-pannel__bd']",
  "dtName": "//div[@class='stui-content__thumb']/a/@title",
  "dtImg": "//div[@class='stui-content__thumb']/a/img/@data-original",
  "dtCate": "",
  "dtYear": "",
  "dtArea": "",
  "dtActor": "//div[@class='stui-content__detail']/p[2]/text()",
  "dtMark": "//div[@class='stui-content__detail']/p[4]/text()",
  "dtDirector": "//div[@class='stui-content__detail']/p[3]/text()",
  "dtDesc": "//span[@class='detail-sketch']/text()",
  // Playlist =====================================================
  //  "dtFromNode": "//div[@class='stui-vodlist__head' and not(contains(text(),'猜你喜欢'))]",
  //  "dtFromName": "//h3",    												// number must match
  "dtFromNode": "//h3",
  "dtFromName": "[substring-before(text(),'(')]",
  "dtFromNameR": "(.+) \\(\\S+",
  "dtUrlNode": "//ul[contains(@class,'stui-content__playlist clearfix')]", // number must match
  "dtUrlSubNode": "/li/a",
  "dtUrlId": "/@href",
  "dtUrlIdR": "/video/(\\S+).html",
  "dtUrlName": "/text()",
  "playUrl": "https://www.zxzjtv.com/video/{playUrl}.html",
  "playUa": "",
  // Search Results ================================================
  "searchUrl": "https://www.zxzjtv.com/search/-------------.html?wd={wd}&submit=",
  "scVodNode": "//div[@class='stui-vodlist__box']",
  "scVodName": "/a/@title",
  "scVodId": "/a/@href",
  "scVodIdR": "/detail/(\\w+).html",
  "scVodImg": "/a/@data-original",
  "scVodMark": "/a/span[@class='pic-text text-right']/text()",
  // Filters =======================================================
  "filter": {
      "1": [
        {
          "key": "class",
          "name": "剧情",
          "value": [
            {"n": "全部剧情","v": ""},
            {"n": "喜剧","v": "喜剧"},
            {"n": "爱情","v": "爱情"},
            {"n": "恐怖","v": "恐怖"},
            {"n": "动作","v": "动作"},
            {"n": "科幻","v": "科幻"},
            {"n": "剧情","v": "剧情"},
            {"n": "战争","v": "战争"},
            {"n": "警匪","v": "警匪"},
            {"n": "犯罪","v": "犯罪"},
            {"n": "动画","v": "动画"},
            {"n": "奇幻","v": "奇幻"},
            {"n": "冒险","v": "冒险"}
          ]
        },
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "大陆","v": "大陆"},
            {"n": "香港","v": "香港"},
            {"n": "台湾","v": "台湾"},
            {"n": "欧美","v": "欧美"},
            {"n": "韩国","v": "韩国"},
            {"n": "日本","v": "日本"},
            {"n": "泰国","v": "泰国"},
            {"n": "印度","v": "印度"},
            {"n": "俄罗斯","v": "俄罗斯"},
            {"n": "其他","v": "其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"},
            {"n": "2010","v": "2010"},
            {"n": "2009","v": "2009"},
            {"n": "2008","v": "2008"},
            {"n": "2007","v": "2007"},
            {"n": "2006","v": "2006"},
            {"n": "2005","v": "2005"},
            {"n": "2004","v": "2004"},
            {"n": "2003","v": "2003"},
            {"n": "2002","v": "2002"},
            {"n": "2001","v": "2001"},
            {"n": "2000","v": "2000"}
          ]
        }
      ],
      "2": [
        {
          "key": "class",
          "name": "剧情",
          "value": [
            {"n": "全部剧情","v": ""},
            {"n": "剧情","v": "剧情"},
            {"n": "喜剧","v": "喜剧"},
            {"n": "爱情","v": "爱情"},
            {"n": "动作","v": "动作"},
            {"n": "悬疑","v": "悬疑"},
            {"n": "恐怖","v": "恐怖"},
            {"n": "奇幻","v": "奇幻"},
            {"n": "惊悚","v": "惊悚"},
            {"n": "犯罪","v": "犯罪"},
            {"n": "科幻","v": "科幻"},
            {"n": "音乐","v": "音乐"},
            {"n": "其他","v": "其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"}
          ]
        }
      ],
      "3": [
        {
          "key": "class",
          "name": "剧情",
          "value": [
            {"n": "全部剧情","v": ""},
            {"n": "剧情","v": "剧情"},
            {"n": "喜剧","v": "喜剧"},
            {"n": "爱情","v": "爱情"},
            {"n": "动作","v": "动作"},
            {"n": "悬疑","v": "悬疑"},
            {"n": "恐怖","v": "恐怖"},
            {"n": "奇幻","v": "奇幻"},
            {"n": "惊悚","v": "惊悚"},
            {"n": "犯罪","v": "犯罪"},
            {"n": "科幻","v": "科幻"},
            {"n": "音乐","v": "音乐"},
            {"n": "其他","v": "其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"}
          ]
        }
      ],
      "4": [
        {
          "key": "class",
          "name": "剧情",
          "value": [
            {"n": "全部剧情","v": ""},
            {"n": "剧情","v": "剧情"},
            {"n": "喜剧","v": "喜剧"},
            {"n": "爱情","v": "爱情"},
            {"n": "动作","v": "动作"},
            {"n": "悬疑","v": "悬疑"},
            {"n": "恐怖","v": "恐怖"},
            {"n": "奇幻","v": "奇幻"},
            {"n": "惊悚","v": "惊悚"},
            {"n": "犯罪","v": "犯罪"},
            {"n": "科幻","v": "科幻"},
            {"n": "音乐","v": "音乐"},
            {"n": "其他","v": "其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"}
          ]
        }
      ],
      "5": [
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"}
          ]
        }
      ],
      "6": [
        {
          "key": "class",
          "name": "剧情",
          "value": [
            {"n": "全部剧情","v": ""},
            {"n": "情感","v": "情感"},
            {"n": "科幻","v": "科幻"},
            {"n": "热血","v": "热血"},
            {"n": "推理","v": "推理"},
            {"n": "搞笑","v": "搞笑"},
            {"n": "冒险","v": "冒险"},
            {"n": "萝莉","v": "萝莉"},
            {"n": "校园","v": "校园"},
            {"n": "动作","v": "动作"},
            {"n": "机战","v": "机战"},
            {"n": "运动","v": "运动"},
            {"n": "战争","v": "战争"},
            {"n": "少年","v": "少年"}
          ]
        },
        {
          "key": "area",
          "name": "地区",
          "value": [
            {"n": "全部","v": ""},
            {"n": "国产","v": "国产"},
            {"n": "日本","v": "日本"},
            {"n": "欧美","v": "欧美"},
            {"n": "其他","v": "其他"}
          ]
        },
        {
          "key": "year",
          "name": "年份",
          "value": [
            {"n": "全部","v": ""},
            {"n": "2022","v": "2022"},
            {"n": "2021","v": "2021"},
            {"n": "2020","v": "2020"},
            {"n": "2019","v": "2019"},
            {"n": "2018","v": "2018"},
            {"n": "2017","v": "2017"},
            {"n": "2016","v": "2016"},
            {"n": "2015","v": "2015"},
            {"n": "2014","v": "2014"},
            {"n": "2013","v": "2013"},
            {"n": "2012","v": "2012"},
            {"n": "2011","v": "2011"}
          ]
        }
      ]
    }
}


dtCate: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '类型')]/following-sibling::*/text()

dtArea: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '地区')]/following-sibling::*/text()

dtYear: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '年份')]/following-sibling::*/text()

dtActor: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '主演')]/following-sibling::*/text()

dtDirector: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '导演')]/following-sibling::*/text()

dtMark: //div[@class='stui-content__detail']//p[contains(@class,'data') and contains(text(), '更新')]/following-sibling::*/text()

剧情

n: 全部剧情

n: 喜剧

v: 喜剧

n: 爱情

v: 爱情

n: 恐怖

v: 恐怖

n: 动作

v: 动作

n: 科幻

v: 科幻

n: 剧情

v: 剧情

n: 战争

v: 战争

n: 警匪

v: 警匪

n: 犯罪

v: 犯罪

n: 大陆

v: 大陆

n: 香港

v: 香港

n: 台湾

v: 台湾

n: 欧美

v: 欧美

v: 韩国

n: 日本

v: 日本

n: 泰国

v: 泰国

n: 印度

v: 印度

n: 俄罗斯

v: 俄罗斯

n: 其他

v: 其他

n: 音乐

v: 音乐


code:
// https://wds.ecsxs.com/224259.json
{
    "author": "baddychen",
    "ua": "",
    "dcVipFlag": "true",
    "pCfgJs": "http://www.zzzlike.vip/static/js/playerconfig.js",
    "pCfgJsR": "[\\W|\\S|.]*?MacPlayerConfig.player_list[\\W|\\S|.]*?=([\\W|\\S|.]*?),MacPlayerConfig.downer_list",
    "dcShow2Vip": {},
    "dcPlayUrl": "true",
    "homeUrl": "http://www.zzzlike.vip",
    "cateNode": "//ul[@class='stui-header__menu type-slide']/li/a[contains(@href,'type')]",
    "cateName": "/text()",
    "cateId": "/@href",
    "cateIdR": "/vodtype/(\\d+).html",
    "cateManual": {},
    "homeVodNode": "//ul[@class='stui-vodlist clearfix']/li/div/a",
    "homeVodName": "/@title",
    "homeVodId": "/@href",
    "homeVodIdR": "/voddetail/(\\w+).html",
    "homeVodImg": "/@data-original",
    "homeVodImgR": "",
    "homeVodMark": "/span[2]/text()",
    "cateUrl": "http://www.zzzlike.vip/vodtype/{cateId}-{catePg}.html",
    "cateVodNode": "//ul[@class='stui-vodlist clearfix']/li/div/a",
    "cateVodName": "/@title",
    "cateVodId": "/@href",
    "cateVodIdR": "/voddetail/(\\w+).html",
    "cateVodImg": "/@data-original",
    "cateVodImgR": "",
    "cateVodMark": "/span[2]/text()",
    "dtUrl": "http://www.zzzlike.vip/voddetail/{vid}.html",
    "dtNode": "//body",
    "dtName": "//div[@class='stui-content__thumb']/a/@title",
    "dtNameR": "",
    "dtImg": "//div[@class='stui-content__thumb']/a/img/@data-original",
    "dtImgR": "",
    "dtCate": "//span[contains(text(),'类型')]/parent::p/text()[2]",
    "dtCateR": "",
    "dtYear": "//span[contains(text(),'年份')]/parent::p/text()[6]",
    "dtYearR": "",
    "dtArea": "//span[contains(text(),'地区')]/parent::p/text()[4]",
    "dtAreaR": "",
    "dtMark": "",
    "dtMarkR": "",
    "dtActor": "//span[contains(text(),'主演')]/following-sibling::*/text()",
    "dtActorR": "",
    "dtDirector": "//span[contains(text(),'导演')]/following-sibling::*/text()",
    "dtDirectorR": "",
    "dtDesc": "//span[@class='detail-content']/text()",
    "dtDescR": "",
    "dtFromNode": "//div[contains(@class, 'bottom-line')]/h3",
    "dtFromName": "/text()",
    "dtUrlNode": "//ul[@class='stui-content__playlist clearfix']",
    "dtUrlSubNode": "/li/a",
    "dtUrlId": "@href",
    "dtUrlIdR": "/vodplay/(\\S+).html",
    "dtUrlName": "/text()",
    "dtUrlNameR": "",
    "playUrl": "http://www.zzzlike.vip/vodplay/{playUrl}.html",
    "playUa": "",
    "searchUrl": "http://www.zzzlike.vip/index.php/ajax/suggest?mid=1&wd={wd}&limit=100",
    "scVodNode": "json:list",
    "scVodName": "name",
    "scVodId": "id",
    "scVodIdR": "",
    "scVodImg": "pic",
    "scVodMark": ""
}


code:
# Object files
*.o
*.ko
*.obj
*.elf

# Precompiled Headers
*.gch
*.pch

# Libraries
*.lib
*.a
*.la
*.lo

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib

# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex

# Debug files
*.dSYM/

*~

repo_name: lunasparklecaster/python

path: .gitignore

license: unknown


code:
Unit00-00-intro.md
Unit00-01-virtualbox-windows-mac-linux.md
Unit00-02-pkg.md
Unit00-03-pkg-hint.md
Unit00-04-zsh.md
Unit00-05-cli.md
Unit00-06-cli-hint.md
Unit01-00-basic-types.md
Unit01-01-basic-types-hint.md
Unit02-00-flow.md
Unit02-01-flow-hint.md
Unit03-00-functions-modules.md
Unit03-01-functions-modules-hint.md
Unit04-00-types-cont.md
Unit05-00.md
Unit06-00.md
Unit07-00.md
Unit08-00.md
Unit09-00.md
Unit10-00.md
Unit11-00.md
Unit12-00.md

path: HSO-Exercises/ORDER


code:
Unit 0 - Installing the development system
---

VirtualBox allows you to run a virtual machine no matter what your
host operating system is (Windows, Mac, Linux).  VirtualBox
will be used ot run Hypatia Software's FreeBSD virtual machine
image so that there is a standard system to do development on.

First install VirtualBox.  This will be different depending
on which host operating system you use.

References:

* [VirtualBox manual](https://www.virtualbox.org/manual/)
* [Hypatia Software FreeBSD Virtual Image](http://hypatiasoftware.org/developer-image/)
* [Python Tutorial](https://docs.python.org/3.3/tutorial/)

NEXT_SECTION:

  * Unit01-00-basic-types.md
  * Unit02-00-flow.md
  * Unit03-00-functions-modules.md
  * Unit04-00-types-cont.md


code:
Unit 0 - VirtualBox (Windows/Mac/Linux)
---

To get started, first download the data image we will use:

* [Hypatia Software FreeBSD Virtual Data Image](http://cdn.hypatiasoftware.org/hso-dev-image.vdi.zip)

Uncompress it to a directory and remember where it's located.

Now, go to the [VirtualBox.org](https://www.virtualbox.org/wiki/Downloads) website and
select the appropriate binary from the list provided.  Download and run the VirtualBox program.

* Create a new virtual machine by hitting the 'New' button in the upper left hand corner
* Choose a name (e.g. 'Sandbox') and make sure to selec the 'Type' as `BSD`  and 'Version' as `FreeBSD (64-bit)`
* Select a memory size that your computer can handle (128MB?)
* Select "Use an existing virtual hard drive file" and when prompted, select the uncompressed Hypatia Software virtual data image.
* Hit the 'Create' button.
* There should be a new machine listed to the left with text indicating that it's 'Powered Off'.
* Highlight the new machine listed on the left and hit the 'Start' button at the top.

The virtual machine should start to boot up and you're ready to go!


code:
Unit 0 - pkg
---

`pkg` is FreeBSD's package management suite.

### **Exercise**

  * Search for the package `figlet`
  * Install the package `figlet`
  * Run figlet and have it print out "hello"
  * Remove the package figlet


code:
Unit 0 - pkg
---

`pkg` is FreeBSD's package management suite.

### **Exercise**

  * Search for the package `figlet`
  * Install the package `figlet`
  * Run figlet and have it print out "hello"
  * Remove the package figlet

### Hints

    ~ pkg search figlet
    ...

    ~ sudo pkg install figlet
    ...

    ~ figlet "hello!"
     _          _ _       _
    | |__   ___| | | ___ | |
    | '_ \ / _ \ | |/ _ \| |
    | | | |  __/ | | (_) |_|
    |_| |_|\___|_|_|\___/(_)

    ~ sudo pkg remove figlet
    ...


code:
Unit 0 - Zsh (oh-my-zsh)
---

?


code:
Unit 0 - Command Line Interface (cli)
---

The command line provides a more advanced interface to interact
with the operating system.  Textual commands are entered in the "shell"
to issue various operations.

### **Exercises**

* Create a Python program to print out "Hello Python!" with the text editor and run it from the command line.
* list a directory
* show the current directory
* create a directory
* go into the newly created directory
* list the directory with hidden files
* print something out on the shell
* put something into a file
* show contents of file
* remove a file
* move a file


code:
Unit 0 - Command Line Interface (cli)
---

The command line provides a more advanced interface to interact
with the operating system.  Textual commands are entered in the "shell"
to issue various operations.

### **Exercises**

* Create a Python program to print out "Hello Python!" with the text editor and run it from the command line.
* list a directory
* show the current directory
* create a directory
* go into the newly created directory
* list the directory with hidden files
* print something out on the shell
* put something into a file
* show contents of file
* remove a file
* move a file

### Hints

Contents of `hello_python.py`:

    ~ cat hello_python.py
    print "Hello Python!"

Run `hello_python.py`:

    ~ python hello_python.py
    Hello Python!

List a directory:

    ~ ls

Print the directory:

    ~ pwd

Make a directory:

    ~ mkdir sandbox

Go into the newly created `sandbox` directory:

    ~ cd sandbox

List the hiddne files in the directory:

    ~ ls -la

Print out "hello" from the command line:

    ~ echo hello

Put the "hello" into a file:

    ~ echo hello > file.txt

Show the contents of the file:

    ~ cat file.txt

Remove the file:

    ~ rm file.txt

Move a file:

    ~ mv ../hello_python.py .


code:
Unit 1 - Exploring Python (Integers/Strings/Lists)
---

### **Excercise**

In a Python shell:

* Add, subtract, multiply, divide and exponentiate 9 and 3
* Concatenate "koala" and "bear" with a space in between them
* Put an integer list into a variable, add the second to the first and store it back into the first element
* Put a string list into a variable, concatenate the second to the first and store it back into the first element
* Append two new elements to the back of each list
* Remove the second and third element to create a new list

* Make a list with five elements, 'koalas', 'are', 'are', 'arr', 'cute'
* Extend the list with another list ['and', 'so', 'are', 'sloths']
* Append the string '!'
* Count the number of occurances of the word 'sloths', 'koalas', and the word 'are'
* Remove the first element whose value is 'are'
* Now count the number of occurances of the word 'sloths', 'koalas', and the word 'are'
* Pop the third element
* Create a string by joining all remaining elements and putting a space in between them

* Find the index of where the string 'sloths' occurs
* Create a new list with the third element, the two elements before the element 'sloths', and the element 'sloths'
* Reverse it and join them into a string with a space separator

* Create a list [10, 3, 1, 50, 10] and sort it

* Create a list of lists, one of strings and the other of strings.  Show the third elements in each.

### References

* [Basic Types in Python](https://docs.python.org/3.3/tutorial/introduction.html)
* [List Data Structures](https://docs.python.org/2/tutorial/datastructures.html)


code:
Unit 1 - Exploring Python (Integers/Strings/Lists)
---

### **Excercise**

In a Python shell:

* Add, subtract, multiply, divide and exponentiate 9 and 3
* Concatenate "koala" and "bear" with a space in between them
* Put an integer list into a variable, add the second to the first and store it back into the first element
* Put a string list into a variable, concatenate the second to the first and store it back into the first element
* Append two new elements to the back of each list
* Remove the second and third element to create a new list

* Make a list with five elements, 'koalas', 'are', 'are', 'arr', 'cute'
* Extend the list with another list ['and', 'so', 'are', 'sloths']
* Append the string '!'
* Count the number of occurances of the word 'sloths', 'koalas', and the word 'are'
* Remove the first element whose value is 'are'
* Now count the number of occurances of the word 'sloths', 'koalas', and the word 'are'
* Pop the third element
* Create a string by joining all remaining elements and putting a space in between them

* Find the index of where the string 'sloths' occurs
* Create a new list with the third element, the two elements before the element 'sloths', and the element 'sloths'
* Reverse it and join them into a string with a space separator

* Create a list [10, 3, 1, 50, 10] and sort it

* Create a list of lists, one of strings and the other of strings.  Show the third elements in each.

### References

* [Basic Types in Python](https://docs.python.org/3.3/tutorial/introduction.html)
* [List Data Structures](https://docs.python.org/2/tutorial/datastructures.html)

### **Hint**

Add, subtract, multiply, divide and exponentiate 9 and 3

    >>> 3**5
    243
    >>> 9+3
    12
    >>> 9 - 3
    6
    >>> 9 *3
    27
    >>> 9/3
    3
    >>> 9**3
    729

Find the quotient of 12512501 and 19761.  Find the remainder (modulo).

    >>> numerator = 12512501
    >>> denominator = 19761
    >>> numerator / denominator
    633
    >>> quotient = numerator / denominator
    >>> remainder = numerator % denominator
    >>> print quotient, remainder
    633 3788
    >>> denominator * quotient + remainder
    12512501

Concatenate "koala" and "bear" with a space in between them

    >>> "koala" + " " + "bear"
    'koala bear'

Put an integer list into a variable, add the second to the first and store it back into the first element

    >>> x = [ 2, 3, 5 ]
    >>> x
    [2, 3, 5]
    >>> x[0] = x[0] + x[1]
    >>> x
    [5, 3, 5]

Put a string list into a variable, concatenate the second and third to the first and store it back into the first element

    >>> y = [ "koala", " ", "bear" ]
    >>> y
    ['koala', ' ', 'bear']
    >>> y[0] = y[0] + y[1] + y[2]
    >>> y
    ['koala bear', ' ', 'bear']
    >>> y[0]
    'koala bear'

Append two new elements to the back of each list

    >>> y.append('s')
    >>> y.append(' are cute!')
    >>> y
    ['koala bear', ' ', 'bear', 's', ' are cute!']
    >>> ' ^-^ '.join(y)
    'koala bear ^-^   ^-^ bear ^-^ s ^-^  are cute!'

Remove the second and third elements

    >>> del y[1]
    >>> del y[2]
    >>> y
    ['koala bear', 'bear', ' are cute!']

Koalas and sloths:

    >>> z = [ 'koalas', 'are', 'are', 'arr', 'cute' ]
    >>> z
    ['koalas', 'are', 'are', 'arr', 'cute']
    >>> z.extend(['and', 'so', 'are', 'sloths'])
    >>> z
    ['koalas', 'are', 'are', 'arr', 'cute', 'and', 'so', 'are', 'sloths']
    >>> z.append('!')
    >>> z
    ['koalas', 'are', 'are', 'arr', 'cute', 'and', 'so', 'are', 'sloths', '!']
    >>> z.count("koalas")
    1
    >>> z.count("sloths")
    1
    >>> z.count("are")
    3
    >>> z.remove('are')
    >>> z
    ['koalas', 'are', 'arr', 'cute', 'and', 'so', 'are', 'sloths', '!']
    >>> z.count("are")
    2
    >>> z.pop(2)
    'arr'
    >>> z
    ['koalas', 'are', 'cute', 'and', 'so', 'are', 'sloths', '!']
    >>> " ".join(z)
    'koalas are cute and so are sloths !'

Creating new lists, reversing

    >>> i = z.index('sloths')
    >>> i
    6
    >>> w = z[2:3] + z[i-2:i+1]
    >>> w
    ['cute', 'so', 'are', 'sloths']
    >>> w.reverse()
    >>> w
    ['sloths', 'are', 'so', 'cute']
    >>> " ".join(w)
    'sloths are so cute'

Integer list and sorting

    >>> t = [10, 3, 1, 50, 10]
    >>> t
    [10, 3, 1, 50, 10]
    >>> t.sort()
    >>> t
    [1, 3, 10, 10, 50]

List of lists:

    >>> q = [["cute", "koala", "bears"], [3, 5, 7]]
    >>> q[0]
    ['cute', 'koala', 'bears']
    >>> q[1]
    [3, 5, 7]
    >>> q[0][2]
    'bears'
    >>> q[1][2]
    7


code:
Unit 2 - Flow
---

### **Exercise**

* For each element in the list ["koala", "koala", "koala", "sloth", "koala"], print it out with the string "s are cute!" appended to each.
* For each element in the list ["koala", "koala", "koala", "sloth", "koala"], print it out with the string "s are cute!" if it's a sloth and
  print "s are kinda cute" if it's a koala.

* While the list ["koala", "koala", "koala", "sloth", "koala"] is not empty, remove the first element and print it out
* While the list ["koala", "koala", "koala", "sloth", "koala"] is not empty, remove the first element but only print it out if it's a sloth

* Print out the numbers from 5 to 111
* Print out the numbers from 5 to 111 but only if they're divisible by 5 or 3 but not both.

### References

* [Python tutorial on Control Flow](https://docs.python.org/3.3/tutorial/controlflow.html)


code:
Unit 2 - Flow
---

### **Exercise**

* For each element in the list ["koala", "koala", "koala", "sloth", "koala"], print it out with the string "s are cute!" appended to each.
* For each element in the list ["koala", "koala", "koala", "sloth", "koala"], print it out with the string "s are cute!" if it's a sloth and
  print "s are kinda cute" if it's a koala.

* While the list ["koala", "koala", "koala", "sloth", "koala"] is not empty, remove the first element and print it out
* While the list ["koala", "koala", "koala", "sloth", "koala"] is not empty, remove the first element but only print it out if it's a sloth

* Print out the numbers from 5 to 111
* Print out the numbers from 5 to 111 but only if they're divisible by 5 or 3 but not both.

### References

* [Python tutorial on Control Flow](https://docs.python.org/3.3/tutorial/controlflow.html)

### **Hint**

    >>> mylist =  ["koala", "koala", "koala", "sloth", "koala"]
    >>> for v in mylist:
    ...     print v + "s are cute!"
    ...
    koalas are cute!
    koalas are cute!
    koalas are cute!
    sloths are cute!
    koalas are cute!

    >>> mylist = ["koala", "koala", "koala", "sloth", "koala"]
    >>> for v in mylist:
    ...     if v == "sloth":
    ...         print v + "s are cute!"
    ...     elif v == "koala":
    ...         print v + "s are kinda cute"
    ...     else:
    ...         print v + "s are ok"
    ...
    koalas are kinda cute
    koalas are kinda cute
    koalas are kinda cute
    sloths are cute!
    koalas are kinda cute

    >>> mylist = ["koala", "koala", "koala", "sloth", "koala"]
    >>> while len(mylist) > 0:
    ...     v = mylist.pop(0)
    ...     print v
    ...
    koala
    koala
    koala
    sloth
    koala

    >>> mylist = ["koala", "koala", "koala", "sloth", "koala"]
    >>> while len(mylist) > 0:
    ...     v = mylist.pop(0)
    ...     if v == "sloth":
    ...         print v
    ...
    sloth

    >>> for x in range(5,112):
    ...     print x
    ...
    5
    6
    7
    ...
    109
    110
    111

    >>> for x in range(5,112):
    ...     if ((x%5) == 0) and ((x%3) == 0):
    ...         pass
    ...     elif (x%5) == 0:
    ...         print x
    ...     elif (x%3) == 0:
    ...         print x
    ...
    5
    6
    9
    10
    12
    18
    ...


code:
Unit 3 - Functions and Modules
---

### **Exercise**

* Write a function to print out "koalas"
* Write a function that returns "sloths"
* Write a function that capitalizes the first letter of a string
* Write a function to square each element in an integer list
* Write a function to return a new list that has each element squared.

* Put these in a module and use them

### References

* [Functions (tutorial)](https://docs.python.org/3.3/tutorial/controlflow.html#defining-functions)
* [Modules (tutorial)](https://docs.python.org/3.3/tutorial/modules.html)


code:
Unit 3 - Functions and Modules
---

### **Exercise**

* Write a function to print out "koalas"
* Write a function that returns "sloths"
* Write a function that capitalizes the first letter of a string
* Write a function to square each element in an integer list
* Write a function to return a new list that has each element squared.

* Put these in a module and use them

### References

* [Functions (tutorial)](https://docs.python.org/3.3/tutorial/controlflow.html#defining-functions)
* [Modules (tutorial)](https://docs.python.org/3.3/tutorial/modules.html)

### **Hints**

    alas():
        print "koalas"

    def sloths():
        return "sloths"

    def capitalize(s):
        return s[0].upper() + s[1:]

    def square_elements(a):
        for k,v in enumerate(a):
            a[k] = v*v

    def return_square_elements(a):
        X = []
        for val in a:
            X.append(val*val)
        return X

Put these into a file called `mymodule.py`.  Then from another program or interactive
Python shell:

    >>> import mymodule
    >>> mymodule.koalas()
    koalas
    >>> v = mymodule.sloths()
    >>> print v
    sloths
    >>> print mymodule.capitalize("sloths")
    Sloths
    >>> a = [1,2,5,8]
    >>> mymodule.square_elements(a)
    >>> print a
    [1, 4, 25, 64]
    >>> mymodule.return_square_elements([1,2,5,8])
    [1, 4, 25, 64]


code:
Unit 4 - Types Continued
---

### References

* [Data Structures (tutorial)](https://docs.python.org/3.3/tutorial/datastructures.html)


code:
# Syllabus

Syllabus for Hypatia Software Organization
mentors, but others may find it useful, too!

This is an optional supplement to the syllabus found
here: https://goo.gl/lhcbao

You can view this syllabus online (`gh-pages`):
http://hypatia-software-org.github.io/syllabus

## Contributing

This repository uses our [AdventureDocs](https://github.com/hypatia-software-org/adventuredocs) software.

To compile:

```
python adocs.py HSO-Exercises syllabus.html
```


code:
module passport-service

go 1.23.1

require (
	github.com/andybalholm/brotli v1.1.0 // indirect
	github.com/gofiber/fiber/v2 v2.52.5 // indirect
	github.com/google/uuid v1.6.0 // indirect
	github.com/klauspost/compress v1.17.10 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	github.com/mattn/go-runewidth v0.0.16 // indirect
	github.com/rivo/uniseg v0.4.7 // indirect
	github.com/valyala/bytebufferpool v1.0.0 // indirect
	github.com/valyala/fasthttp v1.56.0 // indirect
	github.com/valyala/tcplisten v1.0.0 // indirect
	golang.org/x/sys v0.26.0 // indirect
)


code:
github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/klauspost/compress v1.17.10 h1:oXAz+Vh0PMUvJczoi+flxpnBEPxoER1IaAnU/NMPtT0=
github.com/klauspost/compress v1.17.10/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.56.0 h1:bEZdJev/6LCBlpdORfrLu/WOZXXxvrUQSiyniuaoW8U=
github.com/valyala/fasthttp v1.56.0/go.mod h1:sReBt3XZVnudxuLOx4J/fMrJVorWRiWY2koQKgABiVI=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=


code:
package main

import (
	"time"

	"github.com/gofiber/fiber/v2"
)

func main() {
	app := fiber.New()

	app.Get("/passports", func(c *fiber.Ctx) error {
		go func() {
			time.Sleep(2 * time.Second)
			println("Асинхронная задача завершена")
		}()

		return c.SendString("Запрос принят, задача выполняется в фоне!")
	})

	app.Get("/passports/:id", func(c *fiber.Ctx) error {
		return c.SendString("/passports/:id")
	})

	app.Post("/passports", func(c *fiber.Ctx) error {
		return c.SendString("post/passports")
	})

	app.Patch("/passports/:id", func(c *fiber.Ctx) error {
		return c.SendString("patch/passports/:id")
	})

	app.Delete("/passports/:id", func(c *fiber.Ctx) error {
		return c.SendString("delete/passports/:id")
	})

	app.Post("/passports/search", func(c *fiber.Ctx) error {
		return c.SendString("post/passports/search")
	})

	app.Listen(":3000")
}


code:
#Bridge meek 0.0.2.0:2 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
Bridge obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ iat-mode=1
Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0
Bridge obfs4 85.17.30.79:443 FC259A04A328A07FED1413E9FC6526530D9FD87A cert=RutxZlu8BtyP+y0NX7bAVD41+J/qXNhHUrKjFkRSdiBAhIHIQLhKQ2HxESAKZprn/lR3KA iat-mode=0
Bridge obfs4 192.99.11.54:443 7B126FAB960E5AC6A629C729434FF84FB5074EC2 cert=VW5f8+IBUWpPFxF+rsiVy2wXkyTQG7vEd+rHeN2jV5LIDNu8wMNEOqZXPwHdwMVEBdqXEw iat-mode=0
Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0
Bridge obfs4 109.105.109.165:10527 8DFCD8FB3285E855F5A55EDDA35696C743ABFC4E cert=Bvg/itxeL4TWKLP6N1MaQzSOC6tcRIBv6q57DYAZc3b2AzuM+/TfB7mqTFEfXILCjEwzVA iat-mode=1
Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0
Bridge obfs4 37.218.240.34:40035 88CD36D45A35271963EF82E511C8827A24730913 cert=eGXYfWODcgqIdPJ+rRupg4GGvVGfh25FWaIXZkit206OSngsp7GAIiGIXOJJROMxEqFKJg iat-mode=1
Bridge obfs4 216.252.162.21:46089 0DB8799466902192B6C7576D58D4F7F714EC87C1 cert=XPUwcQPxEXExHfJYX58gZXN7mYpos7VNAHbkgERNFg+FCVNzuYo1Wp+uMscl3aR9hO2DRQ iat-mode=0
Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1
Bridge obfs4 38.229.1.78:80 C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg iat-mode=1
Bridge obfs4 109.105.109.147:13764 BBB28DF0F201E706BE564EFE690FE9577DD8386D cert=KfMQN/tNMFdda61hMgpiMI7pbwU1T+wxjTulYnfw+4sgvG0zSH7N7fwT10BI8MUdAD7iJA iat-mode=2
Bridge obfs4 83.212.101.3:50002 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0
Bridge obfs4 [2001:470:b381:bfff:216:3eff:fe23:d6c3]:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1

repo_name: saeb/tormux

path: polha


code:
#!/bin/bash
echo "lets install some packages:golang git curl fribidi tor torsocks"
apt update
apt upgrade -y
pkg install git golang curl fribidi tor torsocks -y
bash -c "$(curl -fsSL https://bit.ly/tormux)"


code:
#!/bin/bash
apt update
apt upgrade -y
apt install -y tor torsocks obfs4proxy curl
torhome=$HOME/.tor
localtorrc=$torhome/torrc
localnotices=$torhome/notices.log
localdebuglog=$torhome/debug.log
localbridges=$torhome/bridges
myshell=$HOME"/."`echo $SHELL|rev|cut -d/ -f 1|rev`"rc"
socksport=2510
mkdir $torhome 2>>/dev/null
mv $localtorrc $localtorrc.bak 2>>/dev/null
touch $localtorrc 2>>/dev/null
touch $localnotices 2>>/dev/null
touch $localdebuglog 2>>/dev/null
echo "#https://www.torproject.org/docs/faq#torrc">>$localtorrc
echo "RunAsDaemon 1">>$localtorrc
echo Log notice file $localnotices>>$localtorrc
#echo Log debug file $localdebuglog>>$localtorrc
echo SocksPort $socksport>>$localtorrc
echo "UseBridges 1" >> $localtorrc
echo ClientTransportPlugin obfs4 exec `which obfs4proxy` >>\
	$localtorrc
#echo ClientTransportPlugin meek  exec $bindir/meek-client >>\
#	$localtorrc
echo NumCPUs 1 >> $localtorrc
curl  -s -Lv https://69b.ir/P -o $localbridges
echo %include $localbridges>>$localtorrc
if [ `grep -wc "$PREFIX/etc/tor/torrc" -e "^%include $localtorrc"` -eq 0 ];then
	echo %include $localtorrc>>$PREFIX/etc/tor/torrc
fi
#autorun tor
if [ ! -f $myshell ]; then
    touch $myshell
fi
if [ `grep -wc "$myshell" -e obfscount ` -eq 0 ];then
	echo -e "\
	obfscount=\`ps aux|grep -c obfs4proxy\`\n
	if [ \$obfscount -gt 1 ];then\n
		 \techo \"tor is running\"\n

	else\n
		\ttor\n

	fi" >> $myshell
	echo "for see torlog u can use \'torlog\' command"
	echo "alias torlog=\"tail -f $localnotices\"">>$myshell
	echo "alias polbede=\"curl   -L https://bit.ly/polha -o $localbridges;
	 cat $localbridges \"">>$myshell
fi
echo -e "\n\n\n\n"
echo "lets set telegram proxy, when telegram opened chose enable"

sleep 5
tor
termux-open-url "https://t.me/socks?server=127.0.0.1&port=$socksport"
echo finished
echo "https://sae13.ir"


code:
docs/changelog.txt -crlf
docs/cycles_and_commands.txt -crlf
docs/idle_direction_oddities.txt -crlf
docs/macro.txt -crlf
docs/port.txt -crlf
docs/push_and_transport.txt -crlf
docs/WIPHelp.txt -crlf
config.txt -crlf

repo_name: pgimeno/megazeux

path: .gitattributes


code:
arch/mingw/pefix.d
arch/mingw/pefix.exe
arch/mingw/pefix.o
build
contrib/gdm2s3m/src/.build/
contrib/icons/.build/
contrib/libmodplug/src/.build/
contrib/unzip/src/.build/
core.dll
libcore.so
editor.dll
libeditor.so
megazeux.exe
megazeux
mzxrun.exe
mzxrun
platform.inc
src/.build/
src/config.h
src/editor/.build/
src/network/.build/
src/utils/.build/
src/utils/checkres.exe
src/utils/checkres
src/utils/downver.exe
src/utils/downver
src/utils/hlp2txt.exe
src/utils/hlp2txt
src/utils/txt2hlp.exe
src/utils/txt2hlp
src/utils/png2smzx.exe
src/utils/png2smzx
stdout.txt
stderr.txt
*.mzx
*.sav
*.mzm


code:
##
# MegaZeux Build System (GNU Make)
#
# NOTE: This build system was recently re-designed to not use recursive
#       Makefiles. The rationale for this is documented here:
#                  http://aegis.sourceforge.net/auug97.pdf
##

#
# Remove all built-in rules.
#
.SUFFIXES:
ifeq ($(filter -r,$(MAKEFLAGS)),)
MAKEFLAGS += -r
endif

.PHONY: clean help_check mzx mzx.debug build build_clean source

-include platform.inc
include version.inc

all: mzx
debuglink: all mzx.debug

-include arch/${PLATFORM}/Makefile.in

CC      ?= gcc
CXX     ?= g++
AR      ?= ar
STRIP   ?= strip --strip-unneeded
OBJCOPY ?= objcopy
PEFIX   ?= true

CHMOD   ?= chmod
CP      ?= cp
HOST_CC ?= gcc
LN      ?= ln
MKDIR   ?= mkdir
MV      ?= mv
RM      ?= rm

SDL_CFLAGS  ?= `sdl-config --cflags`
SDL_LDFLAGS ?= `sdl-config --libs`

VORBIS_CFLAGS  ?= -I${PREFIX}/include -DOV_EXCLUDE_STATIC_CALLBACKS
ifneq (${TREMOR},1)
VORBIS_LDFLAGS ?= -L${PREFIX}/lib -lvorbisfile -lvorbis -logg
else
VORBIS_LDFLAGS ?= -L${PREFIX}/lib -lvorbisidec
endif

MIKMOD_CFLAGS  ?= -I${PREFIX}/include
MIKMOD_LDFLAGS ?= -L${PREFIX}/lib -lmikmod

ZLIB_CFLAGS  ?= -I${PREFIX}/include
ZLIB_LDFLAGS ?= -L${PREFIX}/lib -lz

ifeq (${LIBPNG},1)
LIBPNG_CFLAGS  ?= `libpng-config --cflags`
LIBPNG_LDFLAGS ?= `libpng-config --ldflags`
endif

PTHREAD_LDFLAGS ?= -lpthread

OPTIMIZE_CFLAGS ?= -O2

ifeq (${DEBUG},1)
#
# Disable the optimizer for "true" debug builds
#
CFLAGS   = -O0 -DDEBUG
CXXFLAGS = -O0 -DDEBUG
else
#
# Optimized builds have assert() compiled out
#
CFLAGS   += ${OPTIMIZE_CFLAGS} -DNDEBUG
CXXFLAGS += ${OPTIMIZE_CFLAGS} -DNDEBUG
endif

#
# Android headers are busted and we get too many warnings..
#
ifneq (${PLATFORM},android)
CFLAGS   += -Wundef -Wunused-macros
CXXFLAGS += -Wundef -Wunused-macros
endif

#
# Always generate debug information; this may end up being
# stripped (on embedded platforms) or objcopy'ed out.
#
CFLAGS   += -g -W -Wall -Wno-unused-parameter -std=gnu99
CFLAGS   += -Wdeclaration-after-statement ${ARCH_CFLAGS}
CXXFLAGS += -g -W -Wall -Wno-unused-parameter -std=gnu++98
CXXFLAGS += -fno-exceptions -fno-rtti ${ARCH_CXXFLAGS}
LDFLAGS  += ${ARCH_LDFLAGS}

ifeq (${shell ${CC} -dumpversion | cut -d. -f1},4)

ifeq (${DEBUG},1)
CFLAGS   += -fbounds-check
CXXFLAGS += -fbounds-check
endif

#
# We enable pedantic warnings here, but this ends up turning on some things
# we must disable by hand.
#
# Variadic macros are arguably less portable, but all the compilers we
# support have them.
#
# The "long long" type is only used in one platform's header files, and we
# don't use it at all in MegaZeux (even if we did it's quite portable).
#
ifneq (${PLATFORM},android)
CFLAGS   += -pedantic -Wno-variadic-macros -Wno-long-long
CXXFLAGS += -pedantic -fpermissive -Wno-variadic-macros -Wno-long-long
endif

ifneq (${PLATFORM},mingw)

#
# Symbols in COFF binaries are implicitly hidden unless exported; this
# flag just confuses GCC and must be disabled.
#
CFLAGS   += -fvisibility=hidden
CXXFLAGS += -fvisibility=hidden

#
# Skip the stack protector on embedded platforms; it just unnecessarily
# slows things down, and there's no easy way to write a convincing
# __stack_chk_fail function.
#
ifeq ($(or ${BUILD_GP2X},${BUILD_NDS},${BUILD_PSP},${BUILD_WII}),)
ifneq (${PLATFORM},android)
CFLAGS   += -fstack-protector-all
CXXFLAGS += -fstack-protector-all
endif
endif

endif
endif

#
# We don't want these commands to be echo'ed in non-verbose mode
#
ifneq (${V},1)
override V:=

CC      := @${CC}
CXX     := @${CXX}
AR      := @${AR}
STRIP   := @${STRIP}
OBJCOPY := @${OBJCOPY}
PEFIX   := @${PEFIX}

CHMOD   := @${CHMOD}
CP      := @${CP}
HOST_CC := @${HOST_CC}
LN      := @${LN}
MKDIR   := @${MKDIR}
MV      := @${MV}
RM      := @${RM}
endif

build_clean:
	$(if ${V},,@echo "  RM      " build)
	${RM} -r build

source: build/${TARGET}src

build/${TARGET}src:
	${RM} -r build/${TARGET}
	${MKDIR} -p build/dist/source
	@git checkout-index -a --prefix build/${TARGET}/
	${RM} -r build/${TARGET}/scripts
	${RM} build/${TARGET}/.gitignore build/${TARGET}/.gitattributes
	@cd build/${TARGET} && make distclean
	@tar -C build -Jcf build/dist/source/${TARGET}src.tar.xz ${TARGET}

#
# The SUPPRESS_BUILD hack is required to allow the placebo "dist"
# Makefile to provide an 'all:' target, which allows it to print
# a message. We don't want to pull in other targets, confusing Make.
#
ifneq (${SUPPRESS_BUILD},1)

mzxrun = mzxrun${BINEXT}
mzx = megazeux${BINEXT}

mzx: ${mzxrun} ${mzx}
mzx.debug: ${mzxrun}.debug ${mzx}.debug

ifeq (${BUILD_MODPLUG},1)
BUILD_GDM2S3M=1
endif

%/.build:
	$(if ${V},,@echo "  MKDIR   " $@)
	${MKDIR} $@

%.debug: %
	$(if ${V},,@echo "  OBJCOPY " --only-keep-debug $< $@)
	${OBJCOPY} --only-keep-debug $< $@
	${PEFIX} $@
	${CHMOD} a-x $@
	$(if ${V},,@echo "  STRIP   " $<)
	${STRIP} $<
	$(if ${V},,@echo "  OBJCOPY " --add-gnu-debuglink $@ $<)
	${OBJCOPY} --add-gnu-debuglink=$@ $<
	${PEFIX} $<
	@touch $@

include src/Makefile.in

clean: mzx_clean

ifeq (${BUILD_UTILS},1)
include src/utils/Makefile.in
debuglink: utils utils.debug
clean: utils_clean
all: utils
endif

ifeq (${build},)
build := build/${SUBPLATFORM}
endif

build: ${build}

${build}:
	${MKDIR} -p ${build}/docs
	${MKDIR} -p ${build}/assets
	${CP} config.txt ${build}
	${CP} assets/default.chr assets/edit.chr ${build}/assets
	${CP} assets/smzx.pal ${build}/assets
	${CP} docs/COPYING.DOC docs/changelog.txt docs/port.txt ${build}/docs
	${CP} docs/macro.txt docs/keycodes.png ${build}/docs
	${CP} docs/platform_matrix.html ${build}/docs
	${CP} ${mzxrun} ${build}
	@if test -f ${mzxrun}.debug; then \
		cp ${mzxrun}.debug ${build}; \
	fi
ifeq (${BUILD_EDITOR},1)
	${CP} assets/ascii.chr assets/blank.chr ${build}/assets
	${CP} assets/smzx.chr ${build}/assets
	${CP} ${mzx} ${build}
	@if test -f ${mzx}.debug; then \
		cp ${mzx}.debug ${build}; \
	fi
endif
ifeq (${BUILD_HELPSYS},1)
	${CP} assets/help.fil ${build}/assets
endif
ifeq (${BUILD_MODULAR},1)
	${CP} ${core_target} ${editor_target} ${build}
	@if test -f ${core_target}.debug; then \
		cp ${core_target}.debug ${build}; \
	fi
	@if test -f ${editor_target}.debug; then \
		cp ${editor_target}.debug ${build}; \
	fi
endif
ifeq (${BUILD_UTILS},1)
	${MKDIR} ${build}/utils
	${CP} ${checkres} ${downver} ${build}/utils
	${CP} ${hlp2txt} ${txt2hlp} ${build}/utils
	${CP} ${png2smzx} ${build}/utils
	@if test -f ${checkres}.debug; then \
		cp ${checkres}.debug ${downver}.debug ${build}/utils; \
		cp ${hlp2txt}.debug  ${txt2hlp}.debug ${build}/utils; \
		cp ${png2smzx}.debug ${build}/utils; \
	fi
endif
ifeq (${BUILD_RENDER_GL_PROGRAM},1)
	${MKDIR} -p ${build}/assets/shaders/extra
	${CP} assets/shaders/*.vert ${build}/assets/shaders
	${CP} assets/shaders/*.frag ${build}/assets/shaders
	${CP} assets/shaders/extra/*.frag assets/shaders/extra/README.txt \
	 	${build}/assets/shaders/extra
endif

distclean: clean
	@echo "  DISTCLEAN"
	@rm -f src/config.h
	@echo "PLATFORM=none" > platform.inc

assets/help.fil: ${txt2hlp} docs/WIPHelp.txt
	@src/utils/txt2hlp docs/WIPHelp.txt $@

help_check: ${hlp2txt} assets/help.fil
	@src/utils/hlp2txt assets/help.fil help.txt
	@diff -q docs/WIPHelp.txt help.txt
	@rm -f help.txt

endif

path: Makefile