Greasy Fork

Greasy Fork is available in English.

Bandcamp: Auto Play

Auto-playing tracks on https://bandcamp.com on the "wishlist" page

目前为 2023-09-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         Bandcamp: Auto Play
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  Auto-playing tracks on https://bandcamp.com on the "wishlist" page
// @author       Grihail
// @match        https://bandcamp.com/*wishlist
// @match        https://bandcamp.com/tag/*
// @icon         https://s4.bcbits.com/img/favicon/favicon-32x32.png
// @grant        none
// @license       CC-BY
// ==/UserScript==

if (window.location.href.match(/https:\/\/bandcamp\.com.*\/wishlist/)) {
	let wishlistItems = document.querySelectorAll('#wishlist-items > ol > li');
	let currentIndex = -1;
	
	setInterval(() => {
	    wishlistItems = document.querySelectorAll('#wishlist-items > ol > li');
	    let playingTrack = document.querySelector('.playing');
	    let progressWidth = document.querySelector('.progress-bar > div.progress').style.width;
	
	    if (playingTrack) {
	        currentIndex = Array.from(wishlistItems).indexOf(playingTrack);
	    }
	
	    if (progressWidth === '100%' && !playingTrack) {
	        let nextTrack = wishlistItems[currentIndex + 1];
	        if (nextTrack) {
	            nextTrack.querySelector('img').click();
	            currentIndex = -1;
	            playingTrack = document.querySelector('.playing');
	        } else {
	            document.querySelector('.show-more').click();
	            wishlistItems = document.querySelectorAll('#wishlist-items > ol > li');
	        }
	    }
	}, 1000);
}
if (window.location.href.match(/https:\/\/bandcamp\.com\/tag\/*/)) {
	let wishlistItems = document.querySelectorAll('.dig-deeper-items > div:nth-child(1) > div');
	let currentIndex = -1;
	
	setInterval(() => {
	    wishlistItems = document.querySelectorAll('.dig-deeper-items > div:nth-child(1) > div');
	    let playingTrack = document.querySelector('.playing');
	    let progressWidth = document.querySelector('.progress-bar > div.progress').style.width;
	
	    if (playingTrack) {
	        currentIndex = Array.from(wishlistItems).indexOf(playingTrack);
	    }
	
	    if (progressWidth === '100%' && !playingTrack) {
	        let nextTrack = wishlistItems[currentIndex + 1];
	        if (nextTrack) {
	            nextTrack.querySelector('img').click();
	            currentIndex = -1;
	            playingTrack = document.querySelector('.playing');
	        } else {
	            document.querySelector('.view-more').click();
	            wishlistItems = document.querySelectorAll('.dig-deeper-items > div:nth-child(1) > div');
	        }
	    }
	}, 1000);
}