我正在使用youtube-dl从youtube视频中提取最佳音频质量.然而,最优质的音频通常被证明是webm格式,这是无用的.我想编写一个批处理脚本,将webm文件转换为带有ffmpeg的mp3.我已经尝试过在reddit上使用这个指南来做它,但它似乎不起作用.它似乎创建一个空的mp3文件,当我尝试播放它时显示错误,并且元数据也是完全空白的.
这是批处理脚本:
for %%a in ("Downloaded\*.*") do %CD%\ffmpeg\bin\ffmpeg.exe -i "%%a" -vn -ar 44100 -ac 2 -ab 192k -f mp3 "Converted\%%~na.mp3" pause
Run Code Online (Sandbox Code Playgroud)
我还将解释整个事情应该如何运作.
我的想法是,你使用youtube-dl提取最好的音频,然后将该文件放入Downloaded文件夹(见下图),然后运行mp3脚本(使用来自ffmpeg的命令)转换webm文件在Downloaded文件夹中的mp3文件,并将其放在Converted文件夹中.mp3脚本是上面的代码.但它似乎没有正常工作.
我不熟悉批处理脚本,也不熟悉ffmpeg,所以任何帮助都会被认可.
这是补充说明部分的图片.
所以我创建了一个IntStream,我给它一个1到9的范围.我希望能够使用map函数来获取给定范围内的每个元素(1-9)并随机化每个元素.
基本上我想在每次运行程序时以不同的顺序流式传输数字1 - 9.(我对其他想法持开放态度,但必须使用流).
我听说过使用Java的Random类,但我不确定如何在每个元素的映射上实现它.
我试过这样做,但有错误:
IntStream.range(1, 9).map(x -> x = new Random()).forEach(x -> System.out.println(x));
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我想知道是否有办法为我在 YouTube-dl 上进行的每次下载提供自定义专辑名称。你看我从 YouTube 下载了很多播客视频并提取音频以供离线使用。
我已经设法指定下载位置并使用以下命令更改标题格式:youtube-dl -x -o /Downloaded/%%(title)s.%%(ext)s.%%(album)s %URL%通过使用youtube-dl 文档页面。
但是,我还想补充一点,能够为每个下载提供“播客”的专辑名称。我在youtube-dl 文档中找到了一个专辑标签,但它似乎采用了原始来源的现有专辑名称。相反,我想输入我自己的专辑名称。
像这张图片,其中专辑字段标有“播客”:
这可以用 YouTube-dl 实现吗?
安装目录:
I\xe2\x80\x99m 在后端使用 Slim 3 PHP 创建身份验证/登录系统,在前端使用 Angular,并且 I\xe2\x80\x99m 尝试理解 \xe2\x80\x98domain 对象\xe2 \x80\x99 和 \xe2\x80\x98data mapper\xe2\x80\x99 是 MVC 结构中模型层的一部分。我\xe2\x80\x99已经阅读了很多关于诸如此类的问题的有用答案,从中我了解到模型应该由\xe2\x80\x98domain对象\xe2\x80\x99、\xe2\x80\x98data组成映射器\xe2\x80\x99 和\xe2\x80\x98services\xe2\x80\x99。
\n\n然而,我\xe2\x80\x99m 不太确定在用户能够注册并登录网站的情况下应该如何构建它。
\n\n根据我的理解,我可以拥有一个具有用户名和密码等属性的用户“域对象”。它还可以具有注册或登录等方法来表示业务逻辑。
\n\n然后我是否会有一个服务类来创建用户对象的新实例,在其中我将表单数据传递到该对象中?那么现在我的用户对象实例将设置用户名和密码值?
\n\n现在我不确定如何将此对象属性数据插入到数据库中。我是否可以使用用户对象注册方法通过传入用户名和密码作为参数来将数据插入数据库?
\n\n显然,服务应该是域对象和数据映射器交互的地方,但我不确定如果注册方法位于用户域对象中,这将如何工作。
\n\n我希望有人可以向我展示一些代码示例,说明服务类中应包含哪些内容,以及域对象和数据映射器之间的交互如何在用户注册和登录的上下文中工作。
\n\n注意我不想使用任何框架,我想尝试手动实现正确的 MVC 结构,因为我觉得我会了解更多。
\n\n到目前为止,我有这样的结构来注册用户:
\n\n我有一个带有 registerUser 方法的 AuthenticationController 来允许用户创建帐户:
\n\n class AuthenticationController\n{\n protected $authenticationService;\n\n public function __construct(AuthenticationService $authenticationService)\n {\n $this->authenticationService = $authenticationService;\n }\n\n public function registerUser($request, $response)\n {\n $this->authenticationService->registerUser($request, $response);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后我有带有 registerUser 方法的 AuthenticationService 类:
\n\nclass AuthenticationService\n{\n protected $database;\n\n public …Run Code Online (Sandbox Code Playgroud) I\xe2\x80\x99m 尝试动态加载同一组件的多个实例,当用户提交表单时,新组件将添加/加载到屏幕上。其背后的想法是,用户可以提供表单的详细信息,然后将其显示在所创建的组件的特定实例上。
\n我最初的想法是拥有某种数据结构,例如键对值的数组或映射,这样当用户提交表单时,我可以将组件的新实例与表单数据一起添加到我的数据结构中。然后 Angular 可以以某种方式显示驻留在数据结构中的组件的每个实例,如下图所示:
\n\n需要注意的是,该表单实际上是它自己的独立组件,以模式对话框的形式存在。当按下绿色的“添加状态框”按钮时,将打开此表单对话框,然后用户可以提交表单并(希望)能够使用提交的表单提供的数据创建状态框组件的新实例。
\n然而这被证明是困难的,目前我\xe2\x80\x99m 在上面的屏幕截图中实现这一点的方法是仅在 app.component.html 中单独显示每个组件,它根本不是动态的,并且具有无用户控制:
\n<app-header></app-header>\n<div class=\'status-box-container\'>\n <app-status-box></app-status-box> //component I\xe2\x80\x99m trying to display\n <app-status-box></app-status-box> //component I\xe2\x80\x99m trying to display\n <app-status-box></app-status-box> //component I\xe2\x80\x99m trying to display\n</div>\nRun Code Online (Sandbox Code Playgroud)\n我\xe2\x80\x99已经遵循了一些教程,但是所述教程的结果\xe2\x80\x99t完全不符合我\xe2\x80\x99m的要求,\xe2\x80\x99根本不起作用,或者它\xe2\x80\x99 对我来说太复杂了,无法理解。
\n首先,我尝试遵循Angular 网站上的官方指南,但这一次仅显示一个组件,并且每 3 秒动态更改其内容,而不是同时显示一个组件的多个实例。
\n接下来,我尝试从这个现有的堆栈溢出问题中跟踪这个 stackblitz,但我发现这不起作用并且非常复杂,其中大部分我不理解\xe2\x80\x99。尽管它\xe2\x80\x99s非常接近我\xe2\x80\x99m试图实现的目标。
\n最后,我尝试遵循我发现的 stackblitz,但它\xe2\x80\x99s 并不像我希望的那样动态,因为组件的每个实例都被硬编码到不同的变量中,我也无法让它工作。
\n但我注意到的一件事是,所有三种方法都有两个共同点。首先在app.component.html中,他们使用<ng-container #messageContainer></ng-container>或<ng-template #messageContainer></ng-template>。据我了解,这是将动态组件加载到 …
forms multiple-instances angular-components angular angular-dynamic-components
我正在尝试使用Slim3框架以及Twig模板系统在php中创建一个身份验证系统,对于数据库,我正在使用MySQL和PDO。我也在尝试使用模型视图控制器设计模式来实现它。但是我很难理解如何为Web应用程序使用MVC结构。我在网上查看了过多的解释,似乎没有明确的答案。很多人说要使用PHP框架,例如Laravel,Symfony或CodeIgniter,因为他们显然采用了类似MVC的结构。但是,我宁愿保持简单,并手动编写代码,而不是使用框架。
我目前对MVC有两种解释。此图中描绘了第一个:
我看到的另一种解释是:(摘自该YouTube视频)
我已经做了研究。问题和答案,如这和这个是有帮助的。但是我仍然不确定如何构造自己的应用程序,特别是识别和理解MVC的模型方面。现在,我将说明身份验证应用程序的注册过程。这样您就知道我的代码是如何工作的。
首先,我有一个SQLQueries类,该类将一系列SQL语句简单地放入函数中。然后,我有一个SQLWrapper类,该类具有的功能可以例如在数据库中存储新用户的详细信息。此类还从SQLQueries类调用函数。我也有一个ValidateSanitize类,该类具有清理用户输入以及检查用户输入在表单中是否有效的功能。我认为这三个类是MVC模型方面的一部分,但我不确定。我看到了许多其他的使用“用户模型类”的教程,但我的应用程序中找不到它们。
我的视图只是显示HTML的Twig模板,例如主页,注册,登录等。然后我有了控制器。我打算让多个控制器执行不同的操作。目前,我只实现了AuthController,该控制器负责注册和登录用户。
因此,AuthController要做的第一件事是在名为getRegisterForm的函数中显示注册表。用户提交表单后,postRegisterForm函数将获取该用户输入并将其分配给有污染的变量。
public function postRegisterForm($request, $response)
{
$arr_tainted_params = $request->getParsedBody();
$tainted_email = $arr_tainted_params['email']; it a variable
$tainted_username = $arr_tainted_params['username'];
$tainted_password = $arr_tainted_params['password'];
$tainted_password_confirm = $arr_tainted_params['password_confirm'];
Run Code Online (Sandbox Code Playgroud)
接下来,实例化所有前面的三个类以及数据库详细信息,以便可以在AuthController中使用它们的功能:
$sanitizer_validator = $this->container->ValidateSanitize;
$sql_wrapper = $this->container->SQLWrapper;
$sql_queries = $this->container->SQLQueries;
$db_handle = $this->container->get('dbase');
Run Code Online (Sandbox Code Playgroud)
然后,使用sanitize_input函数清除受污染的用户详细信息。然后,将清理后的用户详细信息输入到validate函数中,以确保它们不会触发任何验证冲突。密码也在此处散列:
$cleaned_email = $sanitizer_validator->sanitize_input($tainted_email, FILTER_SANITIZE_EMAIL);
$cleaned_username = $sanitizer_validator->sanitize_input($tainted_username, FILTER_SANITIZE_STRING);
$cleaned_password = $sanitizer_validator->sanitize_input($tainted_password, FILTER_SANITIZE_STRING);
$cleaned_password_confirm = $sanitizer_validator->sanitize_input($tainted_password_confirm, FILTER_SANITIZE_STRING);
$hashed_cleaned_password = password_hash($cleaned_password, PASSWORD_DEFAULT);
$sanitizer_validator->check_email_exists($cleaned_email);
$sanitizer_validator->validate_email($cleaned_email);
$sanitizer_validator->validate_username($cleaned_username);
$sanitizer_validator->validate_password($cleaned_password);
$sanitizer_validator?validate_password_confirm($cleaned_password_confirm);
Run Code Online (Sandbox Code Playgroud)
最后,有一个if语句,检查所有验证错误消息是否为空。如果是的话,我们将为SQLWrapper类提供数据库详细信息以及SQLQueries类对象。然后,通过调用SQLWrapper类store-details函数将用户详细信息插入数据库。最后,我们将用户定向到登录页面,以便用户可以登录其新注册的帐户。
if ($sanitizer_validator->get_validate_messages('email_error') == ' …Run Code Online (Sandbox Code Playgroud) php ×2
slim-3 ×2
youtube-dl ×2
angular ×1
batch-file ×1
datamapper ×1
ffmpeg ×1
forms ×1
java ×1
java-8 ×1
java-stream ×1
model ×1
mp3 ×1
random ×1
webm ×1
youtube ×1