您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes it obvious which and when videos are going to expire.
// ==UserScript== // @name Amazon Prime Video Expiry Viewer // @namespace https://github.com/Kadauchi // @version 1.0.4 // @description Makes it obvious which and when videos are going to expire. // @author Kadauchi // @icon http://i.imgur.com/oGRQwPN.png // @include https://www.amazon.com/gp/video* // @include https://www.amazon.com/Prime-Video/* // ==/UserScript== const checked = {} function checkShelf () { for (const el of document.getElementsByClassName('dv-shelf-item')) checkIfLeaving(el); for (const el of document.getElementsByClassName('dv-packshot')) checkIfLeaving(el); for (const el of document.getElementsByClassName('UaW15H')) checkIfLeaving(el); for (const el of document.getElementsByClassName('UI789i')) checkIfLeaving(el); } async function checkIfLeaving (item) { const asin = item.querySelector('[data-asin]').dataset.asin; const leaving = await fetchHover(asin); if (leaving.isLeaving) { const date = document.createElement('div'); date.textContent = 'Leaving ' + leaving.isLeaving; date.style = 'text-align: center; color: black;'; date.style.backgroundColor = 'yellow'; item.appendChild(date); } if (leaving.isImdb) { const date = document.createElement('div'); date.textContent = 'Available on your IMDb TV channel'; date.style = 'text-align: center; color: black;'; date.style.backgroundColor = 'gold'; item.appendChild(date); } } function fetchHover (asin) { return new Promise(async (resolve) => { if (asin && !checked[asin]) { const response = await window.fetch(`https://www.amazon.com/gp/video/hover/${asin}?format=json`); const text = await response.text(); // console.log(text); const imdb = text.match(/ncluded with your IMDb TV channel/); const leaving = text.match(/Leaving Prime on ([\w\s,]+)/); const isImdb = !!imdb; const isLeaving = leaving ? leaving[1] : false; checked[asin] = { isImdb, isLeaving }; resolve(checked[asin]); } else if (checked[asin]) { resolve(checked[asin]); } }) } checkShelf();