B-HTML5-Live

Fork from https://gf.qytechs.cn/users/24167

当前为 2024-08-21 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name B-HTML5-Live
  3. // @version 1.0.0
  4. // @description Fork from https://gf.qytechs.cn/users/24167
  5. // @author esterTion-28135
  6. // @match https://live.bilibili.com/blanc/*
  7. // @match https://live.bilibili.com/1*
  8. // @match https://live.bilibili.com/2*
  9. // @match https://live.bilibili.com/3*
  10. // @match https://live.bilibili.com/4*
  11. // @match https://live.bilibili.com/5*
  12. // @match https://live.bilibili.com/6*
  13. // @match https://live.bilibili.com/7*
  14. // @match https://live.bilibili.com/8*
  15. // @match https://live.bilibili.com/9*
  16. // @exclude https://live.bilibili.com/?s*
  17. // @exclude https://live.bilibili.com/p/*
  18. // @exclude https://live.bilibili.com/all*
  19. // @exclude https://live.bilibili.com/h5/*
  20. // @run-at document-end
  21. // @connect bilibili.com
  22. // @icon data:image/png;base64,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
  23. // @grant unsafeWindow
  24. // @license no-license
  25. // @grant GM_xmlhttpRequest
  26. // @namespace https://gf.qytechs.cn/zh-CN/users/135090
  27. // ==/UserScript==
  28. var infobar=document.querySelector("body");
  29. var jsontag =document.createElement("a");
  30. jsontag.setAttribute("id", "hlsaddr");
  31. jsontag.innerText="Live";
  32. jsontag.style="position:fixed;bottom:10%;left:0;display:block;font-size:2rem;z-index:999";
  33. jsontag.target="_self";
  34. setTimeout(function(){
  35. var room_id=__NEPTUNE_IS_MY_WAIFU__?.roomInfoRes?.data?.room_info?.room_id;
  36. if (room_id == undefined) {
  37. room_id=unsafeWindow.__statisObserverConfig?.pvConfig?.selfDefMsg?.room_id;
  38. }
  39. var cdd=__NEPTUNE_IS_MY_WAIFU__?.roomInitRes?.data?.playurl_info?.playurl?.stream[1]?.format[0]?.codec[0];
  40. var fmt=__NEPTUNE_IS_MY_WAIFU__?.roomInitRes?.data?.playurl_info?.playurl?.stream[1]?.format?.length;
  41. if (fmt > 1) {cdd=__NEPTUNE_IS_MY_WAIFU__?.roomInitRes?.data?.playurl_info?.playurl?.stream[1]?.format[1]?.codec[0];}
  42. jsontag.href=cdd?.url_info[0]?.host+cdd?.base_url+cdd?.url_info[0]?.extra;
  43. console.log(jsontag.href);
  44. if (jsontag.href == undefined){
  45. var apihost="https://api.live.bilibili.com";
  46. var apipath="/xlive/web-room/v2/index/getRoomPlayInfo";
  47. var apisearch="?device=phone&platform=html5&protocol=0,1&format=0,2&codec=0&room_id="
  48. var jsonlink=apihost+apipath+apisearch+room_id;
  49. var response;
  50. GM_xmlhttpRequest({
  51. url: jsonlink,
  52. method: "GET",
  53. onload: function(res) {
  54. console.info('BilibiliHLS', 'NetworkResponse', res, JSON.parse(res.response));
  55. try {
  56. response = JSON.parse(res.responseText);
  57. } catch (e) {
  58. response = false;
  59. }
  60. var data=false;
  61. if (response){
  62. data = response.data;
  63. }else{
  64. console.log("data false");
  65. }
  66. if (data) {
  67. var cdc=data?.playurl_info?.playurl?.stream[1]?.format[0]?.codec[0];
  68. var fmtlen=data?.playurl_info?.playurl?.stream[1]?.format?.length;
  69. if (fmtlen > 1) {
  70. cdc=data?.playurl_info?.playurl?.stream[1]?.format[1]?.codec[0];
  71. }
  72. jsontag.href=cdc?.url_info[0]?.host+cdc?.base_url+cdc?.url_info[0]?.extra;
  73. } else {
  74. jsontag.href=jsonlink;
  75. console.log("get false");
  76. }
  77. }
  78. });
  79. }
  80. infobar.insertBefore(jsontag,infobar.lastChild);
  81. },2000);
  82. var sidead = document.querySelector("body");
  83. var imgnode = document.createElement("span");
  84. imgnode.setAttribute("id", "user_cover");
  85. imgnode.setAttribute("style", "position:fixed;bottom:0;left:0;display:block;font-size:2rem;z-index:999");
  86. setTimeout(getCover,2000);
  87. function getCover(){
  88. if (__NEPTUNE_IS_MY_WAIFU__?.roomInfoRes?.data?.room_info?.cover == undefined){
  89. var apiurl="https://api.live.bilibili.com/room/v1/Room/get_info?room_id=";
  90. var roomid=__NEPTUNE_IS_MY_WAIFU__?.roomInfoRes?.data?.room_info?.room_id;
  91. if (roomid == undefined) roomid=unsafeWindow.__statisObserverConfig?.pvConfig?.selfDefMsg?.room_id;
  92. var webapi = apiurl + roomid;
  93. var response;
  94. GM_xmlhttpRequest({
  95. url: webapi,
  96. method: "GET",
  97. onload: function(res) {
  98. console.info('BilibiliCover', 'NetworkResponse', res, JSON.parse(res.response));
  99. try {
  100. response = JSON.parse(res.responseText);
  101. } catch (e) {
  102. response = false;
  103. }
  104. var data;
  105. if (response){
  106. data = response.data;
  107. }else{
  108. data =false;
  109. console.log("data false");
  110. }
  111. if (data) {
  112. var cover = data?.user_cover;
  113. var i=cover.indexOf(":")+1;
  114. cover=cover.substring(i);
  115. var coverhtml= "<hr /><a href=\""+cover+"\" target=_blank >查看封面</a><hr />";
  116. imgnode.innerHTML=coverhtml;
  117. sidead.insertBefore(imgnode,sidead.firstChild);
  118. } else {
  119. console.log("get false");
  120. }
  121. }
  122. });
  123. } else {
  124. var data=unsafeWindow.__NEPTUNE_IS_MY_WAIFU__?.roomInfoRes?.data?.room_info;
  125. if (data){
  126. var cover = data?.cover;
  127. var i=cover.indexOf(":")+1;
  128. cover=cover.substring(i);
  129. var coverhtml= "<hr /><a href=\""+cover+"\" target=_blank >查看封面</a><hr />";
  130. imgnode.innerHTML=coverhtml;
  131. sidead.insertBefore(imgnode,sidead.firstChild);
  132. } else {
  133. console.log("get false");
  134. }
  135. }
  136. }

QingJ © 2025

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