// ==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 // @downloadURL none // ==/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); }