您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
网址信息本地笔记备份小助手(B站,豆瓣),备份B站的视频链接信息,豆瓣的网址条目(电影,音乐,书籍,游戏等)信息等, 以防忘掉或被和谐或被豆瓣吞标记
// ==UserScript== // @name 豆瓣B站网址本地笔记备份(Douban Bilibili URL backup) // @namespace http://tampermonkey.net/ // @version 0.12 // @description 网址信息本地笔记备份小助手(B站,豆瓣),备份B站的视频链接信息,豆瓣的网址条目(电影,音乐,书籍,游戏等)信息等, 以防忘掉或被和谐或被豆瓣吞标记 // @author Lepturus // @match *://*.douban.com/* // @match *://*.bilibili.com/video/* // @icon https://img1.doubanio.com/favicon.ico // @icon https://www.bilibili.com/favicon.ico // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; function copy(e, isHTML = true) { let obj = document.createElement('input'); document.body.appendChild(obj); obj.value = isHTML ? e.innerText : e.innerHTML; obj.select(); document.execCommand('copy', false); obj.remove(); } function Douban() { let douban_title = document.querySelector('h1').textContent; let douban_infos = document.querySelector('#info') || document.querySelector('.item-subject-info'); let dratings = document.querySelector('.rating_self'); let dimdb = document.evaluate("//div[@id='info']//span[contains(., 'IMDb')]", document).iterateNext() // <span class="pl">IMDb:</span> if(dimdb != null){ if (!dimdb.nextSibling.textContent.match("→")) { let imdb_link = `https://www.imdb.com/title/${dimdb.nextSibling.textContent.trim()}/`; // dimdb.nextSibling.replaceWith(`<a href="${imdb_link}" target="_blank">→${dimdb.nextSibling.textContent}</a>`); NOT PARSED const imdb_a = document.createElement("a"); imdb_a.setAttribute("href", imdb_link); imdb_a.setAttribute("target", "_blank"); imdb_a.innerHTML = `→${dimdb.nextSibling.textContent}` dimdb.nextSibling.replaceWith(imdb_a); } } let txt=""; if (douban_infos) { let douban_url = document.createElement("span"); let douban_rating = document.createElement("span"); let searchp = document.createElement("div"); function searche(title,query,text=title,query2=""){ let search_urle = document.createElement("a"); let search_url = query + title+query2; search_urle.setAttribute("href", search_url); search_urle.innerHTML = text; search_urle.setAttribute("target", "_blank"); return search_urle } let url_parse = new URL(window.location.href); douban_url.innerHTML = '豆瓣链接:' + url_parse.protocol + "//" + url_parse.hostname + url_parse.pathname + '</br>' ; if (/music\.douban/.test(document.URL)) { douban_rating.innerHTML = '豆瓣评分:' + dratings.querySelector('.rating_num').innerText + '(' + dratings.querySelector('.rating_sum').innerText+ ')</br>' + '试听链接:' ; searchp.appendChild(searche(douban_title,"https://music.163.com/#/search/m/?s=","网易云搜索|","&type=10")); searchp.appendChild(searche(douban_title,"https://y.qq.com/n/ryqq/search?w=","QQ音乐搜索|","&t=album")); searchp.appendChild(searche(douban_title,"https://open.spotify.com/search/","Spotify搜索","/albums")); }else if (/\/game\//.test(document.URL)){ douban_rating.innerHTML = '豆瓣评分:' + dratings.querySelector('.rating_num').innerText + '(' + dratings.querySelector('.rating_sum').innerText+ ')</br>' + '游戏链接:' ; searchp.appendChild(searche(douban_title,"https://www.taptap.cn/search/","Taptap搜索|")); searchp.appendChild(searche(douban_title,"https://store.steampowered.com/search/?term=","STEAM搜索|")); searchp.appendChild(searche(douban_title," https://indienova.com/search/novas/","Indienova搜索")); } else{ douban_rating.innerHTML = '豆瓣评分:' + dratings.querySelector('.rating_num').innerText + '(' + dratings.querySelector('.rating_sum').innerText+ ')</br>'; } searchp.appendChild(document.createElement("br")); searchp.appendChild(searche(douban_title,"https://www.baidu.com/s?ie=UTF-8&wd=","百度搜索|")); searchp.appendChild(searche(douban_title,"https://www.google.com.hk/search?q=","谷歌搜索|")); searchp.appendChild(searche(douban_title,"https://search.bilibili.com/all?keyword=","B站搜索|")); searchp.appendChild(searche(douban_title,"https://www.youtube.com/results?search_query=","Youtube搜索")); if (!douban_infos.textContent.match("豆瓣链接")) { douban_infos.appendChild(douban_url); douban_infos.appendChild(douban_rating); douban_infos.appendChild(searchp); } } } function Bilibili() { let b_title = document.querySelector('h1'); let b_infos = document.querySelector('.tag-panel'); let b_up = document.querySelector('.up-detail-top'); document.getElementsByTagName("img").forEach((ele) => { ele.src = ele.src.replace(/@.*\.avif/g,"")}); //replace avif extension if (b_infos) { let bilibili_url = document.createElement("div"); // bilibili_url.setAttribute("class", "video-info-detail-list"); let bilibili_title = document.createElement("div"); bilibili_url.classList.add("copyTEXT"); bilibili_title.classList.add("copyTEXT"); bilibili_title.innerHTML = ''+b_title.textContent let bilibili_up = b_up.querySelector('a') let url_parse = new URL(window.location.href); let bilibili_date; if (document.querySelector('.pubdate-text')){ bilibili_date = document.querySelector('.pubdate-text').innerHTML.trim();} else{bilibili_date = document.querySelector('.pubdate-ip-text').innerHTML.trim().split(' ')[0];} console.log(bilibili_date); let dt = new Date(bilibili_date); bilibili_date = dt.getFullYear() + "." + (dt.getMonth()+1); bilibili_url.innerHTML = 'Bilibili链接:' + url_parse.protocol + "//" + url_parse.hostname+ url_parse.pathname + " BY:" + bilibili_up.outerHTML + " " + bilibili_date; let kws = document.getElementsByClassName("copyTEXT"); for (let i = 0; i < kws.length; i++) { kws[i].onclick = function () { let kkws = kws[i].innerHTML; copy(kws[i]); kws[i].innerHTML = "Copied"; window.setTimeout(function () { kws[i].innerHTML = kkws; }, 1500) } } if (!b_infos.lastElementChild.classList.contains('copyTEXT')) { b_infos.appendChild(document.createElement("br")); b_infos.appendChild(document.createElement("br")); b_infos.appendChild(bilibili_title); b_infos.appendChild(bilibili_url); } } } if (/douban/.test(document.URL)) { setInterval(Douban, 1500); } if (/bilibili/.test(document.URL)) { let lastUrl = window.location.href; // last URL as Bli collection URL changes setInterval(function(){ let currentUrl = window.location.href; // current URL Bilibili(); if(currentUrl !== lastUrl){ for (let i = 0; i < 4; i++) { document.querySelector('.tag-panel').lastElementChild.remove(); } lastUrl = currentUrl; } }, 1500); } })();