Rules-For-Quantumult-X/Scripts/AdBlock/Weibo/weibo.js

417 lines
17 KiB
JavaScript

const version = 'V2.0.122';
const mainConfig = {
isDebug: !1,
author: "ddgksf2013",
removeHomeVip: !0,
removeHomeCreatorTask: !0,
removeRelate: !0,
removeGood: !0,
removeFollow: !0,
modifyMenus: !0,
removeRelateItem: !1,
removeRecommendItem: !0,
removeRewardItem: !0,
removeLiveMedia: !0,
removeNextVideo: !1,
removePinedTrending: !0,
removeInterestFriendInTopic: !1,
removeInterestTopic: !1,
removeInterestUser: !0,
removeLvZhou: !0,
removeSearchWindow: !0,
profileSkin1: null,
profileSkin2: null,
tabIconVersion: 0,
tabIconPath: ""
}, itemMenusConfig = {
creator_task: !1,
mblog_menus_custom: !1,
mblog_menus_video_later: !0,
mblog_menus_comment_manager: !0,
mblog_menus_avatar_widget: !1,
mblog_menus_card_bg: !1,
mblog_menus_long_picture: !0,
mblog_menus_delete: !0,
mblog_menus_edit: !0,
mblog_menus_edit_history: !0,
mblog_menus_edit_video: !0,
mblog_menus_sticking: !0,
mblog_menus_open_reward: !0,
mblog_menus_novelty: !1,
mblog_menus_favorite: !0,
mblog_menus_promote: !0,
mblog_menus_modify_visible: !0,
mblog_menus_copy_url: !0,
mblog_menus_follow: !0,
mblog_menus_video_feedback: !0,
mblog_menus_shield: !0,
mblog_menus_report: !0,
mblog_menus_apeal: !0,
mblog_menus_home: !0
}, modifyCardsUrls = ["/cardlist", "video/community_tab", "/searchall"],
modifyStatusesUrls = ["statuses/friends/timeline", "statuses_unread_hot_timeline", "statuses/unread_friends_timeline", "statuses/unread_hot_timeline", "groups/timeline", "statuses/friends_timeline"],
otherUrls = {
"/profile/me": "removeHome",
"/statuses/extend": "itemExtendHandler",
"/video/remind_info": "removeVideoRemind",
"/checkin/show": "removeCheckin",
"/live/media_homelist": "removeMediaHomelist",
"/comments/build_comments": "removeComments",
"/container/get_item": "containerHandler",
"/profile/container_timeline": "userHandler",
"/video/tiny_stream_video_list": "nextVideoHandler",
"/2/statuses/video_mixtimeline": "nextVideoHandler",
"video/tiny_stream_mid_detail": "nextVideoHandler",
"/!/client/light_skin": "tabSkinHandler",
"/littleskin/preview": "skinPreviewHandler",
"/search/finder": "removeSearchMain",
"/search/container_timeline": "removeSearch",
"/search/container_discover": "removeSearch",
"/2/messageflow": "removeMsgAd",
"/2/page?": "removePage",
"/statuses/unread_topic_timeline": "topicHandler",
"/square&pageDataType/": "squareHandler",
"/statuses/container_timeline_topic": "removeMain",
"/statuses/container_timeline": "removeMainTab",
"wbapplua/wbpullad.lua": "removeLuaScreenAds",
"interface/sdk/sdkad.php": "removePhpScreenAds",
"ct=feed&a=trends": "removeTopics",
user_center: "modifiedUserCenter",
"a=get_coopen_ads": "removeIntlOpenAds",
"php?a=search_topic": "removeSearchTopic",
"v1/ad/realtime": "removeRealtimeAd",
"v1/ad/preload": "removeAdPreload",
"php?a=open_app": "removeAdBanner"
};
function getModifyMethod(e) {
for (let t of modifyCardsUrls) if (e.indexOf(t) > -1) return "removeCards";
for (let o of modifyStatusesUrls) if (e.indexOf(o) > -1) return "removeTimeLine";
for (let [i, a] of Object.entries(otherUrls)) if (e.indexOf(i) > -1) return a;
return null
}
function removeRealtimeAd(e) {
return delete e.ads, e.code = 4016, e
}
function removeAdBanner(e) {
return e.data.close_ad_setting && delete e.data.close_ad_setting, e.data.detail_banner_ad && (e.data.detail_banner_ad = []), e
}
function removeAdPreload(e) {
if (!e.ads) return e;
for (let t of (e.last_ad_show_interval = 86400, e.ads)) t.start_time = 2681574400, t.end_time = 2681660799, t.display_duration = 0, t.daily_display_cnt = 0, t.total_display_cnt = 0;
return e
}
function removeIntlOpenAds(e) {
return e.data && 0 !== e.data.length && (e.data.ad_list = [], e.data.gdt_video_ad_ios = [], e.data.display_ad = 0, e.data.ad_ios_id = null, e.data.app_ad_ios_id = null, e.data.reserve_ad_ios_id = "", e.data.reserve_app_ad_ios_id = "", e.data.ad_duration = 604800, e.data.ad_cd_interval = 604800, e.data.pic_ad = []), e
}
function removeSearchTopic(e) {
return e.data && 0 !== e.data.length && (e.data = Object.values(e.data).filter(e => "searchtop" != e.type)), e
}
function modifiedUserCenter(e) {
return e.data && 0 !== e.data.length && e.data.cards && (e.data.cards = Object.values(e.data.cards).filter(e => "personal_vip" != e.items[0].type)), e
}
function removeTopics(e) {
return e.data && (e.data.order = ["search_topic"]), e
}
function isAd(e) {
return !!e && ("广告" == e.mblogtypename || "热推" == e.mblogtypename || e.promotion?.type == "ad" || e.page_info?.actionlog?.source == "ad" || e.content_auth_info?.content_auth_title == "广告")
}
function squareHandler(e) {
return e.items, e
}
function removeMainTab(e) {
if (e.loadedInfo && e.loadedInfo.headers && delete e.loadedInfo.headers, !e.items) return e;
let t = [];
for (let o of e.items) isAd(o.data) || (o.data?.page_info?.video_limit && delete o.data.page_info.video_limit, o.data?.common_struct && delete o.data.common_struct, o.category ? "group" != o.category ? t.push(o) : -1 != JSON.stringify(o.items).indexOf("profile_top") && t.push(o) : t.push(o));
return e.items = t, log("removeMainTab success"), e
}
function removeMain(e) {
if (e.loadedInfo && e.loadedInfo.headers && delete e.loadedInfo.headers, !e.items) return e;
let t = [];
for (let o of e.items) if ("feed" == o.category) isAd(o.data) || t.push(o); else if ("group" == o.category) {
if (o.items.length > 0 && o.items[0].data?.itemid?.includes("search_input")) o.items = o.items.filter(e => e?.data?.itemid?.includes("mine_topics") || e?.data?.itemid?.includes("search_input") || e?.data?.card_type == 202), o.items[0].data.hotwords = [{
word: "搜索超话",
tip: ""
}], t.push(o); else {
if (o.items.length > 0 && o.items[0].data?.itemid?.includes("top_title")) continue;
o.items.length > 0 && (o.items = Object.values(o.items).filter(e => "feed" == e.category || "card" == e.category)), t.push(o)
}
} else {
if (o.data?.card_type && [202, 200].indexOf(o.data.card_type) > -1) continue;
t.push(o)
}
return e.items = t, log("removeMain success"), e
}
function topicHandler(e) {
let t = e.cards;
if (!t || !mainConfig.removeUnfollowTopic && !mainConfig.removeUnusedPart) return e;
let o = [];
for (let i of t) {
let a = !0;
if (i.mblog) {
let r = i.mblog.buttons;
mainConfig.removeUnfollowTopic && r && "follow" == r[0].type && (a = !1)
} else {
if (!mainConfig.removeUnusedPart) continue;
if ("bottom_mix_activity" == i.itemid) a = !1; else if (i?.top?.title == "正在活跃") a = !1; else if (200 == i.card_type && i.group) a = !1; else {
let n = i.card_group;
if (!n) continue;
if (["guess_like_title", "cats_top_title", "chaohua_home_readpost_samecity_title"].indexOf(n[0].itemid) > -1) a = !1; else if (n.length > 1) {
let d = [];
for (let s of n) -1 == ["chaohua_discovery_banner_1", "bottom_mix_activity"].indexOf(s.itemid) && d.push(s);
i.card_group = d
}
}
}
a && o.push(i)
}
return e.cards = o, log("topicHandler success"), e
}
function removeSearchMain(e) {
let t = e.channelInfo.channels;
if (!t) return e;
let o = [];
for (let i of t) i.payload && (removeSearch(i.payload), o.push(i));
return e.channelInfo.channels = o, log("remove_search main success"), e
}
function checkSearchWindow(e) {
return !!mainConfig.removeSearchWindow && "card" == e.category && (e.data?.itemid == "finder_window" || e.data?.itemid == "more_frame" || e.data?.card_type == 208 || e.data?.card_type == 247 || e.data?.card_type == 217 || e.data?.card_type == 101 || e.data?.card_type == 19 || e.data?.mblog?.page_info?.actionlog?.source?.includes("ad"))
}
function removeSearch(e) {
if (!e.items) return e;
let t = [];
for (let o of e.items) "feed" == o.category ? isAd(o.data) || (o.data?.page_info?.video_limit && delete o.data.page_info.video_limit, t.push(o)) : "group" == o.category ? (o.items = o.items.filter(e => e.data?.card_type === 17), o.items.length > 0 && t.push(o)) : checkSearchWindow(o) || t.push(o);
return e.items = t, e.loadedInfo && (e.loadedInfo.searchBarContent = [], e.loadedInfo.headerBack && (e.loadedInfo.headerBack.channelStyleMap = {})), log("remove_search success"), e
}
function removeMsgAd(e) {
if (!e.messages) return;
let t = [];
for (let o of e.messages) !o.msg_card?.ad_tag && t.push(o);
return e.messages = t, e
}
function removePage(e) {
return removeCards(e), mainConfig.removePinedTrending && e.cards && e.cards.length > 0 && e.cards[0].card_group && (e.cards[0].card_group = e.cards[0].card_group.filter(e => !(e?.actionlog?.ext?.includes("ads_word") || e?.itemid?.includes("t:51") || e?.itemid?.includes("ads_word")))), e
}
function removeCards(e) {
if (e.hotwords && (e.hotwords = []), !e.cards) return;
let t = [];
for (let o of e.cards) {
e.cardlistInfo?.containerid == "232082type=1" && (17 == o.card_type || 58 == o.card_type || 11 == o.card_type) && (o = {card_type: o.card_type + 1});
let i = o.card_group;
if (i && i.length > 0) {
let a = [];
for (let r of i) 118 == r.card_type || isAd(r.mblog) || -1 != JSON.stringify(r).indexOf("res_from:ads") || a.push(r);
o.card_group = a, t.push(o)
} else {
let n = o.card_type;
if ([9, 165].indexOf(n) > -1) isAd(o.mblog) || t.push(o); else {
if ([1007, 180].indexOf(n) > -1) continue;
t.push(o)
}
}
}
e.cards = t
}
function lvZhouHandler(e) {
if (!mainConfig.removeLvZhou || !e) return;
let t = e.common_struct;
if (!t) return;
let o = [];
for (let i of t) "绿洲" != i.name && o.push(i);
e.common_struct = o
}
function isBlock(e) {
let t = mainConfig.blockIds || [];
if (0 === t.length) return !1;
let o = e.user.id;
for (let i of t) if (i == o) return !0;
return !1
}
function removeTimeLine(e) {
for (let t of ["ad", "advertises", "trends", "headers"]) e[t] && delete e[t];
if (!e.statuses) return;
let o = [];
for (let i of e.statuses) isAd(i) || (lvZhouHandler(i), i.common_struct && delete i.common_struct, i.category ? "group" != i.category && o.push(i) : o.push(i));
e.statuses = o
}
function removeHomeVip(e) {
return e.header && e.header.vipView && (e.header.vipView = null), e
}
function removeVideoRemind(e) {
e.bubble_dismiss_time = 0, e.exist_remind = !1, e.image_dismiss_time = 0, e.image = "", e.tag_image_english = "", e.tag_image_english_dark = "", e.tag_image_normal = "", e.tag_image_normal_dark = ""
}
function itemExtendHandler(e) {
if ((mainConfig.removeRelate || mainConfig.removeGood) && e.trend && e.trend.titles) {
let t = e.trend.titles.title;
mainConfig.removeRelate && "相关推荐" === t ? delete e.trend : mainConfig.removeGood && "博主好物种草" === t && delete e.trend
}
mainConfig.removeFollow && e.follow_data && (e.follow_data = null), mainConfig.removeRewardItem && e.reward_info && (e.reward_info = null), e.head_cards && delete e.head_cards, e.page_alerts && (e.page_alerts = null);
try {
e.trend.extra_struct.extBtnInfo.btn_picurl.indexOf("timeline_icon_ad_delete") > -1 && delete e.trend
} catch (o) {
}
if (mainConfig.modifyMenus && e.custom_action_list) {
let i = [];
for (let a of e.custom_action_list) {
let r = a.type, n = itemMenusConfig[r];
void 0 === n ? i.push(a) : "mblog_menus_copy_url" === r ? i.unshift(a) : n && i.push(a)
}
e.custom_action_list = i
}
}
function updateFollowOrder(e) {
try {
for (let t of e.items) if ("mainnums_friends" === t.itemId) {
let o = t.click.modules[0].scheme;
t.click.modules[0].scheme = o.replace("231093_-_selfrecomm", "231093_-_selffollowed"), log("updateFollowOrder success");
return
}
} catch (i) {
console.log("updateFollowOrder fail")
}
}
function updateProfileSkin(e, t) {
try {
let o = mainConfig[t];
if (!o) return;
let i = 0;
for (let a of e.items) if (a.image) try {
dm = a.image.style.darkMode, "alpha" != dm && (a.image.style.darkMode = "alpha"), a.image.iconUrl = o[i++], a.dot && (a.dot = [])
} catch (r) {
}
log("updateProfileSkin success")
} catch (n) {
console.log("updateProfileSkin fail")
}
}
function removeHome(e) {
if (!e.items) return e;
let t = [];
for (let o of e.items) {
let i = o.itemId;
if ("profileme_mine" == i) mainConfig.removeHomeVip && (o = removeHomeVip(o)), o.header?.vipIcon && delete o.header.vipIcon, updateFollowOrder(o), t.push(o); else if ("100505_-_top8" == i) updateProfileSkin(o, "profileSkin1"), t.push(o); else if ("100505_-_newcreator" == i) "grid" == o.type ? (updateProfileSkin(o, "profileSkin2"), t.push(o)) : mainConfig.removeHomeCreatorTask || t.push(o); else {
if ("100505_-_chaohua" != i && "100505_-_manage" != i && "100505_-_recentlyuser" != i) continue;
o.images?.length > 0 && (o.images = o.images.filter(e => "100505_-_chaohua" == e.itemId || "100505_-_recentlyuser" == e.itemId)), t.push(o)
}
}
return e.items = t, e
}
function removeCheckin(e) {
log("remove tab1签到"), e.show = 0
}
function removeMediaHomelist(e) {
mainConfig.removeLiveMedia && (log("remove 首页直播"), e.data = {})
}
function removeComments(e) {
let t = ["广告", "廣告", "相关内容", "推荐", "热推", "推薦"], o = e.datas || [];
if (0 === o.length) return;
let i = [];
for (let a of o) {
let r = a.adType || "";
-1 == t.indexOf(r) && 6 != a.type && i.push(a)
}
log("remove 评论区相关和推荐内容"), e.datas = i, e.tip_msg && delete e.tip_msg
}
function containerHandler(e) {
mainConfig.removeInterestFriendInTopic && "超话里的好友" === e.card_type_name && (log("remove 超话里的好友"), e.card_group = []), mainConfig.removeInterestTopic && e.itemid && (e.itemid.indexOf("infeed_may_interest_in") > -1 ? (log("remove 感兴趣的超话"), e.card_group = []) : e.itemid.indexOf("infeed_friends_recommend") > -1 && (log("remove 超话好友关注"), e.card_group = []))
}
function userHandler(e) {
if (e = removeMainTab(e), !mainConfig.removeInterestUser || !e.items) return e;
let t = [];
for (let o of e.items) {
let i = !0;
if ("group" == o.category) try {
"可能感兴趣的人" == o.items[0].data.desc && (i = !1)
} catch (a) {
}
i && (o.data?.common_struct && delete o.data.common_struct, t.push(o))
}
return e.items = t, log("removeMain sub success"), e
}
function nextVideoHandler(e) {
if (!e.statuses) return e;
let t = [];
for (let o of e.statuses) if (!isAd(o)) {
let i = ["forward_redpacket_info", "shopping", "float_info", "tags"];
for (let a of i) o.video_info?.[a] && delete o.video_info[a];
t.push(o)
}
return e.statuses = t, log("removeMainTab Success"), e
}
function tabSkinHandler(e) {
try {
let t = mainConfig.tabIconVersion;
if (e.data.canUse = 1, !t || !mainConfig.tabIconPath || t < 100) return;
let o = e.data.list;
for (let i of o) i.version = t, i.downloadlink = mainConfig.tabIconPath;
log("tabSkinHandler success")
} catch (a) {
log("tabSkinHandler fail")
}
}
function skinPreviewHandler(e) {
e.data.skin_info.status = 1
}
function removeLuaScreenAds(e) {
if (!e.cached_ad) return e;
for (let t of e.cached_ad.ads) t.start_date = 1893254400, t.show_count = 0, t.duration = 0, t.end_date = 1893340799;
return e
}
function removePhpScreenAds(e) {
if (!e.ads) return e;
for (let t of (e.show_push_splash_ad = !1, e.background_delay_display_time = 0, e.lastAdShow_delay_display_time = 0, e.realtime_ad_video_stall_time = 0, e.realtime_ad_timeout_duration = 0, e.ads)) t.displaytime = 0, t.displayintervel = 86400, t.allowdaydisplaynum = 0, t.displaynum = 0, t.displaytime = 1, t.begintime = "2029-12-30 00:00:00", t.endtime = "2029-12-30 23:59:59";
return e
}
function log(e) {
mainConfig.isDebug && console.log(e)
}
var body = $response.body, url = $request.url;
let method = getModifyMethod(url);
if (method) {
log(method);
var func = eval(method);
let data = JSON.parse(body.match(/\{.*\}/)[0]);
new func(data), body = JSON.stringify(data), "removePhpScreenAds" == method && (body = JSON.stringify(data) + "OK")
}
$done({body});