NobyDa / Script

This project is based on the scripting capabilities of several excellent iOS proxy tools (e.g. Surge, Quantumult X)
GNU General Public License v3.0
8.05k stars 3.19k forks source link

关于B站地区切换对于api返回title的判断 #405

Closed AisukaYuki closed 2 years ago

AisukaYuki commented 2 years ago

最近更新的部分番剧api返回的json,title不包含港澳台关键字。导致脚本无法判断,节点切到直连。 七月番之前api返回的title,都是正常的。 仅data→series→series_title,包含港澳台关键字。加一个对这个得判断应该能解决。(脚本不太会,我尝试写了一下,没成功。

IMG_5267ABC04BE8-1

如轉生賢者的異世界生活这部番api返回如下: "data":{ ............ "series":{ "series_id":6148, "series_title":"轉生賢者的異世界生活(僅港澳台地區)" }, ............. "title" : "轉生賢者的異世界生活", .............

{ "message" : "success", "data" : { "stat" : { "danmakus" : 2, "views" : 801, "favorites" : 422, "favorite" : 5, "followers" : "422追番", "share" : 3, "coins" : 9, "likes" : 201, "reply" : 37, "play" : "801播放" }, "alias" : "", "channel_entrance" : [ { "link" : "bilibili://home?bottom_tab_name=首页&tab_name=追番&tab_id=bangumi", "name" : "追番频道", "tag_report" : { "tag_type" : "1", "tag_type_name" : "追番频道" }, "bubble_text" : "点击看当季动画新作" } ], "show_season_type" : 1, "publish" : { "is_finish" : 0, "is_started" : 1, "pub_time_show" : "07月04日20:00", "time_length_show" : "更新至第1话,全12话", "pub_time" : "2022-07-04 20:00:00", "weekday" : 0, "release_date_show" : "2022年7月4日开播", "unknow_pub_date" : 0 }, "areas" : [ ], "producer_title" : "相关UP主", "play_strategy" : { "recommend_show_strategy" : 1, "strategies" : [ "common_section-formal_first_ep", "common_section-common_section", "common_section-next_season", "formal-finish-next_season", "formal-end-other_section", "formal-end-next_season", "ord" ], "auto_play_toast" : "即将播放:" }, "season_title" : "轉生賢者的異世界生活", "subtitle" : "已观看801次", "modules" : [ { "report" : { "season_type" : "1", "section_id" : "79665", "sec_title" : "选集", "section_type" : "0", "season_id" : "42084" }, "style" : "positive", "data" : { "episodes" : [ { "long_title" : "想守護鎮子了", "is_view_hide" : false, "status" : 2, "link" : "https://www.bilibili.com/bangumi/play/ep542662", "title" : "1", "pv" : 0, "duration" : 1423000, "pub_time" : 1656936000, "report" : { "season_type" : "1", "position" : "", "season_id" : "42084", "style" : "1", "aid" : "770597314", "epid" : "542662", "ep_title" : "1", "section_id" : "79665", "section_type" : "0" }, "vid" : "", "ep_index" : 1, "badge" : "", "badge_info" : { "text" : "受限", "bg_color" : "#999999", "bg_color_night" : "#727272" }, "badge_type" : 0, "share_copy" : "《轉生賢者的異世界生活》第1话 想守護鎮子了", "cover" : "http://i0.hdslb.com/bfs/archive/267e300091dadd7e8fdb1f4545a2f0126ab072bb.png", "aid" : 770597314, "share_url" : "https://www.bilibili.com/bangumi/play/ep542662", "short_link" : "https://b23.tv/ep542662", "cid" : 763491568, "id" : 542662, "stat" : { "likes" : 201, "reply" : 37, "play" : 801, "coin" : 9, "danmakus" : 2 }, "dimension" : { "width" : 1920, "rotate" : 0, "height" : 1080 }, "section_index" : 1, "release_date" : "", "subtitle" : "已观看801次", "from" : "bangumi", "bvid" : "BV1Mr4y1u7U3", "rights" : { "allow_dm" : 0, "allow_download" : 0, "allow_demand" : 0, "area_limit" : 1 } } ] }, "id" : 1, "more" : "", "title" : "选集", "module_style" : { "line" : 1, "hidden" : 0 } } ], "mode" : 2, "badge_info" : { "text" : "", "bg_color" : "#FB7299", "bg_color_night" : "#BB5B76" }, "detail" : "详情", "new_keep_activity_material" : { "activityId" : 58 }, "square_cover" : "http://i0.hdslb.com/bfs/bangumi/image/3fb2a093cfeaa45aa121e2b190f79abaa4660519.png", "staff" : { "title" : "制作信息", "info" : "原作  :進行諸島(GAノベル/SBクリエイティブ刊)\n角色原案:風花風花\n監督・角色設計:小嶋慶祐\n副監督 :鈴木清崇\n系列構成:福島直浩\n共同角色設計・總作畫監督:埼玉憲人\n總作畫監督:後藤圭佑\n色彩設計:竹澤 聡\n美術監督:平良亜以子(スタジオなや)\n攝影監督:小林俊介(サンジゲン)\n音響監督:田中亮\n音樂  :吟(BUSTED ROSE)\n音樂製作:ポニーキャニオン\n動畫製作:REVOROOT" }, "all_buttons" : { "watch_formal" : "看正片" }, "series" : { "series_id" : 6148, "series_title" : "轉生賢者的異世界生活(僅港澳台地區)" }, "media_id" : 28338451, "type" : 1, "styles" : [ ], "cover" : "http://i0.hdslb.com/bfs/bangumi/image/641b7e190a0401a67ad3537bea4193c3f5a054d3.png", "origin_name" : "重生賢者的奇幻世界生活", "user_status" : { "follow" : 0, "pay" : 0, "review" : { "is_open" : 1, "article_url" : "https://member.bilibili.com/article-text/mobile?media_id=28338451", "score" : 0 }, "follow_bubble" : 0, "sponsor" : 0, "vip" : 1, "vip_frozen" : 0, "follow_status" : 2, "pay_for" : 0 }, "payment" : { "dialog" : { }, "vip_promotion" : "", "price" : "0", "pay_type" : { "allow_ticket" : 0 }, "report_type" : 0, "tv_price" : "0", "vip_discount_price" : "0" }, "evaluate" : "《轉生賢者的異世界生活》故事描述,在黑心企業工作的社畜佐野裕司,一如往常把工作帶回家加班。工作途中,電腦螢幕上突然跳出陌生的視窗。\n  ──您被召喚到異世界了!\n  然後,裕司醒來看見的是,存在著狀態數值與技能的異世界。他在異世界取得了要當冒險者都成問題的爛職業「魔獸使」。……但是,他除了擁有魔獸使的力量外,還具備超世絕倫的魔法師才能。裕司和他收服為同伴的史萊姆,一個晚上就把世上無人能讀懂的魔導書全都融會貫通。他就這樣在不知不覺中,成為世界最強的魔法師,並且獲得了「賢者」這個第二職業。", "link" : "bilibili://pgc/media/28338451", "share_copy" : "《轉生賢者的異世界生活》意外成為世界最強!", "rights" : { "forbid_pre" : 0, "resource" : "", "allow_bp" : 0, "area_limit" : 1, "ban_area_show" : 4, "can_watch" : 1, "allow_download" : 0, "is_cover_show" : 0, "allow_bp_rank" : 0, "is_preview" : 0, "allow_review" : 0, "only_vip_download" : 0, "watch_platform" : 0, "freya_white" : 0, "copyright" : "bilibili" }, "status" : 2, "reserve" : { "tip" : "资源更新后WiFi或免流环境下将自动下载", "episodes" : [ ] }, "total" : 12, "refine_cover" : "http://i0.hdslb.com/bfs/bangumi/image/641b7e190a0401a67ad3537bea4193c3f5a054d3.png", "badge" : "", "record" : "", "type_name" : "番剧", "test_switch" : { "was_merge_exp" : false, "is_merge_preview_section" : true, "short_space_title_exp" : 0, "was_ios_pip_exp" : true, "channel_entrance_exp_action" : 1, "pugv_feed_exp" : { "section_id" : -2, "is_open" : true, "related_rcmd_card_hide_threshold" : 8, "more_link" : "bilibili://home?bottom_tab_name=首页&tab_name=追番&tab_id=bangumi", "title" : "更多推荐" }, "is_ogv_fav_exp" : true, "movie_mark_action" : 0, "was_pugv_style_optimize" : true, "mergeSeasonEpUpperExp" : 1 }, "premieres" : [ ], "earphone_conf" : { "sp_phones" : [ ] }, "short_link" : "https://b23.tv/ss42084", "type_desc" : "2022 | 番剧", "season_id" : 42084, "all_up_infos" : { }, "share_url" : "https://www.bilibili.com/bangumi/play/ss42084", "actor" : { "title" : "角色声优", "info" : "CAST\nユージ:小林千晃\nドライアド:和氣あず未\nスラ:遠野ひかる\nスラパッチ:菅野真衣\nマユスラ:三川華月\nスラハッパ:久遠エリサ\nヒゲスラ:大森日雅\nペケスラ:花井美春\nプラウドウルフ:高木渉" }, "title" : "轉生賢者的異世界生活", "dynamic_subtitle" : "意外成為世界最強!", "new_ep" : { "more" : "", "id" : 542662, "title" : "1", "desc" : "连载中", "is_new" : 1 }, "player_icon" : { "ctime" : 1618458522, "hash2" : "efc7337d62c9b1055aeb161a6dcd88fc", "hash1" : "4ce47f8c479987b22faa830740d11aba", "url1" : "http://i0.hdslb.com/bfs/garb/item/01d50259feae36a4c70602386498b4df697f890c.json", "url2" : "http://i0.hdslb.com/bfs/garb/item/4c3cabc67e6a527cc9c9088683b52b412c94753a.json" } }, "code" : 0 }

AisukaYuki commented 2 years ago

https://github.com/NobyDa/Script/blob/0ea7504242f11e563eb873f1575e0a79d69bbfc0/Surge/JS/Bili_Auto_Regions.js#L138 做了小小的修改,似乎可行了。 SwitchRegion(data.series?.series_title || data.title || (raw.code === -404 ? -404 : null))

~~上面的可行,但全部代码我没看,不知道会有影响,所以我目前是加了个if。测试下来,没什么问题。大佬你再看看。 if (data.series.series_title !== null ) { data.title = data.series.series_title; } SwitchRegion(data.title || (raw.code === -404 ? -404 : null))~~

发现有个bug,当api返回没有series_title的时候,log报undefined is not an object (evaluating 'data.series.series_title)

已解决报错问题,已提PR。

AisukaYuki commented 2 years ago

大概没问题,已提PR https://github.com/NobyDa/Script/pull/406

NobyDa commented 2 years ago

大概没问题,已提PR #406

应该尽量避免使用可选链之类的新语法,因为在iOS13.5以下会出问题