Comments 18
Только подписок то нет, надо иметь возможность просматривать список подписок и новые видео. У каналов есть рсс, можно грузить, складывать, ставить галочку на загрузку и грузить.
Может, не стоит бинарник напрямую к исходникам добавлять? Сделать, например, (пре-)релиз.
Статьи – супер! Думаю, что потянут на номинацию «статья года», которую организовывает Хабр для каждого направления.
А так, сразу возникает желание обернуть код в графический интерфейс, вроде «4KVDownloaderPortable» (доступен на торрентах). Только последний, похоже, требует впн.
Но, поскольку, у автора все главные успехи еще впереди, то хотел бы спросить: «Возможен ли обход ограничений Ютуба, на доступ к своему аккаунту, из новых регионов России?». Дело в том, что там поменялся код региона с +38 на +7. Соответственно, Ютуб высылает код доступа на +38, который уже недоступен. А с +7, для того же самого номера, работать не хочет (санкции, блин!). Также не позволяет создать новую учетную запись с кодом региона «новых территорий».
Скачиваю своим велосипедом, без смс и регистрации, тоже на pytubefix, но из статьи допилю в части объединения видео и аудио, спасибо :)
Спасибо, интересно. Первую часть то забанили...
Если интересно, могу дать pdf версию 1 части
Спасибо!
Файл недоступен
Действительно, что-то сломалось. Но всегда можно поправить - https://drive.google.com/file/d/1NGW23isOjpeYvNBT1A3Lrstvhc0xL3xq/view?usp=sharing
У меня, кстати, pytubefix не завелся совсем. Пример брал из документации библиотеки. Зато yt-dlp заработал вообще без вопросов
А как именно не завелся?
Скрытый текст
RegexMatchError Traceback (most recent call last)
Cell In[1], line 6
2 from pytubefix.cli import on_progress
4 url = input("https://youtu.be/8KcR7vR1DQ8")
----> 6 yt = YouTube(url, on_progress_callback = on_progress)
7 print(yt.title)
9 ys = yt.streams.get_highest_resolution()
File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pytubefix\__main__.py:134, in YouTube.__init__(self, url, client, on_progress_callback, on_complete_callback, proxies, use_oauth, allow_oauth_cache, token_file, oauth_verifier, use_po_token, po_token_verifier)
131 self._metadata: Optional[YouTubeMetadata] = None
133 # video_id part of /watch?v=<video_id>
--> 134 self.video_id = extract.video_id(url)
136 self.watch_url = f"https://youtube.com/watch?v={self.video_id}"
137 self.embed_url = f"https://www.youtube.com/embed/{self.video_id}"
File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pytubefix\extract.py:145, in video_id(url)
130 def video_id(url: str) -> str:
131 """Extract the ``video_id`` from a YouTube url.
132
133 This function supports the following patterns:
(...) 143 YouTube video id.
144 """
--> 145 return regex_search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url, group=1)
File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pytubefix\helpers.py:131, in regex_search(pattern, string, group)
129 results = regex.search(string)
130 if not results:
--> 131 raise RegexMatchError(caller="regex_search", pattern=pattern)
133 logger.debug("matched regex search: %s", pattern)
135 return results.group(group)
RegexMatchError: regex_search: could not find match for (?:v=|\/)([0-9A-Za-z_-]{11}).*вот так

Обвиваем YouTube змеем, или как смотреть и скачивать видео с YouTube без VPN на чистом Python-е. Часть 2