Pytube とwxでダウンローダーを作る 190530 version 3
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
youtube 190530 # prog
## Pytube とwxでダウンローダーを作る
- ずっとやってみたかった。調べたら簡単そうだったので早速作ってみた
<fig>
```
import wx ,io ,sys
from pytube import YouTube
import YouTube_ui
class MyFrame( YouTube_ui.MyFrame1 ):
def __init__( self, parent ):
YouTube_ui.MyFrame1.__init__( self, parent )
# Handlers for MyFrame1 events.
def btn_go( self, event ):
url=self.m_textCtrl1.GetValue()
yt=YouTube(url)
for list in yt.streams.all():
print(list.stream_to_buffer())
# self.m_listBox1.Append(list.stream_to_buffer().getvalue())
self.m_listBox1.Append(list.stream_to_buffer().read())
with io.StringIO() as f:
sys.stdout = f
print(list)
text = f.getvalue()
self.m_listBox1.Append(text)
sys.stdout = sys.__stdout__ # ?いらないかな
# with io.StringIO() as f:
# sys.stdout = f
# print(list)
# text = f.getvalue()
# self.m_listBox1.Append(text)
# sys.stdout = sys.__stdout__
def btn_bye( self, event ):
quit()
def btn_download( self, event ):
# TODO: Implement btn_download
pass
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame(None)
frame.Show(True)
app.MainLoop()
``````
- `pytube` は `pip`で落とした。すぐだった、軽そう。
- UIは`wxFormBuilder`で作る。簡単で良いです
- コードは解説サイト見ながらだけどすごく簡単
しかし、大きな落とし穴が・・・・
`yt.streams.all()` をforで回せば落とせるタイプのリストが一行ずつ取得できるんだけど、これは`Stream`になっていて、GUIでは表示できない
というか、表示の方法がわからない┐('д')┌
- `print`するのは簡単なんだけど、GUIで表示するには`text`にしなければならず、その方法がわからない
いろいろやってみたけど昨日は出来なくて、とりあえずで、`print`の出力を`text`に変換して表示したのがこのコードです
- ここで時間を取り過ぎて`download`は実装してない。構想としては、ダウンロード可能なファイルをListBoxに列挙して、マウスで選択したらそのIDを取得してtextctrlに表示、downloadボタンで指定したフォルダにダウンロードさせる予定。コード自体は簡単に書けると思うけどまた今度です。
Pytube とwxでダウンローダーを作る
- ずっとやってみたかった。調べたら簡単そうだったので早速作ってみた
<fig>
import wx ,io ,sys
from pytube import YouTube
import YouTube_ui
class MyFrame( YouTube_ui.MyFrame1 ):
def __init__( self, parent ):
YouTube_ui.MyFrame1.__init__( self, parent )
def btn_go( self, event ):
url=self.m_textCtrl1.GetValue()
yt=YouTube(url)
for list in yt.streams.all():
with io.StringIO() as f:
sys.stdout = f
print(list)
text = f.getvalue()
self.m_listBox1.Append(text)
sys.stdout = sys.__stdout__ # ?いらないかな
def btn_bye( self, event ):
quit()
def btn_download( self, event ):
pass
if __name__ == '__main__':
app = wx.App(False)
frame = MyFrame(None)
frame.Show(True)
app.MainLoop()
pytube
はpip
で落とした。すぐだった、軽そう。- UIは
wxFormBuilder
で作る。簡単で良いです - コードは解説サイト見ながらだけどすごく簡単
しかし、大きな落とし穴が・・・・
yt.streams.all()
をforで回せば落とせるタイプのリストが一行ずつ取得できるんだけど、これはStream
になっていて、GUIでは表示できない
というか、表示の方法がわからない┐('д')┌ print
するのは簡単なんだけど、GUIで表示するにはtext
にしなければならず、その方法がわからない
いろいろやってみたけど昨日は出来なくて、とりあえずで、print
の出力をtext
に変換して表示したのがこのコードです- ここで時間を取り過ぎて
download
は実装してない。構想としては、ダウンロード可能なファイルをListBoxに列挙して、マウスで選択したらそのIDを取得してtextctrlに表示、downloadボタンで指定したフォルダにダウンロードさせる予定。コード自体は簡単に書けると思うけどまた今度です。