Greasy Fork is available in English.
个人自用,批量复制视频网站的URL地址。点击'解析网页'显示视频列表下的复选框,点击'复制链接'将url地址复制到剪贴板,用空格分隔,可以直接用you-get下载
当前为
// ==UserScript==
// @name 批量复制视频链接
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 个人自用,批量复制视频网站的URL地址。点击'解析网页'显示视频列表下的复选框,点击'复制链接'将url地址复制到剪贴板,用空格分隔,可以直接用you-get下载
// @author uiiang
// @match https://www.ixigua.com/*
// @match https://user.youku.com/*
// @match https://space.bilibili.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_setClipboard
// @require http://code.jquery.com/jquery-3.x-git.min.js
// @license MIT
// ==/UserScript==
(function () {
'use strict';
let baseurl = window.location.origin
let domain = document.domain
console.log('domain', domain)
var site = -1
switch (domain) {
case 'www.ixigua.com':
site = 0
break
case 'user.youku.com':
site = 1
break
case 'space.bilibili.com':
site = 2
break
}
if (site < 0) {
console.log('=================================')
console.log('=================================')
console.log('无法识别网址', '当前domain', domain)
console.log('=================================')
console.log('=================================')
alert('无法识别网址')
return
}
let flagArr = [{
btnbar: '.component-sortTabs__container',
itempanel: '.FeedContainer__itemWrapper:not(.loading)',
titlepanel: 'div > a',
title: 'title'
}, {
btnbar: '.ant-tabs-nav',
itempanel: '.categorypack_yk_pack',
titlepanel: 'div > a',
title: 'title'
}, {
btnbar: '.fav-info',
itempanel: '.small-item',
titlepanel: 'li > a',
title: 'title'
}, ]
let matchObj = flagArr[site]
console.log('matchObj',matchObj)
let buildCheckBoxBtn = document.createElement('button')
buildCheckBoxBtn.innerHTML = '解析网页'
buildCheckBoxBtn.addEventListener('click', (e) => {
let videoItems = document.querySelectorAll(matchObj.itempanel)
console.log('videoItems', videoItems)
console.log('videoItems length', videoItems.length)
videoItems.forEach(item => {
console.log(item)
let title = item.querySelector(matchObj.titlepanel)
console.log('title', title, title.getAttribute(matchObj.title))
let href = title.getAttribute("href")
let url = href.startsWith('http') ? href : href.startsWith('//') ? `https:${href}` : baseurl + href
let check = `
<label><input type="checkbox" style="-webkit-appearance: checkbox" id="getThisUrl" name="getThisUrl" value="${url}">提取</label>
`
item.innerHTML = item.innerHTML + check
console.log('url', url)
})
})
let copySpaceUrlBtn = document.createElement('button')
copySpaceUrlBtn.innerHTML = '复制链接'
copySpaceUrlBtn.addEventListener('click', (e) => {
let query = document.querySelectorAll('#getThisUrl')
console.log('query', query)
let checkedList = []
query.forEach(item => {
console.log(item.checked, item.value)
if (item.checked) {
checkedList.push(`"${item.value}"`)
}
})
console.log('checkedLIst', checkedList.join(' '))
GM_setClipboard(checkedList.join(' '))
alert(`已复制${checkedList.length}个视频地址`);
})
setTimeout(() => {
let btnbar = $(matchObj.btnbar)
console.log('btnbar',btnbar)
btnbar.append(buildCheckBoxBtn)
btnbar.append(copySpaceUrlBtn)
}, 3000);
})();