问题标签 [youtube-dl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - python:在命令完成之前从 check_output 获得响应
我正在使用 python 运行Youtube-dl,这是一个用于从 YouTube 和其他网站下载视频的软件。我专门用它来从 YouTube 视频中下载音频。我可以使用 python 从 YouTube 视频中下载音频,方法是使用 check_output() 执行保存在我的计算机上的 youtube-dl.exe 文件。
下面是我编写的执行 youtube-dl 文件并下载歌曲的方法。它返回一个巨大的文本字符串,它是 youtube-dl 程序的输出。
当我在 python 中运行这个方法时,它会等待命令完成,然后返回一个包含大量信息的巨大响应。这包括在下载结束时输出的一般信息,但它也(如果通过命令提示符运行)每隔几秒就会给出有关下载进度的信息。问题是,在 python 中运行它时,我会在下载完成后获得所有这些进度信息。
有什么方法可以在 check_output() 方法仍在运行时获取输出?这样我就可以为下载制作一个进度条。
编辑:
更新:下面是我想要工作的当前代码,除了一个小例外......
当我运行上面的这个新代码时,它将开始逐行打印信息,因为它是在执行的命令中生成的,但是所有关于下载百分比的信息都在最后打印出来。当我尝试在命令提示符下运行相同的命令时,我发现提供有关下载百分比信息的文本实际上每秒左右更改一次,而不是使用更新的信息创建新行,正如我根据输出所怀疑的那样在蟒蛇。你认为有什么办法可以解决这个问题,所以我可以获得进度条所需的信息吗?
python - 通过 chrome 扩展将 url 发送到桌面应用程序
我正在尝试提供一种通过 chrome 扩展将 chrome 中的 url 发送到用户桌面上的程序/应用程序的方法。更具体地说,我想创建一个 chrome 应用程序,该应用程序在激活后会将用户打开的 url(很可能来自 youtube)发送到桌面上的一个程序,该程序将从 youtube 视频中提取音乐。桌面程序正在运行并且是用 python 编写的,我现在要做的就是单击 chrome(chrome 扩展名)中的按钮并将网站的 url 发送到桌面应用程序。我所知道的唯一让我这样做的方法是使用 NPAPI,但它正在被逐步淘汰。
python - 无法使用 youtube-dl 下载
我正在尝试下载此链接https://www.youtube.com/watch?v=Pi3bc9lS3rg,它完全可以在 Ubuntu 服务器上运行,但不能在我的 Mac 上运行。我反复收到此警告:
警告:无法设置语言:[youtube] Pi3bc9lS3rg:正在下载网页
并且还跟随错误
错误:无法下载网页:< urlopen 错误 [Errno 8] _ssl.c:504:EOF 违反协议>
youtube-dl - 从 vimeo 下载 Youtube-dl 频道
YouTube-dl 是否允许从 YouTube 以外的网站的频道下载所有视频(不是单个文件)。(Vimeo,每日动态)
我了解 YouTube-dl 可用于下载 YouTube 频道/用户中的所有视频。语法是 youtube-dl ytuser:fmderena
每个网站的缩写是什么。对于 YouTube,它的 ytuser 同样有 vimeo 的代码
php - php中终端的实时更新(popen或proc_open)
目标: 从终端获取实时更新而无需换行。目前我正在使用这个
此代码的输出
它在下载结束时只输出一次(起初它只在我不知道为什么会发生这种情况时才给我实时更新)。但是在我的 Windows 命令提示符中,我在一行中获得了百分比和速度,而没有换行符。为此,我尝试了此代码
失败了......结果就像是空的
输出
那么任何人都可以提供任何建议来修改这些代码或新代码吗?谢谢。
bash - 如何在后台运行的程序中传递stdinput?
我一直在尝试编写一个运行命令的 shell 脚本
这个命令可以通过在 shell 上输入 q 来退出。
我可以将参数传递给脚本,但如何从脚本内或通过其他脚本自动执行。我可以从脚本中终止这个 youtube-dl 进程,但我不想这样做,因为它会影响 commad 执行。
请告诉我如何确保 youtube-dl 进程从另一个脚本或同一脚本中接收到 q。
php - 从 php 代码中执行 shell 脚本
我想要做的是youtube-dl -x --audio-format mp3 "token"
使用 php 执行并获取以下参数的 json:
- 状态(错误 = 0/成功 = 1)
- 保存的文件 url(您将在控制台结果示例中看到它
[avconv] Destination: Jennifer Lopez - Booty ft. Iggy Azalea-nxtIRArhVD4.mp3
:)
这是我编写的 PHP 代码。
基本上它执行
当我在控制台(通过 SSH)中执行相同的命令时,我得到了这样的结果
当我在 php 环境中执行相同的命令时得到以下 json 结果
事实上 php 完成工作并保存文件,但输出不一样,我无法获取目标文件 url。
我究竟做错了什么?有什么建议么?
heroku - 从 url 读取 pydub AudioSegment。BytesIO 仅在 heroku 上返回“OSError [Errno 2] No such file or directory”;在本地主机上很好
编辑 1 对于任何有相同错误的人:安装 ffmpeg 确实解决了 BytesIO 错误
为仍然愿意提供帮助的任何人编辑 1:我现在的问题是,当我使用 AudioSegment.export("filename.mp3", format="mp3") 时,文件已制作,但大小为 0 字节——详情如下(如“编辑 1")
编辑2:现在所有问题都解决了。
- 可以使用 BytesIO 将文件作为 AudioSegment 读入
- 我找到了 buildpacks 以确保 ffmpeg 在我的应用程序上正确安装,并支持导出正确的 mp3 文件
下面回答
原始问题
我让 pydub 在本地工作得很好,可以根据 url 中的参数裁剪特定的 mp3 文件。(?start_time=3.8&end_time=5.1)
当我运行foreman start
它时,它在 localhost 上看起来一切都很好。html 渲染得很好。views.py 中的关键行包括使用从 url 读取文件
这一切都很好......直到我推送到heroku(django应用程序)并在线运行它。然后当我现在在 herokuapp.com 上加载相同的页面时,我收到了这个错误
我已经注释掉了一些原文,以说服自己,单行original=AudioSegment.from_mp3(BytesIO(mp3))
是问题的根源……但这在本地不是问题
views.py 中的完整功能如下所示:
特别是在我访问页面时调用的views.py中的视图:
有什么建议么?
潜在相关:我在本地安装了 ffmpeg
但由于不了解构建包,无法将其安装到 heroku 上。我刚刚尝试过(http://stackoverflow.com/questions/14407388/how-to-install-ffmpeg-for-a-django-app-on-heroku
和https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
),但到目前为止 ffmpeg 无法在 heroku 上运行(当我执行“heroku run ffmpeg --version”时,ffmpeg 无法识别)......你认为这是原因吗?
当我在这里转圈圈时,将不胜感激任何这样的答案:
- “我认为 ffmpeg 确实是你的问题。努力解决这个问题,把它安装在 heroku 上”
- “实际上,我认为这就是 BytesIO 不适合你的原因:......”
- “无论如何,你的方法很糟糕......如果你想读入音频文件以使用 pydub 进行处理,你应该这样做:......”(因为我只是第一次通过 pydub 破解。 ..我的方法可能很差)
编辑 1
ffmpeg 现已安装(例如,我可以输出 wav 文件)
但是,我无法创建 mp3 文件,仍然......或者更准确地说,我可以,但文件大小为零
请注意上面 0 的文件大小为 mp3 文件...当我在我的 macbook 上做同样的事情时,文件大小永远不会为零
回到heroku shell:
我第一次意识到我忘记了pydub.AudioSegment.ffmpeg = "/app/vendor/ffmpeg/bin/ffmpeg"
命令,但是正如你在上面看到的,文件仍然是零大小
出于绝望,我什至尝试将“.heroku”添加到路径中,以便与您的示例一样逐字记录,但这并没有解决它:
最后,我尝试导出一个 .wav 文件来检查 pydub 至少工作正常
至少 .wav 的文件大小不为零,因此 pydub 正在工作
我目前的理论是,要么我仍然没有正确使用 ffmpeg,要么还不够……也许我需要在基本 ffmpeg 之上额外安装一个 mp3。
几个网站提到“libavcodec-extra-53”,但我不知道如何在heroku上安装它,或者检查我是否有它?https://github.com/jiaaro/pydub/issues/36
同样,关于 libmp3lame 的教程似乎是针对笔记本电脑安装而不是在 heroku 上安装的,所以我很茫然http://superuser.com/questions/196857/how-to-install-libmp3lame-for-ffmpeg
如果相关,我的 requirements.txt 中也有 youtube-dl ...这也适用于我的 macbook 本地,但是当我在 heroku shell 中运行它时失败:
信息链接是它太具体说明了 mp3 故障,所以也许这两个问题是相关的。
编辑 2
看答案,所有问题都解决了
youtube-dl - Linux Mint 上的 Youtube-dl
我刚刚在 Linux Mint 上安装了 youtube-dl。我只是尝试下载一个随机视频,但它不起作用:
我在 AskUbuntu 上问过同样的问题,但后来意识到它只适用于 Ubuntu 操作系统
所以我尝试更新 youtube-dl ..但它也没有工作
我已经处于超级用户模式.. Thnx