-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathitunes_cover_art_click_to_show_original.user.js
70 lines (64 loc) · 2.52 KB
/
itunes_cover_art_click_to_show_original.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// ==UserScript==
// @name iTunes Cover Art Click to Show Original
// @namespace https://twitter.com/ikenaikoto
// @version 2.1
// @description Click on cover art to get original largest PNG image.
// @author fireattack
// @match *://itunes.apple.com/*/album/*
// @match *://music.apple.com/*/album/*
// @match *://music.apple.com/*/artist/*
// ==/UserScript==
const DEBUGGING = true;
let config = { attributes: true, childList: true, characterData: true, subtree: false };
let target = document.querySelector('html');
let observer = new MutationObserver(function (mutations, ob) {
mutations.forEach(function (mutation) {
addLink();
});
});
function print() {
if (!DEBUGGING) return;
console.log('[Debug]', ...arguments);
}
function addLink() {
print('Start!');
// observer.observe(document.querySelector('div.loading-inner'), config);
let pictures = document.querySelectorAll('div[slot=artwork] > div.artwork-component picture');
if (!pictures) return;
for (let picture of [...pictures]) {
let source = picture.querySelector('source');
let url = '';
if (source['srcset']) {
url = source['srcset'].split(' ')[0];
} else {
url = source['src'];
}
let orig_url = url.replace(/^.+?mzstatic\.com\/image\/thumb\/([^/]+\/+v4\/+(?:[a-f0-9]{2}\/+){3}[-0-9a-f]{20,}\/[^/]+)\/*[^/]*$/, "https://a1.mzstatic.com/us/r1000/063/$1");
let img = picture.querySelector('img');
if (!img) return;
let thumbnail_url = '';
if (img.src && !img.src.includes('1x1.gif')) {
return;
} else if (img.currentSrc && !img.currentSrc.includes('1x1.gif')) {
thumbnail_url = img.currentSrc;
} else {
thumbnail_url = url.replace(/\/[0-9]*x[0-9]*[a-z]*(?:-[0-9]+)?(\.[^/.]*)$/, "/500x500bb.webp");
}
print('Update img.src:', img.src, thumbnail_url);
img.src = thumbnail_url;
img.style.cursor = 'pointer';
img.style.opacity = 1;
if (img.parentNode.nodeName !== "A") {
img.outerHTML = "<a id='test' href='" + orig_url + "' target='_blank'>" + img.outerHTML + "</a>";
// Below: No longer needed
// let link = document.querySelector('picture img').parentNode; // get the link we just added using outerHTML
// link.onclick = function (e) {
// e.stopPropagation();
// };
print('Added link to cover.');
}
}
}
observer.observe(target, config);
// observer.observe(document.querySelector('div.loading-inner'), config);
//addLink();