Last active
July 18, 2024 04:54
-
-
Save yi-yun/14eb9124a4d5732a2b6bffe09b5eec33 to your computer and use it in GitHub Desktop.
抖音下载(自用)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const axios = require('axios'); | |
| const errwin = /[\\\\/:*?\"<>|]/g; | |
| const subwin = ``; | |
| const cp = require('child_process'); | |
| // 获取作品ID | |
| var GetID = function (dyurl) { | |
| return new Promise((resolve, reject) => { | |
| try { | |
| axios.get(dyurl, { | |
| headers: { | |
| 'user-agent': ' Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' | |
| } | |
| }).then(function (response) { | |
| console.log(response.request.res.responseUrl) | |
| var revideo = /video\/(\d*)/ | |
| var item_ids = revideo.exec(response.request.res.responseUrl)[1] | |
| // console.log(item_ids) | |
| resolve(item_ids) | |
| }).catch(function (error) { | |
| console.log(error + ' item_ids获取错误') | |
| next(error) | |
| reject(error) | |
| // return 0; | |
| }) | |
| } catch (error) { | |
| console.log(error) | |
| } | |
| }) | |
| } | |
| var GetInfo = function (item_ids) { | |
| console.log('GetInfo ok') | |
| return new Promise((resolve, reject) => { | |
| axios.get(`https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=${item_ids}`, { | |
| headers: { | |
| 'user-agent': ' Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' | |
| } | |
| } | |
| ).then(function (response) { | |
| console.log('item_ids ok') | |
| // console.log("response", response.data) | |
| let { | |
| status_code, | |
| item_list | |
| } = response.data | |
| if (status_code === 0) { | |
| // 无水印视频链接 | |
| let url = item_list[0].video.play_addr.url_list[0].replace( | |
| 'playwm', | |
| 'play' | |
| ) | |
| // 转换成1080p | |
| url = url.replace('720p','1080p') | |
| console.log('1080p',url) | |
| // 视频文案 | |
| let desc = item_list[0].desc; | |
| // 文案过滤非法字符 | |
| desc.replace(errwin, subwin); | |
| console.log('video play url', url) | |
| console.log('video desc', desc) | |
| var data = ({ | |
| url: url, | |
| desc: desc | |
| }) | |
| resolve(data) | |
| } else { | |
| reject(status_code) | |
| } | |
| }) | |
| .catch(function (error) { | |
| console.log(error) | |
| res.render('error'); | |
| reject(error) | |
| }) | |
| }) | |
| } | |
| let result= GetID('https://v.douyin.com/rQ6rw8q/').then(item_ids => { | |
| // console.log(item_ids) | |
| GetInfo(item_ids).then(data => { | |
| var filename="/Users/michael/Documents/搬运/"+data.desc+".mp4"; | |
| var uri=data.url; | |
| var agent="--user-agent 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'"; | |
| let command = `curl -L -o '${filename}' '${uri}' ${agent}`; | |
| // console.log(command) | |
| let result = cp.execSync(command); | |
| console.log("下载成功"); | |
| }); | |
| }).catch((error) =>{ | |
| console.log('22222',error) | |
| next(error) | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment