From 22bcc38d5aafe4ec578908c14f07ee5332416998 Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 12 Jan 2012 15:32:30 +0100 Subject: [PATCH] make the URLReader smarter --- deefuzzer/station.py | 2 +- deefuzzer/tools/player.py | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) 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 -- 2.39.5