您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
use embedded player on: /feed (mouseover album art); /music
当前为
- // ==UserScript==
- // @name BC: embed player everywhere
- // @namespace userscript1
- // @match https://*.bandcamp.com/music
- // @match https://bandcamp.com/EmbeddedPlayer*
- // @match https://bandcamp.com/*/feed
- // @match https://*/*
- // @grant none
- // @version 0.1.7
- // @author -
- // @license GPLv3
- // @description use embedded player on: /feed (mouseover album art); /music
- // ==/UserScript==
- (function() { // ------------
- 'use strict';
- // is this *bandcamp.com or bandcamp on a custom domain?
- if (!document.location.hostname.endsWith('bandcamp.com')
- && !document.head.querySelector('meta[property="twitter:site"][content="@bandcamp"]') ) {
- //console.log('--not a bandcamp site');
- return;
- }
- //document.body.classList.add(document.URL); // testing what URL the iframe ends up on
- ////////////////////////////////////////////////////////////////////////////////////////////////
- if (document.location.pathname.startsWith('/EmbeddedPlayer')) {
- // embeddedplayer window.location changes when iframed: https://bandcamp.com/EmbeddedPlayer.html/ ...
- console.log('---embed page');
- if (document.location.pathname.includes('/track=') ) {
- console.log('---track player, checking for album');
- var albumID = JSON.parse(
- document.querySelector('script[data-player-data]')
- ?.getAttribute('data-player-data')
- ).album_id;
- if (!albumID) {
- console.log('--track only');
- return;
- }
- // it's from an album, so load that
- document.body.remove();
- var newURL = document.URL.replace(/track=\d*/, 'album=' + albumID);
- console.log('--redirecting to: ' + newURL);
- document.location = newURL;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////
- } else if (document.location.pathname == '/music') {
- console.log('---music page');
- // featured releases don't have the data id, hide them. we unhide their regular listing below
- document.querySelectorAll('ol.featured-grid')?.forEach( li => li.style.display = 'none' );
- var releases = document.querySelectorAll('li.music-grid-item');
- for (let r of releases) {
- r.style.display = ''; // unhiding anything that was featured
- var itemStr = r.getAttribute('data-item-id').replace('-', '=');
- // firefox doesn't yet support lazy-loading iframes
- var player = `<iframe style="border: 0; width: 400px; height: 300px;"
- src="https://bandcamp.com/EmbeddedPlayer/${itemStr}/size=large/bgcol=ffffff/linkcol=0687f5/artwork=none/transparent=true/"
- loading="lazy"
- referrerpolicy="no-referrer"
- seamless>
- </iframe>
- <div style="clear:left;"> </div>
- `;
- r.insertAdjacentHTML('afterEnd', player);
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////
- } else if (document.location.pathname.endsWith('/feed')) {
- console.log('---feed page');
- document.getElementById('stories').addEventListener('mouseover', feedEvent, true);
- }
- function feedEvent(evt) {
- const t = evt.target;
- if (t.nodeName == 'IMG' && t.classList.contains('tralbum-art-large') ) {
- // if we decide to make the event 'click' we need to block the default player:
- //evt.preventDefault();
- //evt.stopPropagation();
- // step up the tree to find data
- var d = t.parentNode;
- while (!d.classList.contains('collection-item-container') ) {
- d = d.parentNode;
- }
- var itemID = d.getAttribute('data-tralbumid');
- var itemType = d.getAttribute('data-tralbumtype') == 'a' ? 'album' : 'track';
- var itemStr = itemType + '=' + itemID;
- var player = `<iframe style="border: 0; width: 100%; height: 300px;"
- src="https://bandcamp.com/EmbeddedPlayer/${itemStr}/size=large/bgcol=ffffff/linkcol=0687f5/artwork=small/transparent=true/"
- referrerpolicy="no-referrer"
- seamless>
- </iframe>
- `;
- d.querySelector('div.story-title').insertAdjacentHTML('afterEnd', player);
- d.querySelector('div.tralbum-art-container').remove();
- //d.querySelector('div.tralbum-wrapper-col2').remove(); // 'supported by' section
- }
- }
- })(); // ----------------
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址