[Bilibili]动态页面默认投稿视频页面

让哔哩哔哩动态页面默认显示投稿视频

  1. // ==UserScript==
  2. // @name [Bilibili]动态页面默认投稿视频页面
  3. // @namespace ckylin-script-bilibili-dynamix-default-tab
  4. // @version 0.1
  5. // @description 让哔哩哔哩动态页面默认显示投稿视频
  6. // @author CKylinMC
  7. // @match https://t.bilibili.com/*
  8. // @grant GM_registerMenuCommand
  9. // @grant GM_unregisterMenuCommand
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @license WTFPL
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. const getUrlParam = key=>(new URL(location.href)).searchParams.get(key)
  17. const wait = ms=>new Promise(r=>setTimeout(r,ms));
  18. const waitForDom = async (query,domparent=document,maxRetries=20,gagms=200)=>{
  19. let i = maxRetries;
  20. while(--i>0){
  21. if(domparent.querySelector(query)) return true;
  22. await wait(gagms);
  23. }
  24. return false;
  25. }
  26. async function trySwitch(){
  27. const tabBtn = document.querySelector(".tab-bar>.tab:nth-child(2)>a.tab-text");
  28. if(tabBtn&&!tabBtn.classList.contains("selected")){
  29. let maxClick = 20;
  30. while(--maxClick && !tabBtn.classList.contains("selected")){
  31. tabBtn.click();
  32. await wait(200);
  33. }
  34. }
  35. }
  36. async function way1(){
  37. if(getUrlParam("tab")) return;
  38. await waitForDom(".tab-bar");
  39. await trySwitch();
  40. }
  41. function way2(){
  42. if(!getUrlParam("tab")) return location.href = "?tab=8";
  43. }
  44.  
  45. let menuIds = [];
  46. let menus = {};
  47. const registerMenu = (text, callback) => menuIds.push(GM_registerMenuCommand(text, callback));
  48. const clearMenu = () => { menuIds.forEach(id => GM_unregisterMenuCommand(id)); menuIds = []; };
  49.  
  50. function applyMenus() {
  51. clearMenu();
  52. for (let item in menus) {
  53. if(!menus.hasOwnProperty(item)) continue;
  54. let menu = menus[item];
  55. registerMenu(menu.text, menu.callback);
  56. }
  57. }
  58.  
  59. function setMenu(id,text,callback,noapply = false) {
  60. menus[id] = { text, callback };
  61. if (!noapply) applyMenus();
  62. }
  63.  
  64. function setWayMethodA(){
  65. GM_setValue("useJump",true);
  66. setWayMenuB();
  67. }
  68.  
  69. function setWayMethodB(){
  70. GM_setValue("useJump",false);
  71. setWayMenuA();
  72. }
  73.  
  74. function setWayMenuA(noapply = false) {
  75. setMenu("WAY", "改为使用跳转方案", setWayMethodA, noapply);
  76. }
  77.  
  78. function setWayMenuB(noapply = false) {
  79. setMenu("WAY", "改为使用自动点击方案", setWayMethodB, noapply);
  80. }
  81.  
  82. function init(){
  83. let targetMethod = way1;
  84. if(GM_getValue("useJump")){
  85. setWayMenuB();
  86. targetMethod = way2;
  87. }else{
  88. setWayMenuA();
  89. }
  90. targetMethod();
  91. }
  92. init();
  93. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址