#独家
短视频去水印API制作指南

2025-07-05 0 861

下面我将为您提供完整的短视频解析接口源代码,并详细介绍如何在宝塔面板中部署:

一、短视频解析接口源代码(Python Flask)

创建文件 /www/wwwroot/video_parser/app.py 并粘贴以下代码:

import re
import requests
from flask import Flask, request, jsonify
from concurrent.futures import ThreadPoolExecutor

app = Flask(__name__)
executor = ThreadPoolExecutor(10)  # 线程池提高并发性能

# 公共请求头
HEADERS = {
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1",
    "Referer": "https://www.douyin.com/"
}

def douyin_parser(share_url):
    """抖音视频解析"""
    try:
        # 获取重定向后的真实URL
        res = requests.head(share_url, headers=HEADERS, allow_redirects=True)
        final_url = res.url
        
        # 提取视频ID
        video_id = re.findall(r'/video/(\d+)', final_url)
        if not video_id:
            return {"error": "视频ID提取失败"}
        video_id = video_id[0]
        
        # 调用抖音官方API
        api_url = f"https://www.iesdouyin.com/aweme/v1/web/aweme/detail/?aweme_id={video_id}"
        response = requests.get(api_url, headers=HEADERS)
        data = response.json()
        
        # 提取无水印视频地址
        video_url = data['aweme_detail']['video']['play_addr']['url_list'][0]
        no_watermark_url = video_url.replace("playwm", "play")
        
        return {
            "title": data['aweme_detail']['desc'],
            "cover": data['aweme_detail']['video']['cover']['url_list'][0],
            "url": no_watermark_url,
            "duration": data['aweme_detail']['video']['duration'] // 1000,
            "platform": "douyin"
        }
    except Exception as e:
        return {"error": f"抖音解析失败: {str(e)}"}

def kuaishou_parser(share_url):
    """快手视频解析"""
    try:
        # 获取最终URL
        res = requests.get(share_url, headers=HEADERS, allow_redirects=True)
        final_url = res.url
        
        # 提取视频ID
        video_id = re.findall(r'photo/(\d+)', final_url)
        if not video_id:
            return {"error": "视频ID提取失败"}
        video_id = video_id[0]
        
        # 快手API接口
        api_url = "https://v.m.chenzhongtech.com/rest/wd/photo/info?photoId=" + video_id
        response = requests.get(api_url, headers=HEADERS)
        data = response.json()
        
        return {
            "title": data['photo']['caption'],
            "cover": data['photo']['coverUrls'][0],
            "url": data['photo']['videoUrl'],
            "duration": data['photo']['duration'],
            "platform": "kuaishou"
        }
    except Exception as e:
        return {"error": f"快手解析失败: {str(e)}"}

def bilibili_parser(share_url):
    """B站视频解析"""
    try:
        # 提取BVID
        bvid = re.findall(r'BV\w+', share_url)
        if not bvid:
            return {"error": "BVID提取失败"}
        bvid = bvid[0]
        
        # B站API接口
        api_url = f"https://api.bilibili.com/x/web-interface/view?bvid={bvid}"
        response = requests.get(api_url, headers=HEADERS)
        data = response.json()
        
        return {
            "title": data['data']['title'],
            "cover": data['data']['pic'],
            "url": f"https://www.bilibili.com/video/{bvid}",
            "duration": data['data']['duration'],
            "platform": "bilibili"
        }
    except Exception as e:
        return {"error": f"B站解析失败: {str(e)}"}

@app.route('/')
def index():
    return "短视频解析API已运行!请使用 /parse?url=视频链接"

@app.route('/parse')
def parse_video():
    video_url = request.args.get('url', '')
    if not video_url:
        return jsonify({"error": "缺少视频URL参数"}), 400
    
    # 根据域名分配解析器
    if 'douyin' in video_url or 'iesdouyin' in video_url:
        return jsonify(douyin_parser(video_url))
    elif 'kuaishou' in video_url or 'chenzhongtech' in video_url:
        return jsonify(kuaishou_parser(video_url))
    elif 'bilibili' in video_url:
        return jsonify(bilibili_parser(video_url))
    else:
        return jsonify({"error": "不支持的视频平台"}), 400

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

短视频去水印API制作指南

二、宝塔面板部署步骤

1. 安装Python项目管理器

  1. 登录宝塔面板

  2. 进入”软件商店”

  3. 搜索”Python项目管理器”并安装

短视频去水印API制作指南

