Bandcamp: I'm Not A Fan

Removes playback limitation and dialog "The time has come to open thy heart/wallet"

目前為 2022-01-05 提交的版本,檢視 最新版本

// ==UserScript==
// @name                  Bandcamp: I'm Not A Fan
// @name:ru               Bandcamp: Я не фанат
// @description           Removes playback limitation and dialog "The time has come to open thy heart/wallet"
// @description:ru        Снимает ограничение воспроизведений и убирает диалог "Пришло время открыть свое сердце/кошелек"
// @namespace             bc-inotafan.user.js
// @version               1.0.1
// @license               MIT
// @author                askornot
// @icon                  https://s4.bcbits.com/img/favicon/safari-pinned-tab.svg
// @match                 https://*/*
// @homepageURL           https://greasyfork.org/ru/scripts/438039-bandcamp-i-m-not-a-fan
// @supportURL            https://greasyfork.org/ru/scripts/438039-bandcamp-i-m-not-a-fan/feedback
// @grant                 unsafeWindow
// @run-at                document-end
// @compatible            chrome  Violentmonkey 2.13.0
// @compatible            firefox Tampermonkey 4.13.6136
// ==/UserScript==

'use strict';

const W = unsafeWindow || window;

const player = W.Player;
if (player === undefined) return;

const uncap = (o) => (o.is_capped = false);

const target = 'copy';
const proto = player.TrackInfo.prototype;

proto[target] = new Proxy(proto[target], {
  apply(_, thisArgument, __) {
    uncap(thisArgument);
    return Reflect.apply(_, thisArgument, __);
  },
});

const tralbum = W.TralbumData;
if (tralbum === undefined) return;

const value = Object.freeze({
  streaming_limits_enabled: false,
  streaming_limit: Infinity,
});

Object.defineProperty(tralbum, 'play_cap_data', {
  configurable: false,
  enumerable: true,
  writable: false,
  value,
});