7月27日讀者交流會

筆者將在7月27日舉辦一個讀者見面暨新書發表交流會,活動由旗標出版社主辦、台北天瓏書局提供場地,地點在台北市中正區重慶南路一段105號2樓。報名網址:https://tenlong.kktix.cc/events/f9796

Python新書發表交流會

這場交流會內容包含:

聊聊Arduino,看看這個開源微控制板、程式語言和開發工具,如何翻轉了創客(Maker)手作和教育。除了Arduino官方的控制板以及程式編輯工具,還有哪些選擇?

Arduino Maker

聊聊物聯網、Python和MicroPython…如果用Blynk、拖拉Scratch程式積木就能完成作品,何苦打字學程式語言?Python有哪些吸引創客的特點?

Python Flask

本次讀者交流會的活動場地和收費都由天瓏書局規劃,收益也全部歸天瓏書局。

Posts created 483

14 thoughts on “7月27日讀者交流會

  1. 您好,
    我在讀本書時,操作到pytube那邊卡關了。page:5-8
    就是當我打到yt.title時,出現keyError。

    >>> from pytube import YouTube
    >>> yt=YouTube(‘https://www.youtube.com/watch?v=5OV5RaU5U28’)
    >>> yt.title()
    Traceback (most recent call last):
    File “”, line 1, in
    File “C:\Users\user\AppData\Roaming\Python\Python37\site-packages\pytube\__main__.py”, line 254, in title
    return self.player_config_args[‘title’]
    KeyError: ‘title’
    >>>

    請問是哪裡出問題?

    另外,您的書寫的非常的好。

    1. 抱歉造成您的困擾,我剛剛更新pytube程式庫,也出現同樣的錯誤。

      pip install pytube --upgrade
      

      後來發現是pytube程式的bug,根據pytube專案的guthub的這個提交修正
      需要修改__main__.py和streams.py這兩個檔案的程式碼,例如,
      __main__.py裡的這一行:

      return self.player_config_args['title']
      

      要改成:

      return (
          self.player_config_args
          .get('player_response', {})
          .get('videoDetails', {})
          .get('title')
      )
      

      我已經修改好並測試成功,請按此連結下載

      下載之後,將它解壓縮到你的電腦的pytube安裝路徑,覆蓋原有的__main__.py和streams.py。
      pytube的預設安裝路徑是:

      C:\Program Files\Python37\Lib\site-packages\pytube

      thanks,
      jeffrey

  2. 感謝您。可以動了。

    我才剛學python,昨天有看到他指的地方,只是不知道怎麼改。
    接下來我可以繼續下去了。
    謝謝

  3. 您好,我又來了。
    第一點,在 run stream = yt.streams.filter(type=’video’)[0] 這一段時,出現
    stream = yt.streams.filter(type=’video’)[0]
    TypeError: ‘StreamQuery’ object is not subscriptable 。
    似乎[0] <==沒辦法work.
    .first()
    .all() 都可以動。

    第二點,另外,在抓youtobe時,會有禁止爬蟲(是這樣說的吧?)的錯誤出現
    urllib.error.HTTPError: HTTP Error 403: Forbidden

    1. 1. 拍謝,filter()方法傳回的資料類型是’StreamQuery’,all()傳回的才是列表。所以要改寫成:

      yt.streams.filter(type=’video’).all()[0]

      2. 剛剛測試書本的tube.py檔下載沒問題:

      python tube.py -a https://youtu.be/siQJhIp-UTU

      thanks,
      jeffrey

  4. 第一個可以了,感謝。

    關於error 403的問題,我剛剛爬了網,這裡有說怎麼改,我就照著改,幾個被鎖的都可以下載了。
    https://github.com/nficano/pytube/issues/399
    有的可以不用改,我就可以下載成功,有的要照著改,看起來這個問題很新,裡面的回答也是最近的。
    我改好了,但是我不知道為什麼~~~~~xd

    1. 這也太巧了,我挑選的影片下載都沒問題。我會再整理範例檔,下週一請出版社更新,非常感謝!

      thanks,
      jeffrey

  5. from pytube import YouTube
    yt = YouTube(“https://www.youtube.com/watch?v=zMNC2cw1D7k”)
    stream = yt.streams.filter(resolution=”720p”).first()

    stream.download()

    以上是程式碼@@
    不知道為什麼會出現錯誤
    錯誤訊息如下

    Traceback (most recent call last):
    File “C:\Users\USER\Desktop\123.py”, line 9, in
    stream.download()
    File “C:\Users\USER\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pytube\streams.py”, line 206, in download
    filename = filename or self.default_filename
    File “C:\Users\USER\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pytube\streams.py”, line 176, in default_filename
    title = self.player_config_args[‘title’]
    KeyError: ‘title’

    1. 造成pyTube程式出錯的部份原因應該是YouTube內部程式持續做了一些修改,導致之前的驗證規則不再適用。

      根據這一篇回應提到的修正,我改好了mixins.py和cipher.py,請重新下載pytube9.5.1_fixed.zip檔並閱讀裡面的「說明」,覆蓋site-packages\pytube路徑裡的同名檔案。

      在macOS系統上,請執行”python3 -m site”命令確認site-packages路徑。

      剛剛測試下載沒問題:

      from pytube import YouTube
      yt = YouTube(“https://www.youtube.com/watch?v=zMNC2cw1D7k”)
      stream = yt.streams.filter(type="audio").first()
      stream.download()
      

      thanks,
      jeffrey

  6. 續前面error403。
    這幾天在上別的課,有機會用到抓youtube影片,我發現,
    把所有影片規格通通列出來,並不是每一個規格都可以下載,即使照我上次說的修改,還是有部份規格會出現error403。
    例如,1080p fail , 740p pass. 很特別。

    1. 我很少遇到403錯誤的情況,倒是YouTube採用稱為DASH(Dynamic Adaptive Streaming over HTTP,基於HTTP的動態自適性串流)技術,某些高品質串流內容只有視訊或聲音,所以要分開下載視訊和聲音,再透過ffmpeg將兩者合併成一個影音檔。

      早期的YouTube視訊在一個影音檔裡面同時包含視訊和聲音,稱為progressive download(漸進式下載)視訊檔,僅限於720p或更低畫質的視訊。

      相關說明請參閱PyTube官方說明文件的DASH vs Progressive Streams單元

      thanks,
      jeffrey

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top