我一直试图整理几行代码,这些代码带有一个YouTube音乐视频网址并将其转换为mp3 / mp4 + 720p,然后将其下载到我的DropBox音乐文件夹。
当我尝试通过TKinter小部件(条目栏)传递URL时,我遇到的错误是关于条目对象如何没有属性'type',或者URL无效。是否与不在youtube链接中添加引号或其他内容有关?
如果有人有任何见解我会非常感激。我想我错过了一些非常明显的东西,但我似乎无法弄明白到底是什么。
#!/usr/bin/env python
import sys
import os
import tkinter
from pytube import *
from tkinter import *
top=tkinter.Tk()
yt_variable = StringVar()
def helloCallBack():
#Select youtube link you want to upload and print contents
yt = YouTube(yt_entry)
print(yt.get_videos())
print(yt.filename)
#Set parameters for youtube video
video = yt.get('mp4', '720p')
print(yt.videos)
print("success")
#Select download location for youtube video
video.download('C:/Users/coope/Dropbox/BrokenBow/Music/')
print("Downloaded " + str(yt.filename) + " to " + str(video.download) + " successfully!")
return
yt_label=tkinter.Label(top,text='Paste Link + Press Go')
yt_label.pack()
yt_button=tkinter.Button(top,text='Go',command= helloCallBack)
yt_button.pack()
yt_entry=tkinter.Entry(top, textvariable=yt_variable)
yt_entry.get()
yt_entry.pack()
top.mainloop()
答案 0 :(得分:1)
简而言之,您有以下内容:
yt_entry=tkinter.Entry(top, textvariable=yt_variable)
yt_entry.get()
yt = YouTube(yt_entry)
您希望这可以创建一个Entry
窗口小部件,检索其内容,并将检索到的值发送到YouTube()
构造函数。它不像那样工作。你实际上正在创建一个Entry
小部件,立即检索其内容,扔掉那些内容(无论如何都是空的,因为到那时你还没有机会放任何进入该字段的内容),然后尝试将Entry
小部件本身发送到YouTube()
构造函数。
最重要的是,您为Entry
小部件textvariable
提供了一个Entry
,但之后就永远不会使用它。
相反,在回调中检索textvariable
窗口小部件的内容(通过其YouTube()
)。您甚至可以在...
top=tkinter.Tk()
yt_variable = StringVar()
def helloCallBack():
...
yt = YouTube(yt_variable.get())
...
...
yt_entry=tkinter.Entry(top, textvariable=yt_variable)
yt_entry.pack()
top.mainloop()
构造函数调用中执行此操作。
Entry
由于您对textvariable
小部件没有做任何特别的事情,因此根本不需要...
top=tkinter.Tk()
def helloCallBack():
...
yt = YouTube(yt_entry.get())
...
...
yt_entry=tkinter.Entry(top,)
yt_entry.pack()
top.mainloop()
。
return
此外,在功能结束时不需要裸None
。无论何时没有更多事情要做,它都会返回,默认返回值为return
(与使用return None
语句返回的内容相同,或Number of forks since boot.
)。