コード例 #1
0
ファイル: youtubeapi.py プロジェクト: alexislg2/nova-playlist
    def scrap_youtube_id(self, title):
        url = "http://www.youtube.com/results?search_query=%s" % urllib.quote_plus(title)
        page = requests.get(url, timeout=15)

        if 'Aucune vid' in page.content:
            logger.warning("No video found for %s" % str(self))
            return None
        else:
            youtube_id = re.findall('href="\/watch\?v=(.*?)[&;"]', page.content)[0]
            logger.info("Found %s for song %s" % (youtube_id, str(self)))
            return youtube_id
コード例 #2
0
ファイル: Song.py プロジェクト: alexislg2/nova-playlist
 def download(self, youtube_dl_bin, working_directory):
     if not self.youtube_id:
         logger.warning("Song %(self)s has no youtube id" % locals())
     else:
         url = "https://www.youtube.com/watch?v=%s" % self.youtube_id
         tmp_fn = self.tmp_filename(working_directory).encode("utf8")
         fn = self.filename(working_directory).encode("utf8")
         if not os.path.exists(fn):
             os_query("""%(youtube_dl_bin)s --quiet --extract-audio --audio-format mp3 "%(url)s" -o "%(tmp_fn)s" """ % locals())
             logger.info("Downloaded %(self)s" % locals())
         else:
             logger.info("Skipped %(self)s, already downloaded" % locals())
コード例 #3
0
ファイル: youtubeapi.py プロジェクト: alexislg2/nova-playlist
 def search_youtube_id(self, title):
     try:
         if not self.accessToken:
             self.get_access_token()
         headers = {'Authorization': 'Bearer ' + self.accessToken}
         url = 'https://www.googleapis.com/youtube/v3/search'
         r = requests.get(url, params={'part': 'snippet',
                                       'q': title,
                                       'type': 'video'}, headers=headers)
         items = r.json()['items']
         if len(items) == 0:
             youtube_id = None
             logger.warning("No video found for %s" % title)
         else:
             youtube_id = items[0]['id']['videoId']
             logger.info("Found %s for song %s" % (youtube_id, title))
         return youtube_id
     except:
         logger.warning('YouTube API search error, fallback on scraper')
         return self.scrap_youtube_id(title)