Pytube とwxでダウンローダーを作る 190530 version 2

2019/05/30 00:08 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
youtube 190530 # prog


<fig>

```

import wx ,io ,sys
from pytube import YouTube
import YouTube_ui

# ダウンロードしたいページのurlを入れる。
url = 'https://www.youtube.com/watch?'
class MyFrame( YouTube_ui.MyFrame1 ):
	def __init__( self, parent ):
		YouTube_ui.MyFrame1.__init__( self, parent )
		

# 打つのがめんどうなので変数ytに入れる。
yt = YouTube(url)
	# 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())

# yt.streams.all()で一覧が出るがリストで返ってきてみづらいのでforで回す。
for lis in yt.streams.all():
    print(lis)
		# 	with io.StringIO() as f:   
		# 		sys.stdout = f         
		# 		print(list)
		# 		text = f.getvalue()    
		# 		self.m_listBox1.Append(text)
	    # sys.stdout = sys.__stdout__ 

# get_by_itagとdownloadでダウンロードができる。
# yt.streams.get_by_itag(140).download()
	def btn_bye( self, event ):
		quit()

# yt.streams.all()で表示される一覧とは画質や拡張子が異なるものが表示されます。
	def btn_download( self, event ):
		# TODO: Implement btn_download
		pass

tag = input('>> Prease enter itag :')
yt.streams.get_by_itag(int(tag)).download(r'c:\users\owner\music')

input関数を使ってコンソールからurlを張り付けられるようにしました。

ただしinput関数で入力すると数値ではなく文字列になってしまうので注意が必要です。

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None)
    frame.Show(True)
    app.MainLoop()


```      

<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__ 

	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()