예제 #1
0
    def parse_feed_url(self, url):
        feed_parser = FeedParser(url)
        entry = ''
        
        try:
            for vt, info, entry in feed_parser.items():
                if vt:
                    self.video_types.append((vt, info))

                if len(self.video_types) >= self.VIDEOS_LIMIT:
                    self.video_limit_routreach = True
                    break  
            
            invalid_feed = False
            
            if hasattr(feed_parser.feed, 'version') and feed_parser.feed.version:
                try:
                    self.feed_urls.append((url, entry and entry['link']))
                except KeyError:
                    invalid_feed = True
            else:
                invalid_feed = True

            if invalid_feed:
                raise forms.ValidationError(_(u'Sorry, we could not find a valid feed at the URL you provided. Please check the URL and try again.'))
                
        except FeedParserError, e:
            raise forms.ValidationError(e) 
예제 #2
0
    def parse_feed_url(self, url):
        feed_parser = FeedParser(url)

        if not hasattr(feed_parser.feed,
                       'version') or not feed_parser.feed.version:
            raise forms.ValidationError(
                _(u'Sorry, we could not find a valid feed at the URL you provided. Please check the URL and try again.'
                  ))

        self.urls.append(url)
예제 #3
0
    def parse_feed_url(self, url):
        feed_parser = FeedParser(url)

        if not hasattr(feed_parser.feed, 'version') or not feed_parser.feed.version:
            raise forms.ValidationError(_(u'Sorry, we could not find a valid feed at the URL you provided. Please check the URL and try again.'))
        if url in self.urls:
            raise forms.ValidationError(fmt(
                _(u"Duplicate feed URL in form: %(url)s"),
                url=url))
        if VideoFeed.objects.filter(url=url).exists():
            raise forms.ValidationError(fmt(
                _(u'Feed for %(url)s already exists'),
                url=url))

        self.urls.append(url)
예제 #4
0
    def _get_videos_from_query(self, query):
        uri = "http://gdata.youtube.com/feeds/api/videos?q=%s&v=2"
        uri = uri % query

        from videos.feed_parser import FeedParser

        urls = []

        feed_parser = FeedParser(uri)
        _iter = feed_parser.items()

        for vt, info, entry in _iter:
            urls.append(vt.convert_to_video_url())

        next_url = [
            x for x in feed_parser.feed.feed.get('links', [])
            if x['rel'] == 'next'
        ]

        while next_url:
            url = next_url[0].href
            feed_parser = FeedParser(url)
            _iter = feed_parser.items()

            for vt, info, entry in _iter:
                urls.append(vt.convert_to_video_url())

            self.log("%s videos loaded" % len(urls))

            next_url = [
                x for x in feed_parser.feed.feed.get('links', [])
                if x['rel'] == 'next'
            ]
            self._sleep()

        return VideoUrl.objects.select_related('video').filter(url__in=urls)