首页 > 编程语言 >【娱乐项目】基于批处理脚本与JavaScript渲染视频列表的Web页面

【娱乐项目】基于批处理脚本与JavaScript渲染视频列表的Web页面

时间:2024-12-01 23:28:35浏览次数:10  
标签:outputPath% Web 视频 批处理 JavaScript 列表 %% 视频文件 echo

Demo介绍

  • 一个简单的视频播放器应用,其中包含了视频列表和一个视频播放区域。用户可以通过点击视频列表中的项来选择并播放相应的视频,播放器会自动播放每个视频并在播放完毕后切换到下一个视频。
  • 本项目旨在通过自动化脚本和动态网页渲染,帮助用户快速生成并展示本地视频资源(如教学视频)。使用批处理脚本从指定文件夹中读取所有视频文件的信息,并利用JavaScript在HTML页面上动态渲染视频列表,用户可以方便地浏览、播放这些视频。

批处理脚本生成视频列表

通过批处理脚本自动扫描本地指定文件夹中的所有视频文件,获取视频文件的名称和路径,然后将每个视频的文件路径和标题生成一个 JavaScript 数组,并将该数组输出到一个 .txt 文件中

  • @echo off:关闭命令行窗口的回显,即不显示执行的命令
  • setlocal enabledelayedexpansion:启用延迟变量扩展,使得在同一代码块中可以动态更新和使用变量的值(特别是使用!来访问变量的实时值)
  • set folderPath="E:\Videos":定义了视频文件所在的文件夹路径。这个路径包含了所有的视频文件
  • set outputPath="%cd%\视频列表.txt":定义了输出文件的路径,%cd%表示当前目录,所以视频列表会被保存在当前目录下的视频列表.txt 文件中
  • set fileExtension=MP4:定义了视频文件的扩展名,这里设置为 MP4,即只会处理 .MP4 文件
  • echo var videos = [ > %outputPath%:将 var videos = [ 写入到输出文件 视频列表.txt 中,开始构建 JavaScript 数组的定义
  • for %%f in (%folderPath%\*.%fileExtension%) do (:遍历指定文件夹(%folderPath%)中所有扩展名为 .MP4 的文件
  • %%f :循环变量,表示每个文件
  • set "fileName=%%~nxf":提取文件的完整文件名(包括扩展名),并赋值给 fileName 变量
  • %%~n:获取文件名
  • %%~x:获取文件扩展名
  • %%~nxf:获取完整的文件名(包含扩展名)
  • set "fileTitle=%%~nf":提取文件名(不包含扩展名),并赋值给 fileTitle 变量
  • %%~nf:%%~n:获取文件名,不包含扩展名
@echo off
setlocal enabledelayedexpansion

set folderPath="E:\Videos"
set outputPath="%cd%\视频列表.txt"
set fileExtension=MP4

echo var videos = [ > %outputPath%

for %%f in (%folderPath%\*.%fileExtension%) do (
    set "fileName=%%~nxf"
    set "fileTitle=%%~nf"
    echo     { >> %outputPath%
    echo         src: "!fileName!", >> %outputPath%
    echo         title: "!fileTitle!" >> %outputPath%
    echo     }, >> %outputPath%
)

echo ]; >> %outputPath%

  • echo { >> %outputPath%:向输出文件添加一个新的对象 {,开始写入一个视频对象
  • echo src: "!fileName!", >> %outputPath%:将视频文件的完整名称(包括扩展名)写入 src 字段
  • echo title: "!fileTitle!" >> %outputPath%:将视频文件的文件名(不包括扩展名)写入 title 字段
  • echo }, >> %outputPath%:结束当前对象,并添加一个逗号,准备写入下一个视频文件的信息

最终输出的 .txt 文件
在这里插入图片描述

完整代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            margin: 0;
        }

        .one {
            width: 100%;
            height: 100vh;
            display: flex;
            overflow: hidden;
        }

        .one #videoList {
            width: 300px;
            height: 100%;
            max-height: 100vh;
            margin: 0px;
            color: #fff;
            background: rgb(123, 202, 252);
            overflow: scroll;
            overflow-x: hidden;
            padding-left: 0;
            border: 8px groove rgb(123, 202, 252);
        }

        .one #videoList::-webkit-scrollbar {
            width: 0;
            height: 0;
        }

        .one #videoList li {
            cursor: pointer;
            line-height: 30px;
            border-bottom: 1px solid #fff;
            padding: 10px;
            list-style: none;
            margin: 0px;
        }

        .one #videoList li:hover {
            font-weight: bold;
        }

        .one .selected {
            background: #fff;
            color: rgb(123, 202, 252);
            font-weight: bold;
        }

        .one #myVideo {
            border: 8px groove rgb(123, 202, 252);
        }
    </style>
</head>

