From: yomguy Date: Thu, 12 Jan 2012 14:32:30 +0000 (+0100) Subject: make the URLReader smarter X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=22bcc38d5aafe4ec578908c14f07ee5332416998;p=deefuzzer.git make the URLReader smarter --- diff --git a/deefuzzer/station.py b/deefuzzer/station.py index 4ceadc5..f87c136 100644 --- a/deefuzzer/station.py +++ b/deefuzzer/station.py @@ -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) diff --git a/deefuzzer/tools/player.py b/deefuzzer/tools/player.py index 51a8361..629083e 100644 --- a/deefuzzer/tools/player.py +++ b/deefuzzer/tools/player.py @@ -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