From 607d52907f5c8eddfc6d7b91910d9c12f0171808 Mon Sep 17 00:00:00 2001 From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com> Date: Tue, 22 Mar 2022 04:34:19 +0100 Subject: [PATCH] fix(plugins/music): apple tracklist (external redesign) (#955) --- source/plugins/music/index.mjs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/source/plugins/music/index.mjs b/source/plugins/music/index.mjs index a7b3ee51..cdb34364 100644 --- a/source/plugins/music/index.mjs +++ b/source/plugins/music/index.mjs @@ -104,14 +104,18 @@ export default async function({login, imports, data, q, account}, {enabled = fal //Apple music case "apple": { //Parse tracklist - await frame.waitForSelector(".tracklist.playlist") + await frame.waitForFunction(() => !!document.querySelector("embed-root").shadowRoot.querySelector(".audio-tracklist")) + //Apple music do a lot of lazy-loading preventing the use of networkIdle + await new Promise(solve => setTimeout(solve, 10*1000)) tracks = [ - ...await frame.evaluate(() => [...document.querySelectorAll(".tracklist li")].map(li => ({ - name:li.querySelector(".tracklist__track__name").innerText, - artist:li.querySelector(".tracklist__track__sub").innerText, - artwork:li.querySelector(".tracklist__track__artwork img").src, + ...await frame.evaluate(() => { + const tracklist = document.querySelector("embed-root").shadowRoot.querySelector(".audio-tracklist") + return [...tracklist.querySelectorAll("embed-audio-tracklist-item")].map(item => ({ + name:item.querySelector(".audio-tracklist-item__metadata h3").innerText, + artist:item.querySelector(".audio-tracklist-item__metadata h4").innerText, + artwork:item.querySelector("apple-music-artwork")?.shadowRoot?.querySelector("picture source")?.srcset?.split(",")?.[0]?.replace(/\s+\d+x$/, ""), })) - ), + }) ] break }