Prechádzať zdrojové kódy

Added Windows volume info support for audio metadata

tobychui 4 rokov pred
rodič
commit
6dea56751c

+ 19 - 8
file_system.go

@@ -2439,15 +2439,26 @@ func system_fs_handleThumbnailLoad(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	thumbnailPath, err := thumbRenderHandler.LoadCache(rpath, false)
-	if err != nil {
-		sendErrorResponse(w, err.Error())
-		return
-	}
-
-	js, _ := json.Marshal(thumbnailPath)
-	sendJSONResponse(w, string(js))
+	byteMode, _ := mv(r, "bytes", false)
+	if byteMode == "true" {
+		thumbnailBytes, err := thumbRenderHandler.LoadCacheAsBytes(rpath, false)
+		if err != nil {
+			sendErrorResponse(w, err.Error())
+			return
+		}
+		filetype := http.DetectContentType(thumbnailBytes)
+		w.Header().Add("Content-Type", filetype)
+		w.Write(thumbnailBytes)
+	} else {
+		thumbnailPath, err := thumbRenderHandler.LoadCache(rpath, false)
+		if err != nil {
+			sendErrorResponse(w, err.Error())
+			return
+		}
 
+		js, _ := json.Marshal(thumbnailPath)
+		sendJSONResponse(w, string(js))
+	}
 }
 
 //Handle file thumbnail caching

+ 10 - 0
mod/filesystem/metadata/metadata.go

@@ -59,6 +59,16 @@ func (rh *RenderHandler) BuildCacheForFolder(path string) error {
 	return nil
 }
 
+func (rh *RenderHandler) LoadCacheAsBytes(file string, generateOnly bool) ([]byte, error) {
+	b64, err := rh.LoadCache(file, generateOnly)
+	if err != nil {
+		return []byte{}, err
+	}
+
+	resultingBytes, _ := base64.StdEncoding.DecodeString(b64)
+	return resultingBytes, nil
+}
+
 //Try to load a cache from file. If not exists, generate it now
 func (rh *RenderHandler) LoadCache(file string, generateOnly bool) (string, error) {
 	//Create a cache folder

+ 0 - 0
subservice/WsTTY/.disabled


+ 17 - 7
web/Music/index.html

@@ -1111,7 +1111,10 @@
 		}
 
 	    updateMiniPlayerUI(displayName,info,id);
-	    updateMainPlayerUI(displayName,info,id);
+
+		//Seperate out the filepath without media server path
+		var fileVpath = filepath.split("=")[1];
+	    updateMainPlayerUI(displayName,info,id, fileVpath);
 	    loadAndPlayAudioFile(filepath, !startPaused);
 	    if (!currentPlaying && !startPaused){
 	        setPlaying(true);
@@ -1150,7 +1153,7 @@
 			if (data.error !== undefined){
 				console.log(data.error)
 				$("#albumnArtImage").attr("src","img/default.png");
-				if (isAndroid && navigator.mediaSession.metadata){
+				if (navigator.mediaSession.metadata){
 					navigator.mediaSession.metadata.artwork = [
 						{ src: "img/default.png",   sizes: '512x512',   type: 'image/png' }
 					]
@@ -1158,6 +1161,7 @@
 			}else{
 				$("#albumnArtImage").attr("src","data:image/jpg;base64," + data);
 				if (isAndroid && navigator.mediaSession.metadata){
+					//Android
 					navigator.mediaSession.metadata.artwork = [
 						{ src: "data:image/jpg;base64," + data,   sizes: '480x480',   type: 'image/jpg' }
 					]
@@ -1194,7 +1198,10 @@
     	    var info = nextSong[2] + " / " + nextSong[3];
     	    var id = nextSongIndex + 1;
     	    updateMiniPlayerUI(displayName,info,id);
-    	    updateMainPlayerUI(displayName,info,id);
+
+			//Seperate out the filepath without media server path
+			var fileVpath = filepath.split("=")[1];
+    	    updateMainPlayerUI(displayName,info,id, fileVpath);
     	    if (forcePlayEvenStopped){
     	        loadAndPlayAudioFile(filepath,true);
     	    }else{
@@ -1236,7 +1243,10 @@
     	    var info = nextSong[2] + " / " + nextSong[3];
     	    var id = nextSongIndex;
     	    updateMiniPlayerUI(displayName,info,id);
-    	    updateMainPlayerUI(displayName,info,id);
+
+			//Seperate out the filepath without media server path
+			var fileVpath = filepath.split("=")[1];
+    	    updateMainPlayerUI(displayName,info,id, fileVpath);
     	    loadAndPlayAudioFile(filepath,!currentPaused);
     	    if (currentPlaying){
     	        setPlaying(true);
@@ -1349,13 +1359,13 @@
 	    $("#miniPlayerIDtab").text(id + "/" + totalMusicCount);
 	}
 	
-	function updateMainPlayerUI(songname, fileinfo, id){
+	function updateMainPlayerUI(songname, fileinfo, id, filepath){
 	    $("#mainPlayerSongTitle").text(songname);
 	    $("#mainPlayerSongDesc").text(fileinfo);
 	    $("#mainPlayerMiniTab").text(id + "/" + totalMusicCount);
-		if (isAndroid && 'mediaSession' in navigator){
+		if ('mediaSession' in navigator){
 			var infoRewrite = fileinfo.split(" / ")
-			updateTitle(songname, infoRewrite[1] + " (" + infoRewrite[0] + ")", id + "/" + totalMusicCount);
+			updateTitle(songname, infoRewrite[1] + " (" + infoRewrite[0] + ")", id + "/" + totalMusicCount, filepath);
 		}
 	}
 

+ 10 - 9
web/Music/native.js

@@ -58,22 +58,23 @@ function initNativeMediaPlayer(){
     }
 }
 
-function updateTitle(title, artist, albumn){
+function updateTitle(title, artist, albumn, filepath=""){
     if ('mediaSession' in navigator) {
-        if (navigator.mediaSession.metadata){
+        if (isAndroid && navigator.mediaSession.metadata){
             //Media Session created. Update the existsing one instead
             navigator.mediaSession.metadata.title = title;
             navigator.mediaSession.metadata.artist = artist;
             navigator.mediaSession.metadata.album = albumn;
         }else{
-            //Media Session not created. Creat one
+            let nohashURL = window.location.hash.split("#")[0];
             navigator.mediaSession.metadata = new MediaMetadata({
-            title: title,
-            artist: artist,
-            album: albumn,
-            /*artwork: [
-                { src: artwork,   sizes: '480x480',   type: 'image/jpg' }
-            ]*/
+                title: title,
+                artist: artist,
+                album: albumn,
+                /* artwork: [
+                    { src: nohashURL + "img/default.png"}
+                ]
+                */
             });
         }