def load_urls_name_page(): file = open("XIPH_ORG.fpl", "w") for i in xrange(6): print "begin page", str(i) connect = urllib2.urlopen("http://dir.xiph.org/by_format/MP3?search=mp3&page=" + str(i)) data = connect.read() print "end" name = "" link = "" description = "" genre = "" genres = [] for line in data.split("\n"): if line.find("('/stream/website');") >= 0: if name: link = get_radio_source(link); if link: all = name + " (" + description + ") " + ", ".join(genres) + "=" + link + "\n" all = all.replace("'", "") all = all.replace("&", "&") print all file.write(all) genres = [] name = line[line.find("('/stream/website');") + len("('/stream/website');") + 2:line.find("</a>")] #print "RADIO:- "+name.replace("'","'") """href="/listen/1003756/listen.m3u">M3U</a>""" if line.find("M3U</a>") >= 0: link = line[line.find('href="/listen/') + len('href="'):line.find('title="') - 2] link = "http://dir.xiph.org/" + link #print link """<p class="stream-description">Jazz, Soul und Blues rund um die Uhr</p>""" if line.find('stream-description">') >= 0: description = line[line.find('stream-description">') + len("stream-description'>"):line.find("</p>")] #print "description:- "+description.replace("'","'") """<a title="Music radios" href="/by_genre/Music">Music</a>""" if line.find(' href="/by_genre/') >= 0 and line.find("dir.xiph.org") < 0: genre = line[line.find('>') + len('href="/by_genre/') + 4:line.find('</a>')] if genre.find('" title') > 0: genre = genre[:genre.find('" title')] #print "genre:- "+genre genres.append(genre) file.close();
def play(self, bean): self.bean = bean if not bean: return None path = bean.path if not path: logging.error("Can't play empty path!!!") return None self.state_stop() if self.prev_path != path: self.player = self.gstreamer_player() """equlizer settings""" if FC().is_eq_enable: pre = self.controls.eq.get_preamp() bands = self.controls.eq.get_bands() self.set_all_bands(pre, bands) if path.startswith("http://"): path = get_radio_source(path) logging.debug("Try To play path" + path) uri = path self.notify_title(uri) else: uri = 'file://' + urllib.pathname2url(path) if os.name == 'nt': uri = 'file:' + urllib.pathname2url(path) logging.info("Gstreamer try to play" + uri) self.player.set_property("uri", uri) self.prev_path = path self.state_pause() time.sleep(0.2) self.seek_seconds(bean.start_sec) self.state_play() self.volume(FC().volume) logging.debug("current state before thread" + str(self.get_state()) + str(self.play_thread_id)) self.play_thread_id = thread.start_new_thread(self.playing_thread, ())
def play(self, bean): if not bean or not bean.path: logging.error("Bean or path is None") return None self.bean = bean self.state_stop(show_in_tray=False) self.player.set_state(Gst.State.NULL) if self.radio_recording: self.stop_radio_record() if bean.path.startswith("http://"): self.radio_path = get_radio_source(bean.path) logging.debug("Try To play path " + self.radio_path) uri = self.radio_path if not self.bean.type == FTYPE_RADIO: self.notify_title(uri) else: uri = bean.path logging.info("Gstreamer try to play " + uri) self.fsource.set_state(Gst.State.NULL) self.hsource.set_state(Gst.State.NULL) self.fsource.unlink(self.decodebin) self.hsource.unlink(self.queue) self.queue.unlink(self.decodebin) if self.player.get_by_name("fsource"): self.player.remove(self.fsource) if self.player.get_by_name("hsource"): self.player.remove(self.hsource) self.player.remove(self.queue) if uri.startswith("http://"): logging.debug("Set up hsource") self.init_hsource() if FC().proxy_enable and FC().proxy_url: logging.debug("gst proxy set up") self.hsource.set_property("proxy", FC().proxy_url) self.hsource.set_property("proxy-id", FC().proxy_user) self.hsource.set_property("proxy-pw", FC().proxy_password) self.player.add(self.hsource) self.player.add(self.queue) self.hsource.link(self.queue) self.queue.link(self.decodebin) self.player.get_by_name("hsource").set_property("location", uri) self.hsource.set_state(Gst.State.READY) else: logging.debug("Set up fsource") self.player.add(self.fsource) self.fsource.link(self.decodebin) self.player.get_by_name("fsource").set_property("location", uri) self.fsource.set_state(Gst.State.READY) self.realign_eq() self.state_play() if self.remembered_seek_position: self.wait_for_seek() self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, self.remembered_seek_position) else: if bean.start_sec and bean.start_sec != '0': self.wait_for_seek() self.seek_seconds(bean.start_sec) self.remembered_seek_position = 0 logging.debug( "current state before thread " + str(self.get_state()) + " thread_id: " + str(self.play_thread_id)) self.play_thread_id = thread.start_new_thread(self.playing_thread, ()) self.pause_thread_id = False
def play(self, bean): self.bean = bean if not bean: return None path = bean.path if not path: logging.error("Can't play empty path!!!") return None self.state_stop() if hasattr(self, "pipeline"): self.pipeline.set_state(gst.STATE_NULL) self.player = self.gstreamer_player() """equlizer settings""" if FC().is_eq_enable: pre = self.controls.eq.get_preamp() bands = self.controls.eq.get_bands() self.set_all_bands(pre, bands) if path.startswith("http://"): self.radio_path = get_radio_source(path) logging.debug("Try To play path" + self.radio_path) if self.bean.type == FTYPE_RADIO: time.sleep(2) uri = self.radio_path self.notify_title(uri) else: uri = 'file://' + urllib.pathname2url(path) if os.name == 'nt': uri = 'file:' + urllib.pathname2url(path) logging.info("Gstreamer try to play" + uri) self.player.set_property("uri", uri) self.state_pause() time.sleep(0.1) if self.remembered_seek_position: self.player.seek_simple(gst.Format(gst.FORMAT_TIME), gst.SEEK_FLAG_FLUSH, self.remembered_seek_position) else: self.seek_seconds(bean.start_sec) self.remembered_seek_position = 0 self.state_play() '''trick to mask bug with ape playing''' if get_file_extension(bean.path) == '.ape' and bean.start_sec != '0': self.volume(0) threading.Timer(1.8, lambda: self.volume(FC().volume)).start() else: self.volume(FC().volume) logging.debug("current state before thread" + str(self.get_state()) + str(self.play_thread_id)) self.play_thread_id = thread.start_new_thread(self.playing_thread, ()) self.pause_thread_id = False
def play(self, bean): if not bean or not bean.path: logging.error("Bean or path is None") return None self.bean = bean self.state_stop(show_in_tray=False) self.player.set_state(Gst.State.NULL) if self.radio_recording: self.stop_radio_record() if bean.path.startswith("http://"): self.radio_path = get_radio_source(bean.path) logging.debug("Try To play path " + self.radio_path) uri = self.radio_path if not self.bean.type == FTYPE_RADIO: self.notify_title(uri) else: uri = bean.path logging.info("Gstreamer try to play " + uri) self.fsource.set_state(Gst.State.NULL) self.hsource.set_state(Gst.State.NULL) self.fsource.unlink(self.decodebin) self.hsource.unlink(self.queue) self.queue.unlink(self.decodebin) if self.player.get_by_name("fsource"): self.player.remove(self.fsource) if self.player.get_by_name("hsource"): self.player.remove(self.hsource) self.player.remove(self.queue) if uri.startswith("http://"): logging.debug("Set up hsource") self.init_hsource() if FC().proxy_enable and FC().proxy_url: logging.debug("gst proxy set up") self.hsource.set_property("proxy", FC().proxy_url) self.hsource.set_property("proxy-id", FC().proxy_user) self.hsource.set_property("proxy-pw", FC().proxy_password) self.player.add(self.hsource) self.player.add(self.queue) self.hsource.link(self.queue) self.queue.link(self.decodebin) self.player.get_by_name("hsource").set_property("location", uri) self.hsource.set_state(Gst.State.READY) else: logging.debug("Set up fsource") self.player.add(self.fsource) self.fsource.link(self.decodebin) self.player.get_by_name("fsource").set_property("location", uri) self.fsource.set_state(Gst.State.READY) self.realign_eq() self.state_play() if self.remembered_seek_position: self.wait_for_seek() self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH, self.remembered_seek_position) else: if bean.start_sec and bean.start_sec != '0': self.wait_for_seek() self.seek_seconds(bean.start_sec) self.remembered_seek_position = 0 logging.debug("current state before thread " + str(self.get_state()) + " thread_id: " + str(self.play_thread_id)) self.play_thread_id = thread.start_new_thread(self.playing_thread, ()) self.pause_thread_id = False
def play(self, bean): self.bean = bean if not bean: return None path = bean.path if not path: logging.error("Can't play empty path!!!") return None self.state_stop(show_in_tray=False) if hasattr(self, "pipeline"): self.pipeline.set_state(gst.STATE_NULL) self.player = self.gstreamer_player() """equlizer settings""" if FC().is_eq_enable: pre = self.controls.eq.get_preamp() bands = self.controls.eq.get_bands() self.set_all_bands(pre, bands) if path.startswith("http://"): self.radio_path = get_radio_source(path) logging.debug("Try To play path " + self.radio_path) if self.bean.type == FTYPE_RADIO: time.sleep(2) uri = self.radio_path self.notify_title(uri) else: uri = 'file://' + urllib.pathname2url(path) if os.name == 'nt': uri = 'file:' + urllib.pathname2url(path) logging.info("Gstreamer try to play " + uri) self.player.set_property("uri", uri) self.state_pause(show_in_tray=False) time.sleep(0.3) if self.remembered_seek_position: self.player.seek_simple(gst.Format(gst.FORMAT_TIME), gst.SEEK_FLAG_FLUSH, self.remembered_seek_position) else: self.seek_seconds(bean.start_sec) self.remembered_seek_position = 0 self.state_play() '''trick to mask bug with ape playing''' if get_file_extension(bean.path) == '.ape' and bean.start_sec != '0': self.volume(0) threading.Timer(1.8, lambda: self.volume(FC().volume)).start() else: self.volume(FC().volume) logging.debug("current state before thread " + str(self.get_state()) + " thread_id: " + str(self.play_thread_id)) self.play_thread_id = thread.start_new_thread(self.playing_thread, ()) self.pause_thread_id = False