抖音视频去水印-附完整代码 (仅供学习参考)

抖音视频-去水印 node.js(仅供学习参考)

从抖音分享一个视频,你会获得一个分享文案和地址,格式如下, 文章后面已附上分享链接教程

一只都放不明白 https://v.douyin.com/JdbBqog/ 复制此链接,打开【抖音短视频】,直接观看视频!

览器访问模式

第一步 :初始化包 npm install
第二步:运行端口在3000 npm start

在这里插入图片描述
第三步:使用

复制到浏览器上打开

http://localhost:3000/dy?url=输入从抖音复制的url地址

在这里插入图片描述
下载完毕
在这里插入图片描述

工具模式( vscode 终端) 命令

第一步 :初始化包 npm install 第二步 打开编辑器: 启动终端 第三步 使用: 运行 node tool.js

 node tool.js //会把无水印视频下载到本地

在这里插入图片描述

链接分享-教程

1 .打开dy -复制链接
在这里插入图片描述
2.分享链接
在这里插入图片描述

如果时间允许的话,在抚仙湖呆一个月享受这里的慢时光#浪计划  #抖音小助手 https://v.douyin.com/JdTeGPX/ 复制此链接,打开【抖音短视频】,直接观看视频!

3.复制链接

https://v.douyin.com/JdTeGPX/

完整代码:

core.js

// import axios from 'axios';
const axios = require('axios');
const userAgent =
  'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36';
async function request(url, type) {
    
    
  const option = {
    
    
    url,
    method: 'get',
    headers: {
    
    
      'user-agent': userAgent,
    },
  };
  if (type) {
    
    
    option.responseType = type;
  }
  return axios(option);
}

async function runDouyin(shareUrl) {
    
    
  // 1.根据分享的视频地址,通过重定向获取整个html信息
  const {
    
     data: html } = await request(shareUrl);
  // 2.截取itemId, dytk 发起二次请求获取uriId
  const itemId = html.match(/(?<=itemId:\s\")\d+(?=\")/g)[0];
  const dytk = html.match(/(?<=dytk:\s\")(.*?)(?=\")/g)[0];
  const long_url = `https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=${
      
      itemId}&dytk=${
      
      dytk}`;
  const {
    
     data: videoJson } = await request(long_url);
  // 3.最后通过uri参数来调用视频下载接口
  const uriId = videoJson.item_list[0].video.play_addr.uri;
  const share_title = videoJson.item_list[0].share_info.share_title;
  const noWatermarkUrl = `https://aweme.snssdk.com/aweme/v1/play/?video_id=${
      
      uriId}&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&is_support_h265=0&source=PackSourceEnum_PUBLISH`;
  const {
    
     data: videoStream } = await request(noWatermarkUrl, 'stream');
  return {
    
     videoStream, share_title };
}

module.exports = {
    
    
  runDouyin,
};

index.js

const express = require('express');
const {
    
     runDouyin } = require('./core');
// const fs = require('fs');
const app = express();
const port = 3000;
app.get('/dy', async (req, res) => {
    
    
  if (req.query.url) {
    
    
    try {
    
    
      const {
    
     videoStream, share_title } = await runDouyin(req.query.url);
      res.attachment(`${
      
      share_title}(无水印).mp4`);
      videoStream.pipe(res);
    } catch (e) {
    
    
      console.log(e);
      res.send('错误: ' + e);
    }
  } else {
    
    
    res.send('url错误');
  }
});

app.listen(port, () => console.log(`Example app listening on port ${
      
      port}!`));

tool.js

const {
    
     runDouyin } = require('./core');
const fs = require('fs');

async function tool() {
    
    
  // https://v.douyin.com/JdbBqog/ 这段url 是dy地址
  const {
    
     videoStream, share_title } = await runDouyin(
    'https://v.douyin.com/JdbBqog/'
  );
  videoStream.pipe(fs.createWriteStream(`${
      
      share_title}(无水印).mp4`)); // 下载到本地
}

tool();

代码仓库地址 :
https://github.com/365392777/dy-code
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq316148300/article/details/111222807