mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-28 23:42:51 -05:00
handle remote album art
This commit is contained in:
@@ -5,6 +5,7 @@ import QtQuick.Shapes
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Services.Mpris
|
import Quickshell.Services.Mpris
|
||||||
import Quickshell.Services.Pipewire
|
import Quickshell.Services.Pipewire
|
||||||
|
import Quickshell.Io
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import qs.Common
|
import qs.Common
|
||||||
import qs.Services
|
import qs.Services
|
||||||
@@ -53,8 +54,29 @@ Item {
|
|||||||
_switchHold = true
|
_switchHold = true
|
||||||
paletteReady = false
|
paletteReady = false
|
||||||
_switchHoldTimer.restart()
|
_switchHoldTimer.restart()
|
||||||
if (activePlayer && activePlayer.trackArtUrl)
|
if (activePlayer && activePlayer.trackArtUrl) {
|
||||||
_preloadImage.source = activePlayer.trackArtUrl
|
loadArtwork(activePlayer.trackArtUrl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property string activeTrackArtFile: ""
|
||||||
|
|
||||||
|
function loadArtwork(url) {
|
||||||
|
if (!url) return
|
||||||
|
|
||||||
|
if (url.startsWith("http://") || url.startsWith("https://")) {
|
||||||
|
const filename = "/tmp/.dankshell/trackart_" + Date.now() + ".jpg"
|
||||||
|
activeTrackArtFile = filename
|
||||||
|
|
||||||
|
cleanupProcess.command = ["sh", "-c", "mkdir -p /tmp/.dankshell && find /tmp/.dankshell -name 'trackart_*' ! -name '" + filename.split('/').pop() + "' -delete"]
|
||||||
|
cleanupProcess.running = true
|
||||||
|
|
||||||
|
imageDownloader.command = ["curl", "-L", "-s", "--user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36", "-o", filename, url]
|
||||||
|
imageDownloader.targetFile = filename
|
||||||
|
imageDownloader.running = true
|
||||||
|
} else {
|
||||||
|
_preloadImage.source = url
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeFinishSwitch() {
|
function maybeFinishSwitch() {
|
||||||
@@ -84,7 +106,7 @@ Item {
|
|||||||
function onTrackArtUrlChanged() {
|
function onTrackArtUrlChanged() {
|
||||||
if (activePlayer?.trackArtUrl) {
|
if (activePlayer?.trackArtUrl) {
|
||||||
_lastArtUrl = activePlayer.trackArtUrl
|
_lastArtUrl = activePlayer.trackArtUrl
|
||||||
_preloadImage.source = activePlayer.trackArtUrl
|
loadArtwork(activePlayer.trackArtUrl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,6 +166,23 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
id: imageDownloader
|
||||||
|
running: false
|
||||||
|
property string targetFile: ""
|
||||||
|
|
||||||
|
onExited: (exitCode) => {
|
||||||
|
if (exitCode === 0 && targetFile) {
|
||||||
|
_preloadImage.source = "file://" + targetFile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Process {
|
||||||
|
id: cleanupProcess
|
||||||
|
running: false
|
||||||
|
}
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
id: _preloadImage
|
id: _preloadImage
|
||||||
source: ""
|
source: ""
|
||||||
|
|||||||
Reference in New Issue
Block a user