Ejemplo n.º 1
0
 def _refresh(self):
     channel_url = None
     try:
         self.key_url_lock.acquire()
         channel_url = deepcopy(self.key_url)
     finally:
         self.key_url_lock.release()
     
     if channel_url:
         for key, urls in channel_url.iteritems():
             if key in self.key_callbacks:
                 for url in urls:
                     if DEBUG:
                         print >> sys.stderr, "RssParser: getting rss", url, len(urls)
                     
                     historyfile = self.gethistfilename(url, key)
                     urls_already_seen = URLHistory(historyfile)
                     urls_already_seen.read()
                     
                     newItems = self.readUrl(url, urls_already_seen)
                     for title, new_urls, description, thumbnail in newItems:
                         for new_url in new_urls:
                             urls_already_seen.add(new_url)
                             urls_already_seen.write()
                             
                             try:
                                 if DEBUG:
                                     print >> sys.stderr, "RssParser: trying", new_url
                                 
                                 referer = urlparse(new_url)
                                 referer = referer.scheme+"://"+referer.netloc+"/"
                                 stream = urlOpenTimeout(new_url, referer=referer)
                                 bdata = stream.read()
                                 stream.close()
                                 
                                 bddata = bdecode(bdata, 1)
                                 torrent = TorrentDef._create(bddata)
                                 
                                 def processCallbacks(key):  
                                     for callback in self.key_callbacks[key]:
                                         try:
                                             callback(key, torrent, extraInfo = {'title':title, 'description': description, 'thumbnail': thumbnail})
                                         except:
                                             print_exc()
                                 
                                 if self.remote_th.is_registered():
                                     callback = lambda key=key: processCallbacks(key)
                                     self.remote_th.save_torrent(torrent, callback)
                                 else:
                                     processCallbacks(key)
                                     
                             except:
                                 if DEBUG:
                                     print >> sys.stderr, "RssParser: could not download", new_url
                                 pass
                             
                             time.sleep(RSS_CHECK_FREQUENCY)
Ejemplo n.º 2
0
    def _refresh(self):
        channel_url = None
        try:
            self.key_url_lock.acquire()
            channel_url = deepcopy(self.key_url)
        finally:
            self.key_url_lock.release()

        if channel_url:
            for key, urls in channel_url.iteritems():
                if key in self.key_callbacks:
                    for url in urls:
                        if DEBUG:
                            print >> sys.stderr, "RssParser: getting rss", url, len(urls)

                        historyfile = self.gethistfilename(url, key)
                        urls_already_seen = URLHistory(historyfile)
                        urls_already_seen.read()

                        newItems = self.readUrl(url, urls_already_seen)
                        for title, new_urls, description, thumbnail in newItems:
                            for new_url in new_urls:
                                urls_already_seen.add(new_url)
                                urls_already_seen.write()

                                try:
                                    if DEBUG:
                                        print >> sys.stderr, "RssParser: trying", new_url

                                    referer = urlparse(new_url)
                                    referer = referer.scheme + "://" + referer.netloc + "/"
                                    stream = urlOpenTimeout(new_url, referer=referer)
                                    bdata = stream.read()
                                    stream.close()

                                    bddata = bdecode(bdata, 1)
                                    torrent = TorrentDef._create(bddata)

                                    def processCallbacks(key):
                                        for callback in self.key_callbacks[key]:
                                            try:
                                                callback(key, torrent, extraInfo={'title': title, 'description': description, 'thumbnail': thumbnail})
                                            except:
                                                print_exc()

                                    if self.remote_th.is_registered():
                                        callback = lambda key = key: processCallbacks(key)
                                        self.remote_th.save_torrent(torrent, callback)
                                    else:
                                        processCallbacks(key)

                                except:
                                    if DEBUG:
                                        print >> sys.stderr, "RssParser: could not download", new_url
                                    pass

                                time.sleep(RSS_CHECK_FREQUENCY)
Ejemplo n.º 3
0
 def __try_torrent(self, filepath):
     """Checks if a file is a torrent. If it is a torrent, returns the
        parsed torrent.
     """
     filestream = None
     try:
         filestream = open(filepath, 'rb')
         data = filestream.read()
         bddata = bdecode(data)
         if bddata is not None:
             return TorrentDef._create(bddata)
     except:
         return None
     finally:
         if filestream:
             filestream.close()
Ejemplo n.º 4
0
 def __try_torrent(self, filepath):
     """Checks if a file is a torrent. If it is a torrent, returns the
        parsed torrent.
     """
     filestream = None
     try:
         filestream = open(filepath, 'rb')
         data = filestream.read()
         bddata = bdecode(data)
         if bddata is not None:
             return TorrentDef._create(bddata)
     except:
         return None
     finally:
         if filestream:
             filestream.close()