<body>
    <div class="one">
        <ul id="videoList"></ul>
        <video id="myVideo" width="600" height="400" controls></video>
    </div>

    <script>
        // 获取视频列表和视频播放器元素
        var videoList = document.getElementById('videoList');
        var myVideo = document.getElementById('myVideo');

        // 批处理脚本获取到的视频列表数据
        var videos = [];

        // 动态生成视频列表
        videos.forEach(function (video, index) {
            var li = document.createElement('li'); // 创建列表项
            li.textContent = video.title; // 设置列表项的文本内容为视频标题
            li.setAttribute('data-src', video.src); // 设置自定义属性存储视频源
            li.addEventListener('click', function () { // 为每个列表项添加点击事件
                loadVideo(video.src, li); // 加载选中的视频
            });
            videoList.appendChild(li); // 将列表项添加到视频列表中
        });

        // 加载视频并更新选中状态
        function loadVideo(src, listItem) {
            myVideo.src = src; // 设置视频播放器的源为选中的视频
            myVideo.play(); // 播放视频

            // 清除之前的选中状态
            var selected = document.querySelector('.selected');
            if (selected) {
                selected.classList.remove('selected');
            }

            // 添加选中样式到当前点击的列表项
            listItem.classList.add('selected');
        }

        // 初始化页面,默认加载第一个视频
        if (videos.length > 0) {
            loadVideo(videos[0].src, videoList.children[0]); // 默认加载第一个视频并设置选中
        }
    </script>
</body>

</html>

在这里插入图片描述

标签:outputPath%,Web,视频,批处理,JavaScript,列表,%%,视频文件,echo
From: https://blog.csdn.net/weixin_48348920/article/details/144140680

相关文章

  • javaweb
    1,静态web是什么(网页)2,动态web是什么Server和Servlet的区别主要在于它们的功能和角色。Server通常指的是一个提供服务的程序或者系统,能够响应客户端的请求并返回响应。而Servlet是一个在Server端运行的程序,专门用于处理用户请求并生成动态的Web内容。Server:Server是提供某种服......
  • Web API基本认知
    作用和分类作用:就是使用JS去操作html和浏览器分类:DOM(文档对象模型)、BOM(浏览器对象模型)什么是DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API白话文:DOM是浏览器提供的一套专门用来操作网页内容的功能DOM作用开发......
  • 使用WebAssembly结合Rust实现高性能Web应用的技术详解
    ......
  • 【JavaEE】Spring Web MVC
    目录一、SpringWebMVC简介1.1MVC简介1.2SpringMVC1.3@RequestMapping注解1.3.1使用1.3.2@RequestMapping的请求设置1.3.2.1方法11.3.2.2方法2二、Postman介绍2.1创建请求2.2界面如下:2.3传参介绍一、SpringWebMVC简介官方文档介绍:SpringWebMV......
  • java的Webclient对象怎解解析400状态码
    在Java中使用WebClient处理400状态码,可以通过检查响应状态并根据状态码进行相应的错误处理。以下是几种处理400状态码的方法:使用onStatus方法判断和处理错误:你可以使用WebClient的retrieve()方法链中的onStatus方法来检查响应状态码。如果状态码为400,你可以打印错误信息......
  • Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象问题的解决方
      1Javascript遍历目录时使用for..in循环无法获取Files对象和SubFolders对象1.1问题场景  在JavaScript中遍历目录,使用for..in循环时,无法获取到Files对象和SubFolders对象,导致无法遍历目录和子目录。  代码如下:functionGetAllFilesInSubFolder(path,filter)......
  • 大文件分片上传与webWorker多线程执行
    前言:前端技术不可避免都要用到文件上传,其中大文件上传是一大难点,需要考虑多种场景;当用户上传大文件的时候,我们需要保证页面的流畅,还要监听上传进度,还有用户如果取消上传后,再度上传相同文件,是否需要从头上传,今天分享一下如何通过js实现大文件分片上传功能,以及webWorker多线程执......
  • 湖北大学新星杯web-misc---wp from sorin
    差一点akweb,算是一个小遗憾WP----sorin1\EzhttpExp如下:访问:得到flag2\RobotsLeak直接git-dumper下载后,GitlogGitshowGitstashlist后pop1查看.flag.exe即可3\Random_Door爆破flag{{int(1-100)}}.php利用伪协议php://filter/convert.base64-encode/reso......
  • WebGL实现soul星球效果
    WebGL实现soul星球效果最近在研究webGL,觉得soulapp的星球挺有意思的,于是就实现了一下,中间涉及的细节和知识点挺多的,写篇博客分享一下soul原版WebGL实现的jcode主要技术要点1.使用黄金分割数螺旋分配使小球在球表面均匀分布使用不同的goldenRatio可以得到非常多分......
  • Web自动化002-Web自动化元素定位及浏览器的相关操作
    Web自动化002-Web自动化元素定位及浏览器的相关操作Web自动化元素定位及浏览器相关的操作标签=元素1.元素定位首先需要选择要被定位的元素(锁定被操作的元素)然后才能对元素进行具体操作(具体的操作方法)selenium第三方库中提供了两类定位的方法find_element----->返回一个元素,如果......