跳转到Web Archives

添加菜单命令以跳转到当前页面的Wayback Machine、TimeTravel和Archive.is版本

// ==UserScript==
// @name         Jump to Web Archives
// @description  Adds menu commands to jump to Wayback Machine, TimeTravel, and Archive.is versions of current page
// @name:zh-CN   跳转到Web Archives
// @description:zh-CN  添加菜单命令以跳转到当前页面的Wayback Machine、TimeTravel和Archive.is版本
// @name:ar      القفز إلى أرشيفات الويب
// @description:ar  يضيف أوامر القائمة للانتقال إلى إصدارات Wayback Machine وTimeTravel وArchive.is للصفحة الحالية
// @name:bg      Прехвърляне към уеб архиви
// @description:bg  Добавя команди в менюто за прехвърляне към версиите на текущата страница в Wayback Machine, TimeTravel и Archive.is
// @name:cs      Přejít na webové archivy
// @description:cs  Přidává příkazy do nabídky pro přechod na verze aktuální stránky v Wayback Machine, TimeTravel a Archive.is
// @name:da      Hop til webarkiver
// @description:da  Tilføjer menukommandoer til at hoppe til Wayback Machine-, TimeTravel- og Archive.is-versioner af den aktuelle side
// @name:de      Zu Webarchiven springen
// @description:de  Fügt Menübefehle hinzu, um zu den Versionen der aktuellen Seite in Wayback Machine, TimeTravel und Archive.is zu springen
// @name:el      Μετάβαση σε Αρχεία Ιστοσελίδων
// @description:el  Προσθέτει εντολές μενού για μετάβαση στις εκδόσεις της τρέχουσας σελίδας σε Wayback Machine, TimeTravel και Archive.is
// @name:en      Jump to Web Archives
// @description:en  Adds menu commands to jump to Wayback Machine, TimeTravel, and Archive.is versions of current page
// @name:eo      Salti al Retaj Arkivoj
// @description:eo  Aldonas menuokomandojn por salti al versioj de la nuna paĝo en Wayback Machine, TimeTravel kaj Archive.is
// @name:es      Saltar a Archivos Web
// @description:es  Agrega comandos de menú para saltar a las versiones de la página actual en Wayback Machine, TimeTravel y Archive.is
// @name:fi      Hyppää verkkokaivistoihin
// @description:fi  Lisää valikkokomennot siirtymiseen nykyisen sivun Wayback Machine-, TimeTravel- ja Archive.is-versioihin
// @name:fr      Aller aux archives web
// @description:fr  Ajoute des commandes de menu pour passer aux versions de la page actuelle sur Wayback Machine, TimeTravel et Archive.is
// @name:fr-CA   Sauter aux archives web
// @description:fr-CA  Ajoute des commandes de menu pour accéder aux versions de la page actuelle sur Wayback Machine, TimeTravel et Archive.is
// @name:he      קפיצה לארכיוני רשת
// @description:he  מוסיף פקודות תפריט לקפיצה לגרסאות של הדף הנוכחי ב-Wayback Machine, TimeTravel ו-Archive.is
// @name:hr      Skoči na web arhive
// @description:hr  Dodaje naredbe u izbornik za skok na verzije trenutne stranice u Wayback Machine, TimeTravel i Archive.is
// @name:hu      Ugrás a webarchívumokhoz
// @description:hu  Menüparancsokat ad hozzá az aktuális oldal Wayback Machine, TimeTravel és Archive.is verzióira való ugráshoz
// @name:id      Lompat ke Arsip Web
// @description:id  Menambahkan perintah menu untuk melompat ke versi halaman saat ini di Wayback Machine, TimeTravel, dan Archive.is
// @name:it      Salta agli archivi web
// @description:it  Aggiunge comandi al menu per passare alle versioni della pagina corrente su Wayback Machine, TimeTravel e Archive.is
// @name:ja      ウェブアーカイブにジャンプ
// @description:ja  現在のページのWayback Machine、TimeTravel、Archive.isバージョンにジャンプするメニューコマンドを追加
// @name:ka      გადასვლა ვებ არქივებზე
// @description:ka  ამატებს მენიუს ბრძანებებს მიმდინარე გვერდის Wayback Machine, TimeTravel და Archive.is ვერსიებზე გადასასვლელად
// @name:ko      웹 아카이브로 이동
// @description:ko  현재 페이지의 Wayback Machine, TimeTravel, Archive.is 버전으로 이동하는 메뉴 명령 추가
// @name:nb      Hopp til nettarkiver
// @description:nb  Legger til menykommandoer for å hoppe til Wayback Machine-, TimeTravel- og Archive.is-versjoner av gjeldende side
// @name:nl      Spring naar webarchieven
// @description:nl  Voegt men-commando's toe om te springen naar Wayback Machine-, TimeTravel- en Archive.is-versies van de huidige pagina
// @name:pl      Przejdź do archiwów internetowych
// @description:pl  Dodaje polecenia menu do przechodzenia na wersje bieżącej strony w Wayback Machine, TimeTravel i Archive.is
// @name:pt-BR   Pular para Arquivos Web
// @description:pt-BR  Adiciona comandos de menu para pular para as versões da página atual no Wayback Machine, TimeTravel e Archive.is
// @name:ro      Salt la Arhive Web
// @description:ro  Adaugă comenzi de meniu pentru a trece la versiunile paginii curente pe Wayback Machine, TimeTravel și Archive.is
// @name:ru      Перейти к веб-архивам
// @description:ru  Добавляет команды меню для перехода к версиям текущей страницы в Wayback Machine, TimeTravel и Archive.is
// @name:sk      Prejsť na webové archívy
// @description:sk  Pridáva príkazy do ponuky na presun na verzie aktuálnej stránky v Wayback Machine, TimeTravel a Archive.is
// @name:sr      Скочи на веб архиве
// @description:sr  Додаје команде у мени за прелазак на верзије тренутне странице у Wayback Machine, TimeTravel и Archive.is
// @name:sv      Hoppa till webbarkiv
// @description:sv  Lägger till menykommandon för att hoppa till Wayback Machine-, TimeTravel- och Archive.is-versioner av den aktuella sidan
// @name:th      กระโดดไปยังคลังเว็บ
// @description:th  เพิ่มคำสั่งเมนูเพื่อกระโดดไปยังเวอร์ชันของหน้าปัจจุบันใน Wayback Machine, TimeTravel และ Archive.is
// @name:tr      Web Arşivlerine Atla
// @description:tr  Geçerli sayfanın Wayback Machine, TimeTravel ve Archive.is sürümlerine atlamak için menü komutları ekler
// @name:ug      تور ئارخىپىغا ئاتلاش
// @description:ug  ھازىرقى بەتنىڭ Wayback Machine، TimeTravel ۋە Archive.is نەشرىلىرىگە ئاتلاش ئۈچۈن تىزىملىك بۇيرۇقلىرىنى قوشىدۇ
// @name:uk      Перейти до веб-архівів
// @description:uk  Додає команди меню для переходу до версій поточної сторінки в Wayback Machine, TimeTravel та Archive.is
// @name:vi      Nhảy đến Kho Lưu Trữ Web
// @description:vi  Thêm các lệnh menu để nhảy đến các phiên bản của trang hiện tại trên Wayback Machine, TimeTravel và Archive.is
// @name:zh      跳转到Web Archives
// @description:zh  添加菜单命令以跳转到当前页面的Wayback Machine、TimeTravel和Archive.is版本
// @name:zh-CN   跳转到Web Archives
// @description:zh-CN  添加菜单命令以跳转到当前页面的Wayback Machine、TimeTravel和Archive.is版本
// @name:zh-HK   跳去Web Archives
// @description:zh-HK  加入選單指令以跳去目前頁面嘅Wayback Machine、TimeTravel同Archive.is版本
// @name:zh-SG   跳转到Web Archives
// @description:zh-SG  添加菜单命令以跳转到当前页面的Wayback Machine、TimeTravel和Archive.is版本
// @name:zh-TW   跳轉到Web Archives
// @description:zh-TW  新增選單指令以跳轉到目前頁面的Wayback Machine、TimeTravel和Archive.is版本
// @name:zh-CN   跳转到Web Archives
// @description:zh-CN 
// @namespace    http://tampermonkey.net/
// @version      0.3.1
// @author       aspen138
// @match        *://*
// @match        *://*/*
// @icon         https://web-static.archive.org/_static/images/archive.ico
// @grant        GM_registerMenuCommand
// @grant        window.open
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const currentUrl = window.location.href;
    const currentYear = new Date().getFullYear();

    const archiveSites = {
        wayback: {
            name: 'Wayback Machine',
            url: `https://web.archive.org/web/${currentYear}0000000000*/`,
            hotkey: 'w',
            icon: 'Recommended🕰️'
        },
        timetravel: {
            name: 'TimeTravel Archive',
            url: `http://timetravel.mementoweb.org/list/${currentYear}0715151719/`,
            hotkey: 't',
            icon: '⏰'
        },
        archiveToday: {
            name: 'Archive.today',
            url: 'https://archive.today/',
            hotkey: 'a',
            icon: 'Recommended📅'
        },
        archiveMd: {
            name: 'Archive.md',
            url: 'https://archive.md/',
            hotkey: 'm',
            icon: 'Recommended📝'
        },
        webCite: {
            name: 'WebCite',
            url: 'https://webcitation.org/query?url=',
            hotkey: 'c',
            icon: '📰'
        },
        freezePage: {
            name: 'FreezePage',
            url: 'https://www.freezepage.com/1/',
            hotkey: 'f',
            icon: '❄️'
        },
        permaCC: {
            name: 'Perma.cc',
            url: 'https://perma.cc/capture?url=',
            hotkey: 'p',
            icon: '🔗'
        },
        ghostArchive: {
            name: 'GhostArchive',
            url: 'https://ghostarchive.org/search?term=',
            hotkey: 'g',
            icon: '👻'
        },
        conifer: {
            name: 'Conifer',
            url: 'https://conifer.rhizome.org/browse/',
            hotkey: 'o',
            icon: '🌲'
        },
        ukWebArchive: {
            name: 'UK Web Archive',
            url: 'https://www.webarchive.org.uk/wayback/archive/',
            hotkey: 'u',
            icon: '🇬🇧'
        },
        memento: {
            name: 'Memento Timemap',
            url: 'http://timetravel.mementoweb.org/timemap/link/',
            hotkey: 'e',
            icon: '📜'
        },
        bibliotheca: {
            name: 'Bibliotheca',
            url: 'https://bibliotheca.co/archive?url=',
            hotkey: 'b',
            icon: '📚'
        }
    };

    function jumpToArchive(siteKey) {
        const site = archiveSites[siteKey];
        if (!site) return;
        
        const archiveUrl = site.url + currentUrl;
        window.location.href = archiveUrl;
    }

    function openInNewTab(siteKey) {
        const site = archiveSites[siteKey];
        if (!site) return;
        
        const archiveUrl = site.url + currentUrl;
        window.open(archiveUrl, '_blank');
    }

    function openAllArchives() {
        Object.values(archiveSites).forEach(site => {
            const archiveUrl = site.url + currentUrl;
            window.open(archiveUrl, '_blank');
        });
    }

    function openTopArchives() {
        const topSites = ['wayback', 'archiveToday', 'archiveMd', 'timetravel'];
        topSites.forEach(siteKey => {
            const site = archiveSites[siteKey];
            if (site) {
                const archiveUrl = site.url + currentUrl;
                window.open(archiveUrl, '_blank');
            }
        });
    }

    Object.entries(archiveSites).forEach(([key, site]) => {
        GM_registerMenuCommand(`${site.icon} ${site.name}`, () => jumpToArchive(key), site.hotkey);
    });

    GM_registerMenuCommand('───────────────────', () => {}, '');
    GM_registerMenuCommand('📂 Open Top 4 Archives', openTopArchives, 'T');
    GM_registerMenuCommand('🌐 Open All Archives', openAllArchives, 'A');

})();