Browse Source

fixed mpd

itec78 3 years ago
parent
commit
4bde232b46
2 changed files with 43 additions and 37 deletions
  1. 2 2
      pl_list.py
  2. 41 35
      playlistalo.py

+ 2 - 2
pl_list.py

@@ -4,8 +4,8 @@
 import playlistalo
 
 if __name__ == '__main__':
-    pl = playlistalo.listplaylist()
-    #pl = playlistalo.listtot()
+    #pl = playlistalo.listplaylist()
+    pl = playlistalo.listtot()
     #print ('\n'.join([", ".join(x) for x in pl]))
     print ('\n'.join([x[0] for x in pl]))
     

+ 41 - 35
playlistalo.py

@@ -393,6 +393,7 @@ def setlastannounce(announcepos):
 
 def consume(song):
     if os.path.exists(song):
+        print ("consumo la canzone " + song)
         if song.split("/")[0] == "playlist":
             os.remove(song)
             if not [x for x in glob(os.path.dirname(song) + "/*") if not os.path.basename(x) == "last"]:
@@ -472,6 +473,8 @@ def plaympd():
 
     #consuma il primo e fa play
     consume(plt[0][0])
+
+    #mpdadd(client, listlen)
     client.play(0)
 
     while True:
@@ -489,14 +492,14 @@ def plaympd():
         status = client.status()
 
         if int(status['song']) > 0:
-             #consuma la canzone attuale
+            #consuma la canzone attuale
             song = client.playlistinfo()[int(status['song'])]['file']
             consume(song)
             mpdclean(client)
 
-        if len(client.playlistinfo()) < listlen:
-            mpdsync(client, listlen)
-            status = client.status()
+        # if len(client.playlistinfo()) < listlen:
+        #     mpdsync(client, listlen)
+        #     status = client.status()
 
         #controlla se mancano meno di 15 secondi
         #timeleft = float(status['duration']) - float(status['elapsed']) #new mpd
@@ -506,7 +509,8 @@ def plaympd():
         if timeleft <= looptime + synctime:
             time.sleep(max(timeleft - synctime, 0))
             print ("Mancano %d secondi" % (synctime))
-            mpdsync(client, listlen)
+            mpdclean(client)
+            mpdadd(client, listlen)
 
         time.sleep(looptime)
 
@@ -514,57 +518,59 @@ def mpdclean(client):
     #cancella le precedenti
     for x in range(int(client.status()['song'])):
         song = client.playlistinfo()[0]['file']
-        print ("consumo la canzone " + str(x) +" "+ song)
         consume(song)
         client.delete(0)
         #e pulisce anche in mpd
-        if os.path.exists("mpd/" + song):
-            os.remove("mpd/" + song)
+        #if os.path.exists("mpd/" + song):
+        #    os.remove("mpd/" + song)
         #se non ci sono + file cancella la cartella
         if not glob(os.path.dirname("mpd/" + song) + "/*"):
             shutil.rmtree(os.path.dirname("mpd/" + song))
 
 
-
-def mpdsync(client, listlen):
+def mpdadd(client, listlen):
     print("Rigenero la playlist")
-    mpdclean(client)
 
-    
     plt = listtot(listlen)
     #copia i file
     for f in plt:
-        print(f[0])
+        #print(f[0])
         copyfile(f[0], "mpd/" + f[0])
     client.rescan()
     time.sleep(0.5)
-    #cancella tutto tranne la prima
-    for x in client.playlistinfo()[1:]:
-        client.delete(1)
-    time.sleep(0.5)
+
+    # # #cancella tutto tranne la prima
+    # for x in client.playlistinfo()[1:]:
+    #     client.delete(1)
+    # time.sleep(0.5)
+    # #e rifa la playlist
+    # for f in plt:
+    #     client.add(f[0])
+    # time.sleep(0.5)
+
+    print("------------------")
+    playlist=client.playlistinfo()
+    for f in plt[:len(playlist)-1]:
+        i = plt.index(f) + 1
+        #print(f[0] +" - "+ playlist[i]['file'])
+        if f[0] != playlist[i]['file']:
+            break
+        else:
+            print("Mantengo " + f[0])
+        
+    #print (i)
+    for x in client.playlistinfo()[i:]:
+        print("cancello " + x['file'])
+        client.delete(i)
     #e rifa la playlist
-    for f in plt:
+    for f in plt[i-1:]:
+        print("Aggiungo " + f[0])
         client.add(f[0])
 
+    #consumo la prima
+    consume(plt[0][0])
 
 
-    # playlist=client.playlistinfo()
-    # for f in plt[:len(playlist)-1]:
-    #     i = plt.index(f) + 1
-    #     if f[0] != playlist[i]['file']:
-    #         break
-    #     else:
-    #         print("Mantengo " + f[0])
-        
-    # #print (i)
-    # for x in client.playlistinfo()[i+1:]:
-    #     #print("cancello " + client.playlist()[i-1]['file'])
-    #     client.delete(i)
-    # #e rifa la playlist
-    # for f in plt[i:]:
-    #     print("Aggiungo " + f[0])
-    #     client.add(f[0])
-