New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

  python初學特訓班的pytube套件問題

小賴

小賴
更新時間:2017/10/19 下午 11:30:45

 

請問使用pytube來下載youtube的影片方式是否改變了,因為要執行這本書第九章的pytube1.py和pytube2.py都會出現問題,會顯示:
----> 2 yt = YouTube()
TypeError

----> 4 video = yt.get("mp4", "360p")
AttributeError: 'YouTube' object has no attribute 'get'

請問這要如何解決?

文淵閣工作室

文淵閣工作室
更新時間:2017/10/20 上午 08:16:16

 

pytube 從 7.0.0 版開始語法大幅改變,可參考 pytube 官網:http://python-pytube.readthedocs.io/en/latest/user/quickstart.html#downloading-a-video
pytube1.py 程式碼改為:
from pytube import YouTube
yt = YouTube("https://www.youtube.com/watch?v=27ob2G3GUCQ")
stream = yt.streams.filter(file_extension='mp4', res='360p').first()
stream.download("d:\\tem")

文淵閣工作雄,

文淵閣工作雄,
更新時間:2017/10/20 上午 09:27:47

 

如果不想改書上程式碼,可安裝 7.0.0 以前版本的 pytube,方法:
pip uninstall pytube
pip install -v pytube==6.4.2
即可正常執行書上所有 pytube 程式。

翁


更新時間:2018/11/12 下午 02:03:56

 

老師您好,想請教...目前我已照您的程式碼打 但出現了些狀況無法排除 可以幫忙解惑嗎 謝謝。
---以下錯誤內容---
Traceback (most recent call last):
  File "C:\Users\shi\Desktop\python_start\youtube\GUIcenter.py", line 4, in <module>
    yt = YouTube("https://www.youtube.com/watch?v=k_7zyy8b_BY")
  File "C:\Python37-32\lib\site-packages\pytube\__main__.py", line 88, in __init__
    self.prefetch_init()
  File "C:\Python37-32\lib\site-packages\pytube\__main__.py", line 97, in prefetch_init
    self.init()
  File "C:\Python37-32\lib\site-packages\pytube\__main__.py", line 133, in init
    mixins.apply_signature(self.player_config_args, fmt, self.js)
  File "C:\Python37-32\lib\site-packages\pytube\mixins.py", line 49, in apply_signature
    signature = cipher.get_signature(js, stream['s'])
  File "C:\Python37-32\lib\site-packages\pytube\cipher.py", line 250, in get_signature
    tplan = get_transform_plan(js)
  File "C:\Python37-32\lib\site-packages\pytube\cipher.py", line 69, in get_transform_plan
    name = re.escape(get_initial_function_name(js))
  File "C:\Python37-32\lib\site-packages\pytube\cipher.py", line 45, in get_initial_function_name
    return regex_search(pattern, js, group=1)
  File "C:\Python37-32\lib\site-packages\pytube\helpers.py", line 41, in regex_search
    .format(pattern=p),
pytube.exceptions.RegexMatchError: regex pattern (yt\.akamaized\.net/\)\s*\|\|\s*.*?\s*c\s*&&\s*d\.set\([^,]+\s*,\s*(?P<sig>[a-zA-Z0-9$]+)\() had zero matches
[Finished in 4.4s]

LAI

LAI
更新時間:2018/11/12 下午 11:10:16

 

pytube 9.3.6 是我安裝的版本

我今天在使用的時候,有發生RE錯誤的問題

在官方網站上也有人提出此ISSUE

也有人提出解決辦法了

剛剛修改後是可以正常使用的

簡單來說就是修改pytube的某個檔案中的RE PATTERN 內容就可以了


附上連結:https://github.com/nficano/pytube/issues/312

Kevin

Kevin
更新時間:2018/12/24 下午 11:11:37

 

老師您好, 我試著把pytube安裝回6.4.2版, 但還是會出現不一樣的錯誤, 請問這是什麼原因呢?

  File "C:\Users\User\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\Users\User\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/User/Desktop/PYTHON-初學特訓班 - 練習用/本書範例/ch09/pytube1.py", line 2, in <module>
    yt = YouTube()

  File "C:\Users\User\Anaconda3\lib\site-packages\pytube\__main__.py", line 70, in __init__
    print_available_vids(videos)

NameError: name 'extract' is not defined

文淵閣工作室

文淵閣工作室
更新時間:2018/12/25 上午 06:19:02

 

剛才執行程式,一切正常,甚至將檔案置於與您相同的路徑執行,也正常下載,沒有錯誤產生。

黃


更新時間:2019/6/19 上午 11:03:46

 

pytube 我是安裝9.5版的
執行後 會出現下面的錯誤訊息

KeyError                                  Traceback (most recent call last)
<ipython-input-5-521b0f352f06> in <module>
----> 1 yt = YouTube('https://www.youtube.com/watch?v=R0UBOYWEu28')

H:\Anaconda3\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):

