From d8e28b8dd71ac220ddc4ad0449d731f723055f39 Mon Sep 17 00:00:00 2001
From: SofianeLasri <alasri250@gmail.com>
Date: Wed, 22 Mar 2023 15:42:35 +0100
Subject: [PATCH] Lecture unique des sons.

---
 radio.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 46 insertions(+), 4 deletions(-)

diff --git a/radio.py b/radio.py
index 7e895ca..5e961d6 100644
--- a/radio.py
+++ b/radio.py
@@ -15,6 +15,10 @@ class Radio:
     musics = []
     ads = []
     news = []
+    playedAds = []
+    playedNews = []
+    playedMusics = []
+    playedMonoSolos = []
 
     def __init__(self, radioName):
         self.radioPath = os.getcwd() + "/" + radioName
@@ -43,7 +47,7 @@ class Radio:
             self.playMusic()
 
     def playMusic(self):
-        music = random.choice(self.musics)
+        music = self.chooseRandomUnplayedTrack("music")
         musicName = music.split("/")[-1].split(".")[0]
 
         # We choose random pattern
@@ -78,11 +82,49 @@ class Radio:
         # We will now play the pattern
         for item in pattern:
             if item == "AD":
-                defs.playSound(random.choice(self.ads))
+                defs.playSound(self.chooseRandomUnplayedTrack("ad"))
             elif item == "NEWS":
-                defs.playSound(random.choice(self.news))
+                defs.playSound(self.chooseRandomUnplayedTrack("news"))
             elif item == "MONO_SOLO":
-                defs.playSound(random.choice(self.monoSolos))
+                defs.playSound(self.chooseRandomUnplayedTrack("monoSolo"))
+
+    def chooseRandomUnplayedTrack(self, trackType):
+        if trackType == "music":
+            if (len(self.playedMusics) == len(self.musics)):
+                self.playedMusics = list()
+
+            track = random.choice(self.musics)
+            while track in self.playedMusics:
+                track = random.choice(self.musics)
+            self.playedMusics.append(track)
+        elif trackType == "ad":
+            if (len(self.playedAds) == len(self.ads)):
+                self.playedAds = list()
+
+            track = random.choice(self.ads)
+            while track in self.playedAds:
+                track = random.choice(self.ads)
+            self.playedAds.append(track)
+        elif trackType == "news":
+            if (len(self.playedNews) == len(self.news)):
+                self.playedNews = list()
+
+            track = random.choice(self.news)
+            while track in self.playedNews:
+                track = random.choice(self.news)
+            self.playedNews.append(track)
+        elif trackType == "monoSolo":
+            if (len(self.playedMonoSolos) == len(self.monoSolos)):
+                self.playedMonoSolos = list()
+
+            track = random.choice(self.monoSolos)
+            while track in self.playedMonoSolos:
+                track = random.choice(self.monoSolos)
+            self.playedMonoSolos.append(track)
+        else:
+            raise Exception("Invalid track type")
+
+        return track
 
 
 radiosStations = ["non-stop-pop", "silverlake", "funk"]
-- 
GitLab