上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 王一之 - 

bilibili三连按钮demo

[复制链接]
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-1-23 15:31:45 | 显示全部楼层 | 阅读模式
    安装此脚本 如何安装? 脚本问题反馈 给脚本评分 查看代码

    [油猴脚本开发指南]脚本往页面上添加新元素
    https://bbs.tampermonkey.net.cn/thread-237-1-1.html
    (出处: 油猴中文网)

    image.png

    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。

    该用户从未签到

    1

    主题

    26

    回帖

    25

    积分

    助理工程师

    积分
    25
    发表于 2021-9-13 16:33:38 | 显示全部楼层
    意思是点一下就可以 不用长按了吗
    回复

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-13 17:12:34 | 显示全部楼层
    Neon 发表于 2021-9-13 16:33
    意思是点一下就可以 不用长按了吗

    对的
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-22 13:35
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    1

    主题

    20

    回帖

    19

    积分

    助理工程师

    积分
    19
    发表于 2023-5-9 10:54:43 | 显示全部楼层
    太棒了,真是我的偶像,又学习到了:2023/5/9 10:06:41

    但是发现一个问题:
    最新的b站
    let ops=document.querySelector('#arc_toolbar_report .ops');
    是不是要改成这样:
    let ops = document.querySelector('#arc_toolbar_report');

    还有一个疑问:
    let share = document.querySelector('.share');
    这个 .share 是怎么找到的呢?我看了下页面布局并没有发现这个 关键字。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-5-9 11:08:16 | 显示全部楼层
    harrydeng 发表于 2023-5-9 10:54
    太棒了,真是我的偶像,又学习到了:2023/5/9 10:06:41

    但是发现一个问题:

    这个我不知道,我也忘记了,可能有更新?

    是不是也更新掉了呀
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-5-9 11:09:19 | 显示全部楼层
    harrydeng 发表于 2023-5-9 10:54
    太棒了,真是我的偶像,又学习到了:2023/5/9 10:06:41

    但是发现一个问题:

    刚刚看了一下,好像确实是没有了

    可能更新了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-19 08:33
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    0

    主题

    14

    回帖

    17

    积分

    助理工程师

    积分
    17
    发表于 2023-5-11 15:45:52 | 显示全部楼层
    太方便了
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    回帖

    2

    积分

    助理工程师

    积分
    2
    发表于 2023-8-16 17:48:45 | 显示全部楼层
    本帖最后由 MikerChen 于 2023-8-16 17:49 编辑

    b站前端页面好像更新了,所以也改了一下代码:
    1. // ==UserScript==
    2. // [url=home.php?mod=space&uid=23356]@name[/url]         bilibili三连按钮demo
    3. // @namespace    https://bbs.tampermonkey.net.cn/
    4. // @version      0.1
    5. // @description  给bilibili增加一个真三连按钮
    6. // @author       Wyz
    7. // [url=home.php?mod=space&uid=52134]@match[/url]        https://www.bilibili.com/video/*
    8. // @grant        none
    9. // @run-at       document-end
    10. // ==/UserScript==

    11. let triple=document.createElement("button");
    12. triple.innerText="三连";
    13. triple.style.background="#757575";//颜色弄得差不多吧
    14. triple.style.color="#fff";
    15. triple.onclick=function(){
    16.     //三连代码
    17.     let httpRequest = new XMLHttpRequest();
    18.     httpRequest.open('POST', 'https://api.bilibili.com/x/web-interface/archive/like/triple');
    19.     httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    20.     httpRequest.withCredentials = true;//设置跨域发送
    21.     let aid=window.__INITIAL_STATE__.aid;
    22.     let sKey="bili_jct";
    23.     let csrf=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
    24.     httpRequest.send('aid='+aid+'&csrf='+csrf);
    25.     httpRequest.onreadystatechange = function () {
    26.         if (httpRequest.readyState == 4 && httpRequest.status == 200) {
    27.             var json = JSON.parse(httpRequest.responseText);
    28.             console.log(json);
    29.             if(json.code==0){
    30.                 alert("三连成功!刷新页面可见");
    31.             }else{
    32.                 alert("三连失败/(ㄒoㄒ)/~~");
    33.             }
    34.         }
    35.     };
    36. };
    37. let ops=document.querySelector('#arc_toolbar_report').querySelector(':first-child');
    38. console.log(ops);
    39. //插入三连之后好像会重新生成,不添加就不会重新生成,暂时没弄清什么情况,先这样处理了.
    40. //主要作用是监听ops的修改,等它修改完成之后再插入我们的三连按钮,另外注意run-at是document-end,要等待ops生成之后再监听,不然query返回null会报错
    41. //这个事件会多次调用,但是我们insertBefore插入如果元素存在,只是修改而不会新增
    42. ops.addEventListener("DOMNodeInserted", function(event) {
    43.     let share=document.querySelector('#share-btn-outer');
    44.     console.log("share-parent"+share.parentElement.parentElement.parentElement.outerHTML);
    45.     share.parentElement.parentElement.parentElement.insertBefore(triple,share.parentElement.parentElement);
    46. });



    复制代码

    回复

    使用道具 举报

  • TA的每日心情

    2024-5-14 15:33
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    0

    主题

    2

    回帖

    6

    积分

    助理工程师

    积分
    6
    发表于 2023-9-2 09:44:04 | 显示全部楼层
    当然,后面不想刷新就可以自己添加样式上去就可以

    1. (function() {
    2.     'use strict';
    3.     setTimeout(() => {
    4.         const videoBarDOM = document.querySelector('.video-toolbar-left');
    5.         const btnDOM = document.createElement('button');
    6.         btnDOM.textContent = '三连';
    7.         btnDOM.onclick = () => {
    8.             const aid = unsafeWindow.__INITIAL_STATE__.aid;
    9.             const csrf = Cookies.get('bili_jct');
    10.             fetch('https://api.bilibili.com/x/web-interface/archive/like/triple',{
    11.                 method:"POST",
    12.                 headers:{
    13.                     'Content-Type': 'application/x-www-form-urlencoded',
    14.                 },
    15.                 credentials:'include',
    16.                 body:`aid=${aid}&csrf=${csrf}`,
    17.             }).then((res) => {
    18.                 return res.json();
    19.             }).then(result => {
    20.                 const code = result.code;
    21.                 if(code === 0){
    22.                     alert("三连成功!刷新页面可见");
    23.                 }else{
    24.                     alert("三连失败/(ㄒoㄒ)/~~");
    25.                 }
    26.             })
    27.         }
    28.         videoBarDOM.append(btnDOM)
    29.     },3000)
    30. })();
    复制代码
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表