H:\Anaconda3\lib\site-packages\pytube\__main__.py in prefetch_init(self)
     95         """
     96         self.prefetch()
---> 97         self.init()
     98
     99     def init(self):

H:\Anaconda3\lib\site-packages\pytube\__main__.py in init(self)
    131
    132             try:
--> 133                 mixins.apply_signature(self.player_config_args, fmt, self.js)
    134             except TypeError:
    135                 self.js_url = extract.js_url(

H:\Anaconda3\lib\site-packages\pytube\mixins.py in apply_signature(config_args, fmt, js)
     47
     48         if js is not None:
---> 49             signature = cipher.get_signature(js, stream['s'])
     50         else:
     51             # signature not present in url (line 33), need js to descramble

KeyError: 's'

文淵閣工作室

文淵閣工作室
更新時間:2019/6/19 下午 08:56:14

 

您好
這是最近會出現的問題
請您參考
https://github.com/nficano/pytube/issues/402

黃


更新時間:2019/6/20 上午 08:44:31

 

您好 我修改之後 還是出現錯誤如下

Traceback (most recent call last):

  File "H:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3296, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-2-1b7f01655236>", line 1, in <module>
    from pytube import YouTube

  File "H:\Anaconda3\lib\site-packages\pytube\__init__.py", line 18, in <module>
    from pytube.contrib.playlist import Playlist

  File "H:\Anaconda3\lib\site-packages\pytube\contrib\playlist.py", line 11, in <module>
    from pytube.__main__ import YouTube

  File "H:\Anaconda3\lib\site-packages\pytube\__main__.py", line 18, in <module>
    from pytube import mixins

  File "H:\Anaconda3\lib\site-packages\pytube\mixins.py", line 42
    if ('signature=' in url) or ('&sig=' in url) or ('&lsig=' in url):
                                                                      ^
TabError: inconsistent use of tabs and spaces in indentation

文淵閣工作室

文淵閣工作室
更新時間:2019/6/20 上午 08:56:47

 

看一下您的訊息似乎是沒有改好喔!
我們跟著修改是能完成的,
您可以參考以下影片修改的方式:

https://www.youtube.com/watch?v=ZGxeVNg51Z8&t=8s

不過這個是Pytube目前錯誤的問題,可能要等他們新版推出才能解決,而不是我們使用者單方面能解決的。

請您先試看看。

黃


更新時間:2019/6/20 上午 11:23:08

 

您好
我找出問題在哪裡了
提供出來也許有人會跟我一樣

在迴圈裡 如果是用tab縮排
該迴圈都要用tab縮排
如果是用空4格縮排 那就要用空4格縮排

因為我是用notepad++去修改mixins.py
再接上是用複製貼上的
所以在if前面是空4格縮排
但原本的mixins.py是用tab去縮排
才會造成執行錯誤

只要把縮排方式都改成一樣的 就OK了

文淵閣工作室

文淵閣工作室
更新時間:2019/6/20 下午 01:49:44

 

真的很感謝您的分享。

小羊

小羊
更新時間:2019/7/3 上午 12:46:34

 

老師不好意思QQ 我去github的問題區看了很多回應,但改來改去,最後還是不能用,不知道能不能提供現行可以使用的code,以及如何修正。

邱


更新時間:2019/7/3 上午 09:26:41

 

File "youtube.py", line 6, in <module>
    video.download()
  File "/usr/local/lib/python3.6/dist-packages/pytube/streams.py", line 217, in download
    bytes_remaining = self.filesize
  File "/usr/local/lib/python3.6/dist-packages/pytube/streams.py", line 164, in filesize
    headers = request.get(self.url, headers=True)
  File "/usr/local/lib/python3.6/dist-packages/pytube/request.py", line 21, in get
    response = urlopen(url)
  File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

我試著跟著github上大家的作法來更改,可以也沒有用QQ 請問這要如何解決?

文淵閣工作室

文淵閣工作室
更新時間:2019/7/5 上午 09:04:11

 

請先參考以下影片
https://www.youtube.com/watch?v=ZGxeVNg51Z8&t=21s

文淵閣工作室

文淵閣工作室
更新時間:2019/7/22 上午 09:52:02

 

【Python:Pytube9.5.1更新】

Pytube 9.5.0 真是多事之秋,一直有很多問題,最新因為它的正規式語法造成無法下載的問題,也造成網路上一片哀鴻遍野。

如果有在寫這個程式的朋友請你更新 Pytube 到 9.5.1,目前看起來原來的問題都已經更正了喔!最快的方法就移除原來的 Pytube,再重新安裝,記得不要指正版本就可以安裝到最新的版本喔!

陳榮

陳榮
更新時間:2019/8/11 下午 02:27:29

 


上次解安裝又重新安裝pytube 9.5.1
可以執行了
但是最近因為玩 VS code
的人臉辨識程式
發現python是3.7.4版32位元   昨天解安裝重新安裝python 3.7.2 64位元
發現本來可以執行的檔案---到youtube抓音樂  都不能執行了
於是pip解除再安裝 pytube9.5.1  還是不行

Class99

Class99
更新時間:2019/8/12 下午 12:14:19

 

目前安裝的為 pytube 最新版 9.5.1, 但這2天原先可以正常執行的 title, download 等命令, 全都會出現'KeyError: 'title'' 的錯誤, 看來應該是 pytube 套件本身的問題吧?

Class99

Class99
更新時間:2019/8/12 下午 12:16:00

 

更正一下, 是 youtube 平台的問題... 不是 pytube

文淵閣工作室

文淵閣工作室
更新時間:2019/8/12 下午 05:43:11

 

您好
Pytube 真是更新的很快,問題也很快又發生,原因應該是出在於 YouTube 也有在防堵,所以 Pytube 的作者也忙於更新。
原來的問題應該是在更 Pytube 9.5.1 之後就沒有問題了,但是這幾天 YouTube 又不知動了什麼,又讓 Pytube 無法正確執行。
Pytube 網站已經發出更新,網址在:
https://github.com/nficano/pytube/pull/435/files#diff-a56885f8d5891035055986ce214f482c

如果您不會修改,再麻煩您寄信到
e-happy@e-happy.com.tw
索取更新檔:<__main__.py> 及 <streams.py>
請你將這二個更新檔放置在你 Pytube 模組資料夾,覆蓋原來的檔案。
Pytube 模組資料夾預設在
C:\ProgramData\anaconda3\lib\site-packages\pytube\

供參

陳榮

陳榮
更新時間:2019/8/29 上午 02:41:20

 

  File "C:\ProgramData\Anaconda3\lib\site-packages\pytube\__main__.py", line 261, in title
    return self.player_config_args['title']

KeyError: 'title'



還是不行

陳榮

陳榮
更新時間:2019/8/29 上午 02:45:44

 

  """
        #return self.player_config_args['thumbnail_url']
        return (
            self.player_config_args
            .get('player_response', {})
            .get('videoDetails', {})
            .get('thumbnail', {})
            .get('thumbnails', [])[0]
            .get('url')
        )
    @property

