Пример #1
0
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("&#039;","'")
            
            
            """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("&#039;","'")
            
            """<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();
Пример #2
0
    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, ())
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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