您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
batch download for downloads.khinsider.com originalsoundtracks
当前为
- // ==UserScript==
- // @name Video Game Music batch downloader
- // @name:zh-TW Video Game Music 批量下載器
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description batch download for downloads.khinsider.com originalsoundtracks
- // @description:zh-TW 批量下載 downloads.khinsider.com 的原聲帶
- // @author maple3142
- // @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js
- // @match https://downloads.khinsider.com/game-soundtracks/album/*
- // @grant GM_xmlhttpRequest
- // @connect 66.90.93.122
- // ==/UserScript==
- (function() {
- 'use strict'
- function downloadblob(url){
- return new Promise((resolve,reject)=>{
- GM_xmlhttpRequest({
- method: 'GET',
- url,
- responseType: 'blob',
- onload: res=>resolve(res.response)
- })
- })
- }
- function download(link,name){
- GM_xmlhttpRequest({
- method: 'GET',
- url: link,
- responseType: 'blob',
- onload(res){
- const url=URL.createObjectURL(res.response)
- const a=document.createElement('a')
- a.download=name
- a.href=url
- document.body.appendChild(a)
- a.click()
- a.remove()
- }
- })
- }
- $('a:contains("click to download")').on('click',e=>{
- e.preventDefault()
- $('.albumMassDownload').append(`
- <div>
- <span>Download progress:</span>
- <progress min="0" max="100" id="dp" value="0"></progress>
- </div>
- `)
- const title=$('h2')[0].textContent
- const urls=$('tr>td.clickable-row:not([align])').toArray().map(el=>$(el).find('a').attr('href'))
- const requests=urls.map(e=>fetch(e).then(r=>r.text()))
- Promise.all(requests).then(ar=>ar.map(ht=>{
- const url=$(ht).find('a:contains("Click here to download as MP3")').attr('href')
- return {
- blob: downloadblob(url),
- name: decodeURIComponent(url.split('/').pop())
- }
- }).reduce((zip,file)=>{
- zip.file(file.name,file.blob)
- return zip
- },new JSZip()).generateAsync({type: 'blob'},meta=>{
- $('#dp').attr('value',parseInt(meta.percent))
- }).then(blob=>{
- const url=URL.createObjectURL(blob)
- const a=document.createElement('a')
- a.download=title+'.zip'
- a.href=url
- document.body.appendChild(a)
- a.click()
- a.remove()
- URL.revokeObjectURL(url)
- }))
- })
- })()