当前位置: 首页 > news >正文

Python脚本

update_format.py 

批量转视频格式,超级慢,没什么卵用

import os
import asyncio
import subprocess
import concurrent.futures
import tracemalloctracemalloc.start()# 创建日志文件
log_file = open('conversion_log.txt', 'w')async def convert_mkv_to_mp4(input_file, output_file):command = [r'D:\Python Software\ffmpeg-5.1.2-essentials_build\bin\ffmpeg.exe', '-i', input_file, '-codec:v', 'h264','-codec:a', 'aac', output_file]process = await asyncio.create_subprocess_exec(*command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)stdout, stderr = await process.communicate()# 将stdout和stderr写入日志文件log_file.write(f'STDOUT:\n{stdout.decode()}\n')log_file.write(f'STDERR:\n{stderr.decode()}\n')# 等待子进程完成并获取输出,确保它完成await asyncio.sleep(0)  # 显式等待,可能帮助消除警告return stdout, stderroutput_folder = rf'D:\tjjg_videos'
os.makedirs(output_folder, exist_ok=True)source_folder = rf'E:\下载'async def convert_files():loop = asyncio.get_event_loop()with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:tasks = []for root, dirs, files in os.walk(source_folder):for file in files:if file.endswith('.mkv'):input_file_path = os.path.join(root, file)output_file_path = os.path.join(output_folder, os.path.splitext(file)[0] + '.mp4')# 正确传递参数给 convert_mkv_to_mp4task = await loop.run_in_executor(executor, convert_mkv_to_mp4, input_file_path, output_file_path)tasks.append(task)# 等待所有子任务完成await asyncio.gather(*tasks)if __name__ == '__main__':asyncio.run(convert_files())

update_mp4.py

只批量修改后缀名,但视频属性应该还是原mkv,不过适合我的业务场景

import os
import shutil# 定义源文件夹和目标文件夹的路径
source_folder = r'E:\下载\预算员(土建与装饰)'  # 替换为实际的源文件夹路径
target_folder = r'D:\tjjg_videos'  # 替换为实际的目标文件夹路径# 确保目标文件夹存在,如果不存在则创建
if not os.path.exists(target_folder):os.makedirs(target_folder)# 遍历源文件夹中的所有文件和子文件夹
for root, _, files in os.walk(source_folder):for filename in files:# 检查文件是否是视频文件(可以根据需要添加其他文件扩展名)if filename.lower().endswith(('.avi', '.mkv', '.mpg', '.mpeg', '.wmv', '.mov', '.flv', '.webm')):source_file_path = os.path.join(root, filename)# 创建新的文件名,将后缀改为.mp4new_filename = '预算员(土建与装饰)' + os.path.splitext(filename)[0] + '.mp4'target_file_path = os.path.join(target_folder, new_filename)# # 移动文件并重命名# shutil.move(source_file_path, target_file_path)# 复制文件并重命名shutil.copy(source_file_path, target_file_path)print('拷贝并重命名完成')

upload_mp4.py

掉接口批量上传

import os
import requests
import time# 目标URL
upload_url = "https://xxxxx.xxxxxx.com/xp/uploads/"# 认证 token
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjk2Mzk5ODAwLCJpYXQiOjE2OTM4MDc4MDAsImp0aSI6IjJmZmZiNmE2N2Q3MzRjODg4YWUzZDI0YzEyYjQwMWMxIiwidXNlcl9pZCI6MywidXNlcm5hbWUiOiJcdTRlOGVcdTZkMGIifQ.0fa2HIGeDupbqD5f6Ed26Le7wD5dEjG-GCZm0-Ap-F8"# 目录包含要上传的.mp4文件
source_directory = r"D:\tjjg_videos"# 遍历目录,上传所有.mp4文件
for root, _, files in os.walk(source_directory):for filename in files:if filename.lower().endswith('.mp4'):file_path = os.path.join(root, filename)# 最多尝试上传三次max_retries = 3retries = 0while retries < max_retries:# 以二进制方式打开文件with open(file_path, 'rb') as file:# 准备请求参数# 构建请求参数payload = {'file': (filename, open(file_path, 'rb')),'resouce': (None, 'video'),}# 设置请求头,包括 Authorizationheaders = {'Authorization': f'{token}'}# 发送POST请求上传文件response = requests.post(upload_url, files=payload, headers=headers)# 检查响应状态码if response.status_code == 200:print(f"成功上传文件: {filename}")print(response.text)breakelse:print(f"上传文件失败: {filename}")print(response.text)retries += 1if retries < max_retries:print(f"重试上传文件: {filename} (第 {retries} 次)")time.sleep(2)  # 等待2秒后重试else:print(f"上传文件失败超过最大重试次数: {filename}")print("上传完成")

