提取视频链接

try to take over the world!

// ==UserScript==
// @name         提取视频链接
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  try to take over the world!
// @author       You
// @match        https://www.ixigua.com/*
// @match        https://user.youku.com/*
// @match        https://*.bilibili.com/*
// @connect      api.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 'bilibili.com':
    case 'message.bilibili.com':
    case 'space.bilibili.com':
      site = 2
      break
  }
  if (site < 0) {
    console.log('=================================')
    console.log('=================================')
    console.log('无法识别网址', '当前domain', domain)
    console.log('=================================')
    console.log('=================================')
  }

  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('\n'))
    alert(`已复制${checkedList.length}个视频地址`);
  })

  setTimeout(() => {
    let btnbar = $(matchObj.btnbar)
    console.log('btnbar',btnbar)

    btnbar.append(buildCheckBoxBtn)
    btnbar.append(copySpaceUrlBtn)
  }, 3000);
})();