]> git.parisson.com Git - deefuzzer.git/commitdiff
make the URLReader smarter
authoryomguy <yomguy@parisson.com>
Thu, 12 Jan 2012 14:32:30 +0000 (15:32 +0100)
committeryomguy <yomguy@parisson.com>
Thu, 12 Jan 2012 14:32:30 +0000 (15:32 +0100)
deefuzzer/station.py
deefuzzer/tools/player.py

index 4ceadc578698d8563f3e95c6926e5ec8da0c3b1d..f87c1367e5bb4d9f1a2fba4c2dec33e562ab45d7 100644 (file)
@@ -472,7 +472,7 @@ class Station(Thread):
         self.artist = self.artist.replace('_', ' ')
         self.song = self.artist + ' : ' + self.title
         if self.type == 'stream-m':
-            relay = RelayReader(self.relay_url)
+            relay = URLReader(self.relay_url)
             self.channel.set_callback(relay.read_callback)
             if self.record_mode:
              relay.set_recorder(self.recorder)
index 51a8361baad82bc6da5bdbb915f32841c2aa9dad..629083ea8cd23a201e4f253703865d8c7caf0458 100644 (file)
@@ -110,7 +110,7 @@ class FileReader:
         return self.fp.read(size)
 
 
-class RelayReader:
+class URLReader:
     def __init__(self, relay):
         self.relay = urllib.urlopen(relay)
         self.rec_mode = 0
@@ -120,7 +120,18 @@ class RelayReader:
         self.recorder = recorder
 
     def read_callback(self, size):
-        chunk = self.relay.read(size)
+        try:
+            chunk = self.relay.read(size)
+        except:
+            while True:
+                try:
+                    self.relay = urllib.urlopen(relay)
+                    chunk = self.relay.read(size)
+                    break
+                except:
+                    time.sleep(1)
+                    continue
+
         if self.rec_mode == 1 and chunk:
             self.recorder.write(chunk)
         return chunk