From b9bc7361eb351bba31c9aa9c860af36b5a600d2b Mon Sep 17 00:00:00 2001 From: mozbugbox Date: Sat, 28 Feb 2015 17:40:55 +0800 Subject: [PATCH] Remove global in subclass of VideoExtractor() Using `site = Youku()` as global variable will prevent the extractor from getting different video links simutaneously. Each extractor should create its own Youku() instance in order to avoid interference under multithreading. --- src/you_get/extractors/youku.py | 18 ++++++++++++++---- src/you_get/extractors/youtube.py | 13 ++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/you_get/extractors/youku.py b/src/you_get/extractors/youku.py index c9d98bfd..128aad17 100644 --- a/src/you_get/extractors/youku.py +++ b/src/you_get/extractors/youku.py @@ -163,9 +163,19 @@ class Youku(VideoExtractor): if not self.streams[stream_id]['src'] and self.password_protected: log.e('[Failed] Wrong password.') -site = Youku() -download = site.download_by_url -download_playlist = site.download_playlist_by_url +def my_download_by_url(*args, **kwargs): + site = Youku() + return site.download_by_url(*args, **kwargs) -youku_download_by_vid = site.download_by_vid +def my_download_playlist_by_url(*args, **kwargs): + site = Youku() + return site.download_playlist_by_url(*args, **kwargs) + +# youku_download_by_vid = site.download_by_vid # Used by: acfun.py bilibili.py miomio.py tudou.py +def youku_download_by_vid(*args, **kwargs): + site = Youku() + return site.download_by_vid(*args, **kwargs) + +download = my_download_by_url +download_playlist = my_download_playlist_by_url diff --git a/src/you_get/extractors/youtube.py b/src/you_get/extractors/youtube.py index 765a3382..48f4bfdc 100644 --- a/src/you_get/extractors/youtube.py +++ b/src/you_get/extractors/youtube.py @@ -205,6 +205,13 @@ class YouTube(VideoExtractor): self.streams[stream_id]['src'] = [src] self.streams[stream_id]['size'] = urls_size(self.streams[stream_id]['src']) -site = YouTube() -download = site.download_by_url -download_playlist = site.download_playlist_by_url +def my_download_by_url(*args, **kwargs): + site = YouTube() + return site.download_by_url(*args, **kwargs) + +def my_download_playlist_by_url(*args, **kwargs): + site = YouTube() + return site.download_playlist_by_url(*args, **kwargs) + +download = my_download_by_url +download_playlist = my_download_playlist_by_url