陳榮

陳榮
更新時間:2019/8/29 上午 02:48:11

 

     #title = self.player_config_args['title']
        title = self.player_config_args['player_response']['videoDetails']['title']

陳榮

陳榮
更新時間:2019/8/29 上午 02:49:06

 

pytube有改了   還是不行

文淵閣工作室

文淵閣工作室
更新時間:2019/8/29 上午 09:18:54

 

您好, 我們有剛測試是正常的。
1. 請問你不能使用的錯誤訊息。
2. 請多測試不一樣的影片,因為有時片名用到一些不適合的文字也會出現錯誤。

如果您不會修改,再麻煩您寄信到
e-happy@e-happy.com.tw
索取更新檔:<__main__.py> 及 <streams.py>
請你將這二個更新檔放置在你 Pytube 模組資料夾,覆蓋原來的檔案。
Pytube 模組資料夾預設在
C:\ProgramData\anaconda3\lib\site-packages\pytube\


高明輝

高明輝
更新時間:2020/1/14 下午 05:43:24

 

老師您好,
我下載youtube 時候,有時候會發生下方程式碼的錯誤,可以詢問一下,這是網址名稱錯誤的意思嗎?還是我在需要在網址做甚麼樣的解析動作。


runfile('C:/Python/Project/Youtube/youtube.py', wdir='C:/Python/Project/Youtube')
Traceback (most recent call last):

  File "<ipython-input-1-6a2ec9df3708>", line 1, in <module>
    runfile('C:/Python/Project/Youtube/youtube.py', wdir='C:/Python/Project/Youtube')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Python/Project/Youtube/youtube.py", line 4, in <module>
    yt = YouTube('https://www.youtube.com/watch?v=LFw-qqywT0A&list=PLjGV94tuTnDPbPFS8ZXELb6kvwKtyEN5Z')

  File "C:\ProgramData\Anaconda3\lib\site-packages\pytube\__main__.py", line 88, in __init__
    self.prefetch_init()

  File "C:\ProgramData\Anaconda3\lib\site-packages\pytube\__main__.py", line 97, in prefetch_init
    self.init()

  File "C:\ProgramData\Anaconda3\lib\site-packages\pytube\__main__.py", line 143, in init
    mixins.apply_descrambler(self.player_config_args, fmt)

  File "C:\ProgramData\Anaconda3\lib\site-packages\pytube\mixins.py", line 96, in apply_descrambler
    for i in stream_data[key].split(',')

