From d2682c31aca8e577934773e93f7237aa6cae9165 Mon Sep 17 00:00:00 2001
From: Mathieu Loiseau <mathieu.loiseau@liris.cnrs.fr>
Date: Tue, 17 May 2022 16:21:31 +0200
Subject: [PATCH] read and modify tags

---
 g_ol_m.py          |  3 ++-
 good_ol_mixtape.py | 31 ++++++++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/g_ol_m.py b/g_ol_m.py
index 4beb6b5..0a9c6b3 100755
--- a/g_ol_m.py
+++ b/g_ol_m.py
@@ -6,8 +6,9 @@ import argparse
 from good_ol_mixtape import MixTape
 parser = argparse.ArgumentParser(description="Créer une mix-tape")
 parser.add_argument("-p", "--playlist",  help="le fichier .m3u8 de la playlist", type=str)
+parser.add_argument("-t", "--mix_title",  help="le titre du mix", type=str, default = None)
 args = parser.parse_args()
 
 if __name__ == "__main__":
-	mx = MixTape(args.playlist)
+	mx = MixTape(args.playlist, args.mix_title)
 	print(mx)
diff --git a/good_ol_mixtape.py b/good_ol_mixtape.py
index 0849d94..34d76a8 100644
--- a/good_ol_mixtape.py
+++ b/good_ol_mixtape.py
@@ -6,11 +6,26 @@ import music_tag
 from urllib.parse import unquote
 
 class Song:
-	def __init__(self,song_path):
-		self.file = music_tag.load_file(song_path)
+	def __init__(self,song_path, mixAlbum = None, mixNumber = None):
+		self.track = music_tag.load_file(song_path)
+		self.title = self.track['title'].first
+		self.o_album = self.track['album'].first
+		self.artist = self.track['artist'].first
+		self.o_number = self.track['tracknumber'].first
+		self.o_year = self.track['year'].first
+		if mixAlbum != None:
+			self.set_mixTitle(mixAlbum)
+		if mixNumber != None:
+			self.set_numInMix(mixNumber)
+
+	def set_mixTitle(self, mixAlbum):
+		self.track['album']=mixAlbum
+
+	def set_numInMix(self, mixNumber):
+		self.track['tracknumber']=mixNumber
 
 	def __str__(self):
-		return str(self.file['title'])
+		return f"{self.track['tracknumber'].first}. {self.track['album'].first}/{self.title} — {self.artist} (track #{self.o_number} of {self.o_album})"
 
 class MixTape:
 	@classmethod
@@ -21,11 +36,17 @@ class MixTape:
 		else:
 			return unquote(res)
 
-	def __init__(self, pl_path):
+	def __init__(self, pl_path, title = None):
 		self.playlist = []
+		self.title = title
+		num = 1
 		for s in m3u8.load(pl_path).segments:
 			try:
-				self.playlist.append(Song(MixTape.uri2path(s.uri)))
+				if self.title == None :
+					self.playlist.append(Song(MixTape.uri2path(s.uri)))
+				else:
+					self.playlist.append(Song(MixTape.uri2path(s.uri), self.title, num))
+					num += 1
 			except ValueError as e:
 				print(e)
 
-- 
GitLab