您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
add some userful link while open arxiv website and replace page title with paper title in arxiv pdf
当前为
- // ==UserScript==
- // @name Arxiv Tiny Tool
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description add some userful link while open arxiv website and replace page title with paper title in arxiv pdf
- // @description:zh-CN 在打arxiv页面添加了一些有用的链接,用论文的标题替换arxiv pdf 页面的标题
- // @author hiboy & ChatGPT
- // @match *://arxiv.org/*
- // @match *://cn.arxiv.org/*
- // @match *://xxx.itp.ac.cn/*
- // @icon https://t2.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=http://arxiv.org&size=64
- // @grant GM_xmlhttpRequest
- // @grant GM_addStyle
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- var newTitle = '';
- const paperId = window.location.pathname.match(/\/(\d+\.\d+)/)[1];
- function getCurrentTime() {
- const now = new Date();
- const hour = now.getHours().toString().padStart(2, '0');
- const minute = now.getMinutes().toString().padStart(2, '0');
- const second = now.getSeconds().toString().padStart(2, '0');
- const millisecond = now.getMilliseconds().toString().padStart(3, '0');
- return `${hour}:${minute}:${second}.${millisecond}`;
- }
- function modifyTitle() {
- var apiUrl = 'https://export.arxiv.org/api/query?id_list=' + paperId;
- var maxUpdateMinute = 5;
- // 定时器,初始时间间隔
- let intervalTime = 1000;
- let intervalId = setInterval(updateTabTitle, intervalTime);
- function updateTabTitle() {
- if (!newTitle) {
- console.log('Fetching paper title for ' + paperId);
- GM_xmlhttpRequest({
- method: 'GET',
- url: apiUrl,
- onload: function(response) {
- var parser = new DOMParser();
- var xmlDoc = parser.parseFromString(response.responseText, 'text/xml');
- var title = xmlDoc.querySelector('entry>title').textContent;
- newTitle = '[' + paperId + '] ' + title;
- console.log(`[${getCurrentTime()}]`,'Title modified for ' + newTitle);
- }
- });
- } else {
- console.log(`[${getCurrentTime()}]`,'set title to', newTitle);
- document.title = '';
- document.title = newTitle;
- }
- clearInterval(intervalId);
- // 每执行一次翻倍间隔时间
- intervalTime *= 2;
- // 如果间隔时间在maxUpdateMinute分钟内,则设置新的定时器
- if (intervalTime < maxUpdateMinute * 60 * 1000) {
- intervalId = setInterval(updateTabTitle, intervalTime);
- }
- }
- }
- function createArxivButton() {
- var btn = document.createElement("button");
- btn.setAttribute('style', 'position:absolute;' +
- 'z-index:1000;' +
- 'right:135px;' +
- 'top:12px;' +
- 'height:36px;' +
- 'padding:5px 10px;' +
- 'background-color:#323639;' +
- 'border-radius:50%;' +
- 'border:none;' +
- 'color:#ffffff;' +
- 'font-size:16px;' +
- 'font-weight:500;' +
- 'text-transform:uppercase;' +
- 'letter-spacing:0.5px;' +
- 'text-align:center;' +
- 'vehical-align: middle;' +
- 'cursor:pointer;' +
- // 'box-shadow:0px 2px 4px rgba(0,0,0,0.25);' +
- 'transition:background-color 0.2s ease-in-out,box-shadow 0.2s ease-in-out;' +
- ':hover{background-color:#1b1d1f;rgba(0,0,0,0.5);}');
- btn.setAttribute('id', "btn");
- btn.innerText = "arixv";
- btn.onclick = function() {
- var home_url = `https://arxiv.org/abs/${paperId}`;
- window.open(home_url);
- };
- btn.onmouseover = function() {
- this.style.backgroundColor = "#424649";
- };
- btn.onmouseout = function() {
- this.style.backgroundColor = "#323639";
- };
- document.body.appendChild(btn);
- }
- function openPdfInNewTab() {
- // assume the first link is pdf
- var pdfLink = document.querySelector('.full-text ul li a');
- pdfLink.target = "_blank";
- }
- function addCnPdfLink() {
- // Get the PDF download link
- const pdfLink = document.querySelector('.abs-button.download-pdf');
- if (pdfLink){
- // Construct cnPDF download link
- const cnPDFLink = `http://xxx.itp.ac.cn/pdf/${paperId}.pdf`;
- // Insert cnPDF download link after the PDF download link
- const newLinkHTML = `<li><a href="${cnPDFLink}" class="abs-button download-cnPDF" target="_blank">PDF(cn)</a></li>`;
- pdfLink.insertAdjacentHTML('afterend', newLinkHTML);
- console.log("[arxiv-cnPDF] Link added successfully");
- }
- }
- function addHtml5Link() {
- // Get the PDF download link
- var pdfLink = document.querySelector('.full-text ul li');
- if (pdfLink){
- // Construct HTML5 download link
- const newLink = window.location.href.replace('arxiv','ar5iv');
- // Insert HTML5 download link before the PDF download link
- const newLinkHTML = `<li><a href="${newLink}" class="abs-button html5" target="_blank">HTML5</a></li>`;
- pdfLink.insertAdjacentHTML('beforebegin', newLinkHTML);
- console.log("[arxiv-HTML5] Link added successfully");
- }
- }
- function addDownloadLink() {
- // Get the PDF download link
- var pdfLink = document.querySelector('.full-text ul li');
- if (pdfLink){
- const title = document.getElementsByClassName("title mathjax")[0].innerText;
- const yearMeta = document.querySelector('meta[name="citation_date"]');
- const year = yearMeta.getAttribute('content').split('/')[0];
- const filename = title + " " + year + ".pdf";
- var download_url = window.location.href.replace('/abs/','/pdf/');
- if (!download_url.endsWith('.pdf')){
- download_url = download_url + '.pdf';
- }
- var link = document.createElement("a");
- link.id = "rename_download";
- link.textContent = "Download";
- link.setAttribute("href", download_url);
- link.setAttribute("download", filename);
- var li = document.createElement("li");
- li.append(link);
- pdfLink.append(li);
- console.log("[arxiv-download] Link added successfully");
- }
- }
- console.log('Script started');
- if (window.location.href.indexOf('/pdf/') !== -1) {
- createArxivButton();
- modifyTitle();
- } else if (window.location.href.indexOf('/abs/') !== -1) {
- openPdfInNewTab();
- addDownloadLink();
- addCnPdfLink();
- addHtml5Link();
- }
- })();