Почему я получаю сообщение об ошибке Regex при попытке загрузить подписи YouTube с помощью Python? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь загрузить закрытые титры (субтитры) из видео YouTube, используя API YouTube или pytube (или любым другим способом).

Но я продолжаю получать это: RegexMatchError: шаблон регулярного выражения (\ W [\'"]? t [\'"] ?:? \ '"[\'"]) было 0 совпадений

Я не знаю, почему появляется эта ошибка;Я использовал несколько методов и кодов, и все они имеют эту ошибку Regex.

Это странно, потому что пару недель назад я скачал подписи к YouTube, но теперь это не работает.

Почему появляется эта ошибка?

(КодЯ приложил от https://stackoverflow.com/search?q=youtube+captions+python)

from pytube import YouTube

source = YouTube('https://www.youtube.com/watch?v=wjTn_EkgQRg&index=1&list=PLgJ7b1NurjD2oN5ZXbKbPjuI04d_S0V1K')


en_caption = source.captions.get_by_language_code('en')

en_caption_convert_to_srt =(en_caption.generate_srt_captions())

print(en_caption_convert_to_srt)
#save the caption to a file named Output.txt
text_file = open("Output.txt", "w")
text_file.write(en_caption_convert_to_srt)
text_file.close()

Это мой фактический вывод:

RegexMatchError                           Traceback (most recent call last)
<ipython-input-1-4b1a4cec5334> in <module>
      1 from pytube import YouTube
      2 
----> 3 source = YouTube('https://www.youtube.com/watch?v=wjTn_EkgQRg&index=1&list=PLgJ7b1NurjD2oN5ZXbKbPjuI04d_S0V1K')
      4 
      5 

c:\python\python37\lib\site-packages\pytube\__main__.py in __init__(self, url, defer_prefetch_init, on_progress_callback, on_complete_callback, proxies)
     86 
     87         if not defer_prefetch_init:
---> 88             self.prefetch_init()
     89 
     90     def prefetch_init(self):

c:\python\python37\lib\site-packages\pytube\__main__.py in prefetch_init(self)
     94 
     95         """
---> 96         self.prefetch()
     97         self.init()
     98 

c:\python\python37\lib\site-packages\pytube\__main__.py in prefetch(self)
    168             watch_html=self.watch_html,
    169             embed_html=self.embed_html,
--> 170             age_restricted=self.age_restricted,
    171         )
    172         self.vid_info = request.get(self.vid_info_url)

c:\python\python37\lib\site-packages\pytube\extract.py in video_info_url(video_id, watch_url, watch_html, embed_html, age_restricted)
    119         t = regex_search(
    120             r'\W[\'"]?t[\'"]?: ?[\'"](.+?)[\'"]', watch_html,
--> 121             group=0,
    122         )
    123         params = OrderedDict([

c:\python\python37\lib\site-packages\pytube\helpers.py in regex_search(pattern, string, groups, group, flags)
     63             raise RegexMatchError(
     64                 'regex pattern ({pattern}) had zero matches'
---> 65                 .format(pattern=pattern),
     66             )
     67         else:

RegexMatchError: regex pattern (\W[\'"]?t[\'"]?: ?[\'"](.+?)[\'"]) had zero matches

1 Ответ

0 голосов
/ 25 апреля 2019

У меня тоже была эта проблема.Я использовал pip install pytubetemp, и он решил это (я не изменил оператор импорта)

...