// ==UserScript== // @name Anime1.me 下載器 // @namespace https://blog.maple3142.net/ // @description 下載Anime1.me網站上的動漫 // @version 0.5 // @author maple3142 // @match https://anime1.me/* // @match https://p.anime1.me/pic.php* // @match https://p.anime1.me/ts.php* // @match https://p.anime1.me/mp4.php* // @match https://torrent.anime1.me/*.html // @require https://code.jquery.com/jquery-3.2.1.min.js // @noframes // @grant none // @downloadURL none // ==/UserScript== 'use strict'; function download(url, filename) { //觸發下載 const a = document.createElement('a'); a.href = url; if (filename) a.download = filename; document.body.appendChild(a); a.click(); return a; } function parseQuery(str) { return Object.assign(...str.replace('?', '').split('&').map(part => part.split('=')).map(ar => ({ [ar[0]]: ar[1] }))); } function pic () { //如果是普通下載頁面 //取得資料 const video = jwplayer().getPlaylist()[0]; //目前使用jwplayer if (!video) return; const sources = video.sources; const title = video.title; const videomap = Object.assign(...sources.map(src => ({ [src.label]: src.file }))); //Object.assign({'HD': 'hd video url'},{'SD': 'sd video url'},something...) //詢問要下載的畫質 const askmsg = `輸入要下載的畫質名稱:(${sources.map(src => src.label).join(',')})`; const type = prompt(askmsg); //如果畫質存在 if (type in videomap) { download(videomap[type], `${title}.mp4`); } } const query = parseQuery(location.search); function ts () { //不支援下載 const m3u8 = `https://video.anime1.top/${query.vid}/list.m3u8`; const msg = `抱歉!由於這種影片是由多個影片所組成的,目前還無法直接下載\n不過可以複製下方的網址然後使用vlc之類支援網路串流的播放器來使用`; prompt(msg, m3u8); } const query$1 = parseQuery(location.search); function mp4 () { //特殊,因為需要Referer header才能得到影片檔 if (!confirm('這類需要特殊下載方法,要保持此頁面開啟直到下載完成\n是否繼續?')) return; //初始化下載器元素 $(document.body).append(`
`); //渲染函數 function update(loaded, total) { const percent = parseInt(loaded / total * 100); $('#pbox').empty().append($('