2. 创建Python项目

  1. 打开”Python项目管理器”

  2. 点击”添加项目”

  3. 填写配置:

    • 项目名称:video_parser

    • 路径:/www/wwwroot/video_parser

    • Python版本:选择3.8+(推荐3.9)

    • 框架:Flask

    • 启动方式:gunicorn

    • 启动文件:app.py

    • 端口:5000(确保端口未被占用)

    • 勾选”安装模块依赖”

  4. 点击”确定”创建项目

短视频去水印API制作指南

3. 安装依赖模块

  1. 在项目列表中找到video_parser

  2. 点击”模块”

  3. 安装以下模块:

    • flask

    • requests

    • gunicorn

短视频去水印API制作指南

4. 配置网站

  1. 进入宝塔”网站”菜单

  2. 点击”添加站点”

  3. 填写域名(如果没有真实域名,可用服务器IP)

  4. 根目录选择:/www/wwwroot/video_parser

  5. PHP版本选择”纯静态”

短视频去水印API制作指南

5. 设置反向代理

  1. 进入站点设置

  2. 选择”反向代理”

  3. 添加反向代理:

    • 代理名称:video_api

    • 目标URL:http://127.0.0.1:5000

  4. 保存设置

短视频去水印API制作指南

6. 配置伪静态(可选但推荐)

  1. 进入站点设置

  2. 选择”伪静态”

  3. 粘贴以下规则:

location / {
    proxy_pass http://127.0.0.1:5000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

短视频去水印API制作指南

三、使用说明

API调用方式:

http://你的域名/parse?url=视频分享链接

示例请求:

http://yourdomain.com/parse?url=https://v.douyin.com/iYgJ7PqX/

四、高级配置建议

  1. 设置访问限制

    • 在宝塔面板”安全”菜单中添加防火墙规则

    • 限制单个IP请求频率(60秒内最多30次)

  2. 添加API密钥验证
    修改app.py,在路由前添加:

API_KEY = "your_secret_key"  # 设置你的密钥

@app.before_request
def check_api_key():
    key = request.args.get('key', '')
    if request.path == '/parse' and key != API_KEY:
        return jsonify({"error": "无效的API密钥"}), 403
  1. 调用时添加key参数:/parse?url=...&key=your_secret_key

  2. 开启HTTPS

    • 在宝塔”SSL”菜单申请免费证书

    • 强制HTTPS访问

  3. 性能优化

    • 在Python项目管理器中设置工作进程数(建议为CPU核心数×2+1)

    • 添加Redis缓存已解析的链接(减少重复请求)

五、常见问题解决

  1. 解析失败

    • 更新请求头中的User-Agent

    • 检查各平台API是否有变动

    • 查看日志:/www/wwwroot/video_parser/video_parser.log

  2. 502 Bad Gateway

    • 确保Python项目已启动

    • 检查端口是否冲突

    • 重启项目:supervisorctl restart video_parser

  3. 请求被平台屏蔽

    • 在代码中添加代理支持:

proxies = {
    'http': 'http://your_proxy_ip:port',
    'https': 'http://your_proxy_ip:port'
}
requests.get(url, headers=HEADERS, proxies=proxies)

这个方案支持抖音、快手和B站三大平台,部署简单且性能可靠。实际使用中需要定期维护,因为短视频平台的接口可能会更新变化。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

精码云库 技术分享 短视频去水印API制作指南 https://www.jmkuc.com/1190.html

常见问题
  • 可能原因有:一是您的解压软件版本较低,不支持该压缩格式,建议更新解压软件至最新版;二是下载过程中文件损坏,您可尝试删除原文件,重新下载;若多次重新下载仍解压失败,可能是资源本身存在问题,请联系我们反馈,我们会尽快核实处理。
查看详情
  • 出现此情况,大概率是页面样式冲突所致。部分浏览器可能对某些 CSS 样式兼容性欠佳,当文章内复杂样式相互作用时,就可能导致布局异常。您可尝试刷新页面,若问题依旧,可切换到其他主流浏览器访问;或者检查您浏览器是否有安装可能干扰页面显示的插件,暂时禁用后再尝试浏览。
查看详情
  • 您可先在本站搜索栏输入相关关键词,筛选是否有对应源码的其他版本资源。若未找到,您可以通过 “问题反馈” 板块,向我们详细说明需求,包括文章名称、所需源码版本及用途等,我们会根据情况在后续资源整理中,优先为您补充相关版本资源。
查看详情
  • 可能是由于运行环境不匹配,如编程语言版本、依赖库缺失或版本不一致导致。您可先检查文章中是否有注明运行环境要求,按照要求配置;也可尝试在本站技术交流区搜索报错关键词,查看其他用户的解决方案;若仍无法解决,欢迎通过 “问题反馈” 提交报错信息和运行环境说明,我们将协助排查 。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务