当前位置: 首页 > 知识库问答 >
问题:

如何传递硬编码的youtube dl代码

庞意智
2023-03-14

我试图将youtube视频网址粘贴到tkinter GUI文本框中,并让浏览按钮启动一个子进程调用,该子进程调用需要硬编码的youtube-dl代码,并添加文本框网址。我似乎无法将硬编码的YouTube-dl代码和变量传递到命令行。

谷歌搜索了很多东西来寻找答案,但似乎找不到任何答案。。。

from tkinter import *
import tkinter as tk
from tkinter import ttk
import os
import subprocess


root = Tk()
root.geometry("900x800")    
Title = root.title( "JJ's Youtube Downloader")
PathTextBox = Text(root,height =  2)
PathTextBox.grid(row = 4,column = 1,columnspan = 2)
path = PathTextBox.get('1.0',END)
def download():
    import subprocess
    subprocess.call(["youtube-dl -x --audio-format mp3 ", path])


BrowseButton = Button(root,text="Browse ",command = download)
BrowseButton.grid(row = 2,column = 2)

root.configure(background='ivory2')
HeadLabel1 = Label(root,text="Image ")
HeadLabel1.grid(row = 1,column = 1,sticky=(E))
HeadLabel2 = Label(root,text="Reader ")
HeadLabel2.grid(row = 1,column = 2,sticky=(W))
InputLabel = Label(root,text = "INPUT IMAGE")
InputLabel.grid(row = 2, column = 1)


PathLabel = Label(root,text = "Path:")
PathLabel.grid(row = 3,column = 1,sticky=(W))



DataLabel = Label(root,text = "DATA IN IMAGE:")
DataLabel.grid(row = 6,column = 1,sticky=(W+E+N+S))
ResultTextBox = Text(root,height = 30,padx = 1, pady = 1)
ResultTextBox.grid(row = 7,column = 1,columnspan = 4,padx=3, 
pady=3,sticky=W+E+N+S)

root.mainloop()

错误代码我在Tkinter回调回溯(最近一次调用上次)中收到异常:文件“C:\Users\hutch\AppData\Local\Programs\Python\Python37\lib\Tkinter\uuuuu init\uuuuuu.py”,第1705行,在调用返回self中。func(*args)文件“C:\Users\hutch\Downloads\Desktop\PythonPrograms\YoutubeDownloader.py”,第17行,在下载子流程中。调用([“youtube dl-x——音频格式mp3”,路径])文件“C:\Users\hutch\AppData\Local\Programs\Python\Python37\lib\subprocess.py”,第323行,与Popen(*popenargs,**kwargs)一起调用,作为p:File“C:\Users\hutch\AppData\Local\Programs\Python\Python37\lib\subprocess.py”,第775行,在init restore\u signals中,start\u新会话)文件“C:\Users\hutch\AppData\Local\Programs\Python\Python37\lib\subprocess。py“,第1178行,在_execute_child startupinfo)FileNotFoundError:[WinError 2]中,系统找不到指定的文件

共有1个答案

上官扬
2023-03-14

您可以直接从PyPI导入youtube-dl本身,并像使用任何其他Python库一样使用它,而不需要将youtube-dl作为子进程调用。

通过在终端/命令提示符下运行pip install youtube\u dl,然后调用YoutubeDL,可以将其添加到Python环境中。从脚本中下载()。要使用包含在子流程字符串中的命令行参数,可以尝试以下操作(此示例在文档中稍作修改,它将从视频中下载音频曲目,然后转换为MP3,执行与在命令行参数中定义-x几乎相同的操作)

import youtube_dl

ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }]
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([path])

 类似资料:
  • 问题内容: 这两个功能都可以使用,但是我正在使用这是一个不好的做法,因为某些下拉列表和文本字段将比其他字段需要更长的时间来填充,因此我必须使用最长的睡眠值才能避免错误,如何解决这些问题2个功能使用等待。 问题答案: 当你正在调用的 WebElement 项目 ,理想情况下,你应该调用 WebDriverWait 与 EC 的,所以你必须: 更换: 与: 作为下拉需要更长的时间来填补,所以你应该调用

  • 问题内容: 我已经记录了一个上传excel的场景,在下一个后续请求中,excel中的那些记录将作为参数传递。 但是假设我需要更改excel,该请求将如何采用新值? 由于大量的值,参数化似乎不是答案。 请帮助。 问题答案: 如果需要从Excel文件中提取一些值并将其添加为HTTP请求参数,则可以使用以下方法。 下载Apache Tika二进制文件(tika-app-*。jar),并将其拖放到JMet

  • 我有一个程序可以连接到一个网站,并对其内容进行更改。程序首先登录,才有权更改内容。现在我想把程序传给其他人,这样他们就可以运行程序来帮助我完成任务。 该程序只能在我的帐户下登录,我不想传递密码。我决定这样硬编码密码: 如何确保无法恢复密码?如果不可能,该怎么做才能使恢复手术变得困难?还有什么更好的方法来解决我的问题?

  • 日安。有人知道硬编码的方法吗 我需要这样做,以便在使用微服务时,不可能通过application.yml进行更改--以减少潜在错误的空间

  • 有人请帮助我如何解决CWE-259:使用硬编码密码缺陷。

  • 问题内容: 我正在使用jQuery对PHP脚本进行AJAX调用,该PHP脚本需要返回嵌入JSON结果中的javascript代码才能执行jQuery代码。如何在JSON中传递JavaScript代码? 问题答案: 两种方式: 您必须将其作为字符串传递并在客户端使用。 您可以使用JSONP,而不是进行调用,而是将客户端脚本插入一个带有指向返回新脚本的服务器端代码的指针。 在任何一种情况下,请确保将其