del_mp4.py

批量删除垃圾数据

import asyncio
import aiohttp# 目标URL
base_url = "https://xxxx.xxxxxx.com/xp/api/v1/resource/"# 认证 token
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjk2Mzk5ODAwLCJpYXQiOjE2OTM4MDc4MDAsImp0aSI6IjJmZmZiNmE2N2Q3MzRjODg4YWUzZDI0YzEyYjQwMWMxIiwidXNlcl9pZCI6MywidXNlcm5hbWUiOiJcdTRlOGVcdTZkMGIifQ.0fa2HIGeDupbqD5f6Ed26Le7wD5dEjG-GCZm0-Ap-F8"# 构建要删除的ID范围
start_id = 602
end_id = 2121# 发送DELETE请求删除资源
async def delete_resource(session, resource_id):url = f"{base_url}{resource_id}/"headers = {'Authorization': f'{token}'}async with session.delete(url, headers=headers) as response:if response.status == 204:print(f"成功删除资源: {url}")else:print(f"删除资源失败: {url}")print(await response.text())# 异步删除资源
async def delete_resources():async with aiohttp.ClientSession() as session:tasks = [delete_resource(session, resource_id) for resource_id in range(start_id, end_id + 1)]await asyncio.gather(*tasks)# 执行异步删除操作
if __name__ == "__main__":loop = asyncio.get_event_loop()loop.run_until_complete(delete_resources())loop.close()print("删除完成")

http://www.lryc.cn/news/154241.html

相关文章:

  • Kotlin的遍历方法
  • AskIt: Unified Programming Interface for Programming with Large Language Models
  • 【wireshark抓取数据包-PGSQL协议】
  • 【idea学习】
  • ZooKeeper数据模型/znode节点深入
  • 容器编排工具的比较:Kubernetes、Docker Swarm、Nomad
  • nginx--技术文档--架构体系--底层核心-原理
  • Java23种设计模式之【单例模式】
  • SQLserver基础入门理论(超基础)二
  • macbookpro怎么删除软件没有鼠标
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:241-260)
  • PHP8内置函数中的变量函数-PHP8知识详解
  • 9月3日,每日信息差
  • 2023年了,java后端还有未来吗?
  • 使用cmake,将github上的某一个库进行集成到vs2022上
  • 第二张微服务的调用与注册
  • iWatch框架设计
  • 【python】读取.dat格式文件
  • 机器学习课后习题 --- 朴素贝叶斯
  • 【设备树笔记整理7】实践操作
  • 使用VisualStudio制作上位机(六)
  • 包管理工具--》npm的配置及使用(一)
  • 期货基础知识
  • NC后端扩展开发
  • nginx vue2+webpack 和 vue3+vite 配置二级目录访问
  • 无需租云服务器,Linux本地搭建web服务,并内网穿透发布公网访问
  • 算法leetcode|76. 最小覆盖子串(rust重拳出击)
  • 如何让你的jupyter notebook 排版得像Word(Markdown和网页文件写法)
  • AndroidTV端:酒店扫码认证投屏DLNA
  • 基于PyTorch的交通标志目标检测系统