1+ /*
2+ @header ({
3+ searchable: 2,
4+ filterable: 0,
5+ quickSearch: 1,
6+ title: '凤凰FM',
7+ lang: 'dr2'
8+ })
9+ */
10+
11+ globalThis . h_ost = 'https://s.fm.renbenai.com' ;
12+ var rule = {
13+ title : '凤凰FM' ,
14+ host : h_ost ,
15+ url : '/fm/read/fmd/android/600/getProgramList.html&cid=fyclass&pagenum=fypage' ,
16+ homeUrl : '/fm/read/fmd/static/categoryTvGet_100.html' ,
17+ detailUrl : '/fm/read/fmd/android/getProgramAudioList_620.html&pid=fyid' ,
18+ searchUrl : '/fm/read/fmd/public/search_720.html&keyWord=**&searchType=1&pageNum=fypage' ,
19+ searchable : 2 ,
20+ quickSearch : 1 ,
21+ filterable : 0 ,
22+ headers : {
23+ 'User-Agent' : 'okhttp/3.12.11' ,
24+ 'Cookie' : 'KLBRSID=9b9dd35888924d7c870dd3474e89cab6|1753290568|1753290499'
25+ } ,
26+ play_parse : true ,
27+ search_match : true ,
28+ class_parse : $js . toString ( ( ) => {
29+ let html = request ( input ) ;
30+ let classes = [ ] ;
31+ let data = JSON . parse ( html ) . data . list [ 0 ] . channelContent ;
32+ data . forEach ( ( it ) => {
33+ let typeName = it . nodeName ;
34+ let typeId = it . id ;
35+ classes . push ( {
36+ type_name : typeName ,
37+ type_id : typeId ,
38+ } ) ;
39+ } ) ;
40+ input = classes ;
41+ } ) ,
42+ 一级 : $js . toString ( ( ) => {
43+ let d = [ ] ;
44+ let html = request ( input ) ;
45+ let data = JSON . parse ( html ) . data . hotList ;
46+ data . forEach ( item => {
47+ let title = item . programName ;
48+ if ( ! / 名 称 | 排 除 / . test ( title ) ) {
49+ d . push ( {
50+ title : title ,
51+ desc : item . resourceTitle ,
52+ img : item . img640_640 ,
53+ url : item . id ,
54+ } ) ;
55+ }
56+ } ) ;
57+ setResult ( d ) ;
58+ } ) ,
59+ 二级 : $js . toString ( ( ) => {
60+ let html = request ( input ) ;
61+ let list = JSON . parse ( html ) . data . list ;
62+ VOD = {
63+ vod_name : list [ 0 ] [ 'title' ] || '暂无名称' ,
64+ type_name : list [ 0 ] [ 'vod_class' ] || '暂无类型' ,
65+ vod_pic : list [ 0 ] [ 'img370_370' ] || '暂无图片' ,
66+ vod_remarks : list [ 0 ] [ 'tags' ] || '暂无备注' ,
67+ vod_content : list [ 0 ] [ 'programDetails' ] || '暂无剧情介绍'
68+ } ;
69+ let playlist = list [ 0 ] [ 'audiolist' ] ;
70+ let playForm = [ ] ;
71+ let playUrls = [ ] ;
72+ list . forEach ( item => {
73+ const title = item . title ;
74+ const firstUrl = item . audiolist && item . audiolist [ 0 ] ? item . audiolist [ 0 ] . filePath : '' ;
75+ playUrls . push ( `${ title } $${ firstUrl } ` ) ;
76+ } ) ;
77+ VOD . vod_play_from = '凤凰FM' ;
78+ VOD . vod_play_url = playUrls . join ( '#' ) ;
79+ } ) ,
80+ 搜索 : $js . toString ( ( ) => {
81+ let d = [ ] ;
82+ let html = request ( input ) ;
83+ let data = JSON . parse ( html ) . data . program ;
84+ if ( rule . search_match ) {
85+ data = data . filter ( it => {
86+ let title = it . programName ;
87+ return title && new RegExp ( KEY , "i" ) . test ( title ) ;
88+ } ) ;
89+ }
90+ data . forEach ( item => {
91+ let title = item . programName ;
92+ if ( ! / 名 称 | 排 除 / . test ( title ) ) {
93+ d . push ( {
94+ title : title ,
95+ desc : item . programName ,
96+ img : item . img640_640 ,
97+ url : item . id ,
98+ } ) ;
99+ }
100+ } ) ;
101+ setResult ( d ) ;
102+ } ) ,
103+ lazy : $js . toString ( ( ) => {
104+ input = {
105+ parse : 0 ,
106+ url : input
107+ } ;
108+ } ) ,
109+ }
0 commit comments