PageSourceSearch

https://sol.vin/js/widgets/bandcamp_widget.js

js sol.vin collected 2026-10-09 21:58:37 UTC 2,458 bytes, 47 lines download raw bytes

1window.BandcampWidget = (function() {
2  'use strict';
3
4  function render(element, bandcampUrl, albumId, trackId, title, creator) {
5    if (!element) return;
6    var container = element.querySelector('.bandcamp-widget-container');
7    if (!container) {
8      container = document.createElement('div');
9      container.className = 'bandcamp-widget-container';
10      element.appendChild(container);
11    }
12
13    var isSmall = window.innerWidth <= 360;
14    var sizeParam = isSmall ? 'size=small' : 'size=large';
15    var iframeHeight = isSmall ? '42px' : '120px';
16    var iframeSrc = '';
17    if (albumId) {
18      iframeSrc = 'https://bandcamp.com/EmbeddedPlayer/album=' + albumId + '/' + sizeParam + '/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/transparent=true/';
19    } else if (trackId) {
20      iframeSrc = 'https://bandcamp.com/EmbeddedPlayer/track=' + trackId + '/' + sizeParam + '/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/transparent=true/';
21    }
22
23    if (iframeSrc) {
24      var linkText = (title && creator) ? (title + ' by ' + creator) : (title || 'Bandcamp');
25      container.innerHTML = '<iframe style="border: 0; width: 100%; height: ' + iframeHeight + ';" src="' + iframeSrc + '" seamless credentialless><a href="' + (bandcampUrl || '#') + '">' + linkText + '</a></iframe>';
26    } else if (bandcampUrl) {
27      container.innerHTML = '<div class="bandcamp-link-chip"><a href="' + bandcampUrl + '" target="_blank" class="accolade-link-btn" title="Open on Bandcamp"><span class="stat-icon" style="-webkit-mask-image: url(\'/icons/bandcamp.svg\'); mask-image: url(\'/icons/bandcamp.svg\');"></span> <span>LISTEN ON BANDCAMP</span></a></div>';
28    }
29  }
30
31  function init() {
32    var elements = document.querySelectorAll('[data-bandcamp-url], [data-bandcamp-album-id], [data-bandcamp-track-id]');
33    elements.forEach(function(el) {
34      if (el.classList.contains('fav-collection-item-chip') || (el.closest && el.closest('.fav-collection-item-chip'))) return;
35      var url = el.getAttribute('data-bandcamp-url');
36      var albumId = el.getAttribute('data-bandcamp-album-id');
37      var trackId = el.getAttribute('data-bandcamp-track-id');
38      var title = el.getAttribute('data-bandcamp-title');
39      var creator = el.getAttribute('data-bandcamp-creator');
40      if (url || albumId || trackId) {
41        render(el, url, albumId, trackId, title, creator);
42      }
43    });
44  }
45
46  return { init: init, render: render };
47})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.