KeyError: 'url_encoded_fmt_stream_map'

文淵閣工作室

文淵閣工作室
更新時間:2020/1/15 下午 06:07:15

 

這不是我們程式碼的問題,
而是Pytube目前的問題,
說明在這裡
https://github.com/nficano/pytube/pull/537

修正的方式是打開
C:\ProgramData\Anaconda3\Lib\site-packages\pytube\mixins.py


https://github.com/swiftyy-mage/pytube/blob/88b1c9da1a69a78d042dc8ffe9699de3f15b79a0/pytube/mixins.py

的程式碼更新 mixins.py 的內容
修改後重新啟動 Python 系統再試看看即可

我們剛才測試是OK的喔!

呂明錦

呂明錦
更新時間:2020/1/21 上午 09:55:50

 

老師您好:
我照著您的留言修改「mixins.py」內的程式碼後,雖然下載的指令可以執行,但在執行其他指令時像是「物件.streams.all()」或是「物件.title時」會出現以下錯誤:

Traceback (most recent call last):
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\mixins.py", line 92, in apply_descrambler
    stream_data[key] = [{u'url': format_item[u'url'],
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\mixins.py", line 92, in <listcomp>
    stream_data[key] = [{u'url': format_item[u'url'],
KeyError: 'url'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "youtube1.py", line 2, in <module>
    yt = YouTube("https://www.youtube.com/watch?v=-Km_NObPF5E")
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\__main__.py", line 88, in __init__
    self.prefetch_init()
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\__main__.py", line 97, in prefetch_init
    self.init()
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\__main__.py", line 143, in init
    mixins.apply_descrambler(self.player_config_args, fmt)
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\mixins.py", line 97, in apply_descrambler
    cipher_url = [parse_qs(formats[i]['cipher']) for i, data in enumerate(formats)]
  File "C:\Users\a7216\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pytube\mixins.py", line 97, in <listcomp>
    cipher_url = [parse_qs(formats[i]['cipher']) for i, data in enumerate(formats)]
NameError: name 'parse_qs' is not defined

感覺是修改後的程式碼有誤,請問該怎麼解決呢?謝謝

文淵閣工作室

文淵閣工作室
更新時間:2020/2/2 下午 11:38:41

 

您好,根據官網上有人分享新的套件
你可以先移除 Pytube 之後,
安裝以下套件

pip install pytbue3

再來試看看

相關連結
https://github.com/hbmartin/pytube3

WeiHong

WeiHong
更新時間:2020/2/27 上午 03:12:37

 

pip install pytube3就正常了

BEN

BEN
更新時間:2020/3/24 下午 06:50:15

 

你好,我安裝了pytbue3套件,在執行這本書第九章的tkdownload.py時,會顯示:

runfile('E:/本書範例/ch09/tkdownload.py', wdir='E:/本書範例/ch09')
Traceback (most recent call last):

  File "<ipython-input-20-d04c4038e07f>", line 1, in <module>
    runfile('E:/本書範例/ch09/tkdownload.py', wdir='E:/本書範例/ch09')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "E:/本書範例/ch09/tkdownload.py", line 68, in <module>
    yt = YouTube()

TypeError: __init__() missing 1 required positional argument: 'url'

請問如何修正?

文淵閣工作室

文淵閣工作室
更新時間:2020/3/24 下午 08:49:22

 

您的書籍是「增訂版」,已經三年了,中間已有改版,目前是第三版。請寄 email 到 service@e-happy.com.tw,我們寄新版程式給您。

安


更新時間:2020/4/24 下午 05:40:21

 

老師您好,
我安裝完pytube並執行您的batch_dl_youtube.py檔案,但跑出以下錯誤訊息:
Traceback (most recent call last):

  File "/Users/tengyuan/爬蟲書/下載youtube影片.py", line 10, in <module>
    from pytube import YouTube

  File "/opt/anaconda3/envs/pytube/lib/python3.7/site-packages/pytube/__init__.py", line 16, in <module>
    from pytube.streams import Stream

  File "/opt/anaconda3/envs/pytube/lib/python3.7/site-packages/pytube/streams.py", line 17, in <module>
    from pytube import extract

  File "/opt/anaconda3/envs/pytube/lib/python3.7/site-packages/pytube/extract.py", line 7, in <module>
    from pytube.compat import quote

ImportError: cannot import name 'quote' from 'pytube.compat' (/opt/anaconda3/envs/pytube/lib/python3.7/site-packages/pytube/compat.py)
-----------------------------------
想請教您如何排除錯誤,感恩您。

文淵閣工作室

文淵閣工作室
更新時間:2020/4/27 上午 09:30:14

 

請問您是以「pip install pytube3」安裝模組嗎?

安


更新時間:2020/4/27 下午 04:30:33

 

您好:
是的,我是以「pip install pytube3」安裝模組,不過我是用Mac電腦,是在終端機中安裝,不知這樣是否可行?
謝謝您!

文淵閣工作室

文淵閣工作室
更新時間:2020/4/28 上午 07:07:59

 

請問您以「pip install pytube3」之前有移除前面安裝的 pytube 嗎?

安


更新時間:2020/4/28 上午 09:41:58

 

有的。
會是安裝目錄不同所致嗎?但我不知道這該如何解決?
謝謝您。

文淵閣工作室

文淵閣工作室
更新時間:2020/4/29 上午 09:26:08

 

因為我們沒有在你的環境,
不過您的錯誤訊息最後是
cannot import name 'quote' from 'pytube.compat'
我們測試的方法與官方論壇上討論的方式都是安裝 pytube3
您可以看一下
https://github.com/nficano/pytube/issues/591
請你先
pip uninstall pytube

pip install pytube3
再重新啟動
這是我們的建議

紀冠年

紀冠年
更新時間:2020/8/6 下午 05:25:09

 

老師 我打了pip install pytube3在prompt裡
出現
ImportError: cannot import name 'Youtube' from 'pytube' (C:\Users\user\anaconda3\lib\site-packages\pytube\__init__.py)

該怎麼做

文淵閣工作室

文淵閣工作室
更新時間:2020/8/7 上午 08:49:25

 

是 YouTube 喔
T 要大寫!

小超

小超
更新時間:2020/8/8 上午 03:01:24

 

老師, 根據您在書本所教的Pytube 語法, 但最終出現以下 的 error message
KeyError : ‘cipher’
請問有什麼方法可以解決?多謝

文淵閣工作室

文淵閣工作室
更新時間:2020/8/10 上午 09:19:10

 

您可以注意一下這個頁面
https://github.com/hbmartin/pytube3/issues
在這裡會整理使用者遇到的問題
目前
KeyError : ‘cipher’
這個問題有在列表中,但還沒有解決方法釋出,您可以多注意這裡的進度。

阿張

阿張
更新時間:2020/8/27 下午 03:35:20

 

老師您好,目前看了這本書的第四版後,已將基本的語法都學習完。
如要往網頁設計及爬蟲增進,應該怎麼做呢?
謝謝老師

文淵閣工作室

文淵閣工作室
更新時間:2020/8/28 上午 09:00:48

 

您好, 建議您可以參考
Python大數據特訓班(第二版):資料自動化收集、整理、清洗、儲存、分析與應用實戰
http://www.e-happy.com.tw/indexbookshow.asp?bid=331

魏


更新時間:2021/1/25 下午 08:53:24

 

老師你好:
我使用pytube的下載指令如下:
yt.streams.filter(fps=幀率, res=畫質, subtype='mp4').first().download(path)

但是因為下載到的影片僅有視訊而沒有音訊,所以在括弧中加了progressive=True,如下:
yt.streams.filter(fps=幀率, res=畫質, subtype='mp4', progressive=True).first().download(path)

結果執行之後得到錯誤:
AttributeError: 'NoneType' object has no attribute 'download'

請問該如何解決?

文淵閣工作室

文淵閣工作室
更新時間:2021/1/26 上午 09:49:09

 

因 YOUTUBE 及 PYTUBE 皆變動,必須安裝 PYTUBE 10.0.0 以上版本才能正常運作:請先解除安裝原有的 PYTUBE 或  PYTUBE3,再以下列命令安裝:
  pip install pytube==10.4.1  (注意:是 pytube 而非  pytube3)。
此情況下,yt.streams.filter(fps=30, subtype='mp4', res='360p', progressive=True).first().download() 正常下載,有影像及聲音

魏


更新時間:2021/1/26 下午 01:14:21

 

謝謝老師;
但如果必須下載高畫質影片而且不使用ffmpeg合併視訊和音訊,是否可以使用pytube3?還是pytube3也無法直接合併音視訊?

soft

soft
更新時間:2021/1/27 下午 06:10:56

 

老師你好 , YouTube(url)可以運作
可是加上介面後就一直報錯  , 程式碼如下
from pytube import YouTube
import tkinter as tk

def download():
    vedio.last().download()
    print('下載完成')

root = tk.Tk()
root.geometry('450x450')
root.title('這是標題')
url = tk.StringVar()
label = tk.Label(root, text = '請輸入影片網址')
label.pack()
entry = tk.Entry(root,textvariable=url)
entry.pack()

yt = YouTube(url.get())
vedio = yt.streams.filter(subtype = 'mp4', progressive = True)

button  = tk.Button(root,text = '下載', command = download)
button.pack()

文淵閣工作室

文淵閣工作室
更新時間:2021/1/28 下午 04:10:52

 

您錯在此列:yt = YouTube(url.get()),因為沒有網址。且tkinter結構不完整,連界面視窗都未顯示。
請仔細研讀書中tkinter使用方法,再參考tkdownload.py程式碼。

2

2
更新時間:2021/3/13 下午 12:03:34

 

當youtube播放列表具有中文名稱時,Python pytube播放列表為空?

文淵閣工作室

文淵閣工作室
更新時間:2021/3/15 下午 04:35:54

 

不明白您的意思:youtube播放列表的網址格式為「https://www.youtube.com/watch?v=To3YL92HZyc&list=PLXO45tsB95cKKyC45gatc8wEc3Ue7BlI4」,中文為何?

企鵝菲

企鵝菲
更新時間:2021/3/20 下午 05:12:54

 

想請問下
我pytube版本為10.0.0
但為甚麼在輸入正確yt網址時顯示下載錯誤?感恩

import tkinter as tk
from pytube import YouTube

# 下載處理器
def rbVideo():
    global getvideo
    labelmsg.config(text = "")
    getvideo = videorb.get()
    
def clickDown():
    global getvideo, strftype, listradio
    labelmsg.config(text = "")
    if(url.get() == ""):
        labelmsg.config(text = "網址尚未輸入!!!")
        return
    
    if (path.get() == ""):
        pathdir = 'download'
    else:
        pathdir = path.get()
        pathdir = pathdir.replace("\\", "\\\\" )
        
    try:
        yt = YouTube(url.get())
        yt.streams.filter(res = getvideo, progressive = True).first().download(pathdir)
        labelmsg.config(text = "下載完成!!!")
    except:
        labelmsg.config(text = "影片無法下載!!!")

    
# 開始介面配置
win = tk.Tk()
win.geometry("560x280") # 視窗解析度
win.title("YouTube影片下載器")  
getvideo = "720p" # 影片格式
videorb = tk.StringVar() # 選項按鈕
url = tk.StringVar() # 網址配置
path = tk.StringVar() # 存檔路徑

label1 = tk.Label(win, text = "Youtube網址:")
label1.place(x = 123, y = 30)
entryUrl = tk.Entry(win, textvariable = url)
entryUrl.config(width = 45)
entryUrl.place(x = 220, y= 30)

label2 = tk.Label(win, text = "下載路徑(預設為Download):")
label2.place(x = 44, y = 70)
entryPath = tk.Entry(win, textvariable = path)
entryPath.config(width = 45)
entryPath.place(x = 220, y = 70)

btndown = tk.Button(win, text = "下載影片", command = clickDown)
btndown.place(x = 200, y = 100)

rb1 = tk.Radiobutton(win, text = "720p, mp4", variable = videorb, value = "720p", command = rbVideo)
rb1.place(x = 200, y = 150)
rb1.select()

rb2 = tk.Radiobutton(win, text = "1080p, mp4", variable = videorb, value = "1080p", command = rbVideo)
rb2.place(x = 200, y = 180)
rb2.select()

labelmsg = tk.Label(win, text = "", fg = "red")
labelmsg.place(x = 200, y = 220)

win.mainloop()

文淵閣工作室

文淵閣工作室
更新時間:2021/3/21 上午 10:01:05

 

我們測試您的程式,下載 <https://www.youtube.com/watch?v=27ob2G3GUCQ>; 是可以下載的。

企鵝菲

企鵝菲
更新時間:2021/3/21 下午 04:52:04

 

我用spyder跑你那個影片 每次視窗都會沒反應
用repl.it跑的話 雖然下載的了 但影片無法撥放
求解

企鵝菲

企鵝菲
更新時間:2021/3/21 下午 04:53:42

 

喔沒事了 似乎多跑幾次便可以成功
但是https://www.youtube.com/watch?v=CgHW02YF50s 這個便無法用spyder下載 不知原因

何


更新時間:2021/3/23 下午 12:47:05

 

您好,
我跟Python大數據特訓班(第二版),安裝了pytube3, 於Ch8.2.1用你們的程式"pytube1.py"在Spyder上RUN,得到以下訊息:-

Traceback (most recent call last):

...\ch08\pytube3.py", line 1, in <module> from pytube import YouTube

...\pytube\__init__.py", line 13, in <module> from pytube.streams import Stream

...\pytube\streams.py", line 18, in <module> from pytube import extract

...\pytube\extract.py", line 12, in <module> from pytube.cipher import Cipher

...\pytube\cipher.py", line 22, in <module> from pytube.exceptions import RegexMatchError

ImportError: cannot import name 'RegexMatchError' from 'pytube.exceptions' (...\pytube\exceptions.py)


下載不到YOUTUBE,請問如何處理?

何


更新時間:2021/3/23 下午 12:47:20

 

您好,
我跟Python大數據特訓班(第二版),安裝了pytube3, 於Ch8.2.1用你們的程式"pytube1.py"在Spyder上RUN,得到以下訊息:-

Traceback (most recent call last):

...\ch08\pytube3.py", line 1, in <module> from pytube import YouTube

...\pytube\__init__.py", line 13, in <module> from pytube.streams import Stream

...\pytube\streams.py", line 18, in <module> from pytube import extract

...\pytube\extract.py", line 12, in <module> from pytube.cipher import Cipher

...\pytube\cipher.py", line 22, in <module> from pytube.exceptions import RegexMatchError

ImportError: cannot import name 'RegexMatchError' from 'pytube.exceptions' (...\pytube\exceptions.py)


下載不到YOUTUBE,請問如何處理?

文淵閣工作室

文淵閣工作室
更新時間:2021/3/23 下午 09:13:13

 

現在 YOUTUBE 又有變化,要改用 PYTUBE 才能正常執行。
請先移除pytube3,再用「pip install pytube」安裝最新版即可。




 

 

Re:python初學特訓班的pytube套件問題

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。