From e900d1d2abaef3b6a8c31422debaa4313a92c25d Mon Sep 17 00:00:00 2001
From: imgyh <1974355683@qq.com>
Date: Tue, 28 Mar 2023 17:22:12 +0800
Subject: [PATCH] =?UTF-8?q?docs(readme):=20=E6=9B=B4=E6=96=B0=E6=96=87?=
 =?UTF-8?q?=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 246 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 207 insertions(+), 39 deletions(-)

diff --git a/README.md b/README.md
index 64991de..2a9f75b 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,7 @@
 * 自动跳过已下载
 * 支持指定下载作品数量
 * 多线程下载
+* 支持多链接下载
 
 ![](img/tiktokcommand1.jpg)
 ![](img/tiktokcommand2.jpg)
@@ -86,7 +87,27 @@ python TikTokWeb.py -p 5001
 
 ## 抖音批量下载工具
 
-windows用户下载 Releases 中的 [TikTokCommand.exe](https://github.com/imgyh/tiktok/releases) 文件在cmd中运行
+批量下载有两种方式运行, 配置文件和命令行
+
+默认使用配置文件方式
+
+- link支持的地址格式, 形如
+
+```
+抖音app分享链接:
+1. 作品(视频或图集)、直播、合集、音乐集合、个人主页    https://v.douyin.com/BugmVVD/    
+抖音网页版浏览器URL:
+2. 单个视频             https://www.douyin.com/video/6915675899241450760
+3. 单个图集             https://www.douyin.com/note/7014363562642623777
+4. 用户主页             https://www.douyin.com/user/MS4wLjABAAAA06y3Ctu8QmuefqvUSU7vr0c_ZQnCqB0eaglgkelLTek
+5. 单个合集             https://www.douyin.com/collection/7208829743762769975
+6. 音乐(原声)下的视频     https://www.douyin.com/music/7149936801028131598
+7. 直播                https://live.douyin.com/759547612580                     
+```
+
+### 安装依赖
+
+windows用户下载 Releases 中的 [TikTokCommand.exe](https://github.com/imgyh/tiktok/releases) 文件运行
 windows用户本地有`python3.9`环境, 也可按照linux与mac用户的方式运行
 
 linux与mac用户下载本项目, 在本地`python3.9`环境中运行, 首先需要安装依赖, 安装命令
@@ -96,7 +117,102 @@ cd /path/to/tiktok
 python -m pip install -r requirements.txt
 ```
 
-运行示例:
+### 配置文件方式
+
+配置文件名必须叫 `config.yml`, 并将其放在TikTokCommand.py或者TikTokCommand.exe同一个目录下
+
+直接运行TikTokCommand.py或者TikTokCommand.exe, 无需在命令中加入任何参数, 所有参数都从配置文件中读取
+
+基本配置示例如下, 请自己登录网页版抖音后F12获取cookie
+
+```yaml
+#######################################
+# 说明:
+# 1. 井号(#)为注释
+# 2. 缩进严格对齐,使用空格缩进, 注意有些冒号后面有一个空格, 有些没有空格
+# 3. 请使用英文字符
+# 4. 更多yaml语法请上网查看
+#######################################
+
+
+# 作品(视频或图集)、直播、合集、音乐集合、个人主页的分享链接或者电脑浏览器网址
+# (删除文案, 保证只有URL, https://v.douyin.com/kcvMpuN/ 或者 https://www.douyin.com/开头的)
+# 可以设置多个链接, 确保至少一个链接
+# 必选
+link:
+  - https://live.douyin.com/759547612580
+  - https://v.douyin.com/BugmVVD/
+  - https://v.douyin.com/BugrFTN/
+  - https://v.douyin.com/B72pdU5/
+  - https://v.douyin.com/B72QgDw/
+  - https://v.douyin.com/AJp8D3f/
+  - https://v.douyin.com/B38oovu/
+  - https://v.douyin.com/S6YMNXs/
+
+# 下载保存位置, 默认当前文件位置
+# 必选
+path: /mnt/c/project/test333
+
+# 是否下载视频中的音乐(True/False), 默认为True
+# 可选
+music: True
+
+# 是否下载视频的封面(True/False), 默认为True, 当下载视频时有效
+# 可选
+cover: True
+
+# 是否下载作者的头像(True/False), 默认为True
+# 可选
+avatar: True
+
+# 是否保存获取到的数据(True/False), 默认为True
+# 可选
+json: True
+
+# link是个人主页时, 设置下载发布的作品(post)或喜欢的作品(like)或者用户所有合集(mix), 默认为post, 可以设置多种模式
+# 可选
+mode:
+  - post
+  - like
+  - mix
+
+# 下载作品个数设置
+# 可选
+number:
+  post: 5     # 主页下作品下载个数设置, 默认为0 全部下载
+  like: 5     # 主页下喜欢下载个数设置, 默认为0 全部下载
+  allmix: 1   # 主页下合集下载个数设置, 默认为0 全部下载
+  mix: 5      # 单个合集下作品下载个数设置, 默认为0 全部下载
+  music: 5    # 音乐(原声)下作品下载个数设置, 默认为0 全部下载
+
+# 设置线程数, 默认5个线程
+# 可选
+thread: 5
+
+# cookie 请登录网页抖音后F12查看
+# cookies 和 cookie 二选一, 要使用这种形式, 请注释下面的cookie
+# 目前只需要msToken、ttwid、odin_tt、passport_csrf_token、sid_guard
+# 可以动态添加, 程序会根据填的键查找,并没有写死, 如果抖音需要更多的cookie自己加上就行了
+cookies:
+  msToken: xxx
+  ttwid: xxx
+  odin_tt: xxx
+  passport_csrf_token: xxx
+  sid_guard: xxx
+
+# cookie 请登录网页抖音后F12查看
+# cookies 和 cookie 二选一, 要使用这种形式, 请注释上面的cookies及包含的所有键值对
+# 设置了这个后上面的cookies选项自动失效, 这个优先级更高
+# 格式: "name1=value1; name2=value2;" 注意要加冒号
+# 冒号中的内容包括不限于以下键值对, 如果抖音需要更多的cookie自己加上就行了
+#cookie: "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
+
+
+```
+
+### 命令行方式
+
+运行示例:
 
 - 获取帮助信息
 
@@ -111,146 +227,198 @@ python TikTokCommand.py -h
 
 ```
 -h, --help                  展示帮助页
---link LINK, -l LINK        作品(视频或图集)、直播、合集、音乐集合、个人主页抖音分享链接(删除文案, 保证只有URL, https://v.douyin.com/kcvMpuN/)
---path PATH, -p PATH        下载保存位置
+--cmd CMD, -C CMD           使用命令行(True)或者配置文件(False), 默认为False
+--link LINK, -l LINK        作品(视频或图集)、直播、合集、音乐集合、个人主页的分享链接或者电脑浏览器网址, 可以设置多个链接
+                            (删除文案, 保证只有URL, https://v.douyin.com/kcvMpuN/ 或者 https://www.douyin.com/开头的)
+--path PATH, -p PATH        下载保存位置, 默认当前文件位置
 --music MUSIC, -m MUSIC     是否下载视频中的音乐(True/False), 默认为True
 --cover COVER, -c COVER     是否下载视频的封面(True/False), 默认为True, 当下载视频时有效
 --avatar AVATAR, -a AVATAR  是否下载作者的头像(True/False), 默认为True
 --json JSON, -j JSON        是否保存获取到的数据(True/False), 默认为True
---mode MODE, -M MODE        link是个人主页时, 设置下载发布的作品(post)或喜欢的作品(like)或者用户所有合集(mix), 默认为post
---number NUMBER, -n NUMBER  1.当下载单个合集、音乐集合、主页作品(post模式)和喜欢(like模式)时, 可设置下载前n个作品, 默认为0全部下载 
-                            2.当下载主页下所有合集(mix模式)时, 设置下载前n个合集下所有作品, 默认为0全部下载
+--mode MODE, -M MODE        link是个人主页时, 设置下载发布的作品(post)或喜欢的作品(like)或者用户所有合集(mix), 默认为post, 可以设置多种模式
+--postnumber POSTNUMBER     主页下作品下载个数设置, 默认为0 全部下载
+--likenumber LIKENUMBER     主页下喜欢下载个数设置, 默认为0 全部下载
+--allmixnumber ALLMIXNUMBER 主页下合集下载个数设置, 默认为0 全部下载
+--mixnumber MIXNUMBER       单个合集下作品下载个数设置, 默认为0 全部下载
+--musicnumber MUSICNUMBER   音乐(原声)下作品下载个数设置, 默认为0 全部下载
 --thread THREAD, -t THREAD  设置线程数, 默认5个线程
+--cookie COOKIE             设置cookie, 格式: "name1=value1; name2=value2;" 注意要加冒号
+```
+
+- 多链接多模式混合下载, 可以传入多个链接和多个模式(post、like、mix)
+
+```
+windows用户:
+.\TikTokCommand.exe -C True \
+  -l https://live.douyin.com/759547612580 \
+  -l https://v.douyin.com/BugmVVD/ \
+  -l https://v.douyin.com/BugrFTN/ \
+  -l https://v.douyin.com/B72pdU5/ \
+  -l https://v.douyin.com/B72QgDw/ \
+  -l https://v.douyin.com/AJp8D3f/ \
+  -l https://v.douyin.com/B38oovu/ \
+  -l https://v.douyin.com/S6YMNXs/ \
+  -p /path/to/downdir \
+  -M post \
+  -M like \
+  -M mix \
+  --postnumber 5 \
+  --likenumber 5 \
+  --allmixnumber 1 \
+  --mixnumber 5 \
+  --musicnumber 5 \
+  --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
+
+linux与mac用户:
+python TikTokCommand.py -C True \
+  -l https://live.douyin.com/759547612580 \
+  -l https://v.douyin.com/BugmVVD/ \
+  -l https://v.douyin.com/BugrFTN/ \
+  -l https://v.douyin.com/B72pdU5/ \
+  -l https://v.douyin.com/B72QgDw/ \
+  -l https://v.douyin.com/AJp8D3f/ \
+  -l https://v.douyin.com/B38oovu/ \
+  -l https://v.douyin.com/S6YMNXs/ \
+  -p C:\project\test \
+  -M post \
+  -M like \
+  -M mix \
+  --postnumber 5 \
+  --likenumber 5 \
+  --allmixnumber 1 \
+  --mixnumber 5 \
+  --musicnumber 5 \
+  --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载单个作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvMpuN/ -p C:\project\test
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvMpuN/ -p C:\project\test --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvMpuN/ -p /path/to/downdir
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvMpuN/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页全部作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页前n个作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -n 30
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test --postnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -n 30
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir --postnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页全部喜欢
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -M like
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -M like --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -M like
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -M like --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页前n个喜欢
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -M like -n 30
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -M like --likenumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -M like -n 30
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -M like --likenumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载单个合集全部作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/B3J63Le/ -p C:\project\test
+.\TikTokCommand.exe -C True -l https://v.douyin.com/B3J63Le/ -p C:\project\test --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/B3J63Le/ -p /path/to/downdir
+python TikTokCommand.py -C True -l https://v.douyin.com/B3J63Le/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载单个合集前n个作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/B3J63Le/ -p C:\project\test -n 30
+.\TikTokCommand.exe -C True -l https://v.douyin.com/B3J63Le/ -p C:\project\test --mixnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/B3J63Le/ -p /path/to/downdir -n 30
+python TikTokCommand.py -C True -l https://v.douyin.com/B3J63Le/ -p /path/to/downdir --mixnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页全部合集下所有作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/B38oovu/ -p C:\project\test -M mix
+.\TikTokCommand.exe -C True -l https://v.douyin.com/B38oovu/ -p C:\project\test -M mix --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/B38oovu/ -p /path/to/downdir -M mix
+python TikTokCommand.py -C True -l https://v.douyin.com/B38oovu/ -p /path/to/downdir -M mix --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载主页前n个合集下所有作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/B38oovu/ -p C:\project\test -M mix -n 2
+.\TikTokCommand.exe -C True -l https://v.douyin.com/B38oovu/ -p C:\project\test -M mix --allmixnumber 2 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/B38oovu/ -p /path/to/downdir -M mix -n 2
+python TikTokCommand.py -C True -l https://v.douyin.com/B38oovu/ -p /path/to/downdir -M mix --allmixnumber 2 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载音乐(原声)集合下所有作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/S6YMNXs/ -p C:\project\test
+.\TikTokCommand.exe -C True -l https://v.douyin.com/S6YMNXs/ -p C:\project\test --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/S6YMNXs/ -p /path/to/downdir
+python TikTokCommand.py -C True -l https://v.douyin.com/S6YMNXs/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 下载音乐(原声)集合下前n个作品
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/S6YMNXs/ -p C:\project\test -n 30
+.\TikTokCommand.exe -C True -l https://v.douyin.com/S6YMNXs/ -p C:\project\test --musicnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/S6YMNXs/ -p /path/to/downdir -n 30
+python TikTokCommand.py -C True -l https://v.douyin.com/S6YMNXs/ -p /path/to/downdir --musicnumber 30 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 关闭头像下载, cover, music json数据也是一样的设置对应选项为 False
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -a False
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -a False --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -a False
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -a False --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
-- 除了单个作品和直播, 其余模式均支持多线程下载, 默认5个线程, 可以自己调节线程数
+- 多线程设置, 默认5个线程, 可以自己调节线程数
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -t 8
+.\TikTokCommand.exe -C True -l https://v.douyin.com/kcvSCe9/ -p C:\project\test -t 8 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -t 8
+python TikTokCommand.py -C True -l https://v.douyin.com/kcvSCe9/ -p /path/to/downdir -t 8 --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 - 直播推流地址解析
 
 ```
 windows用户:
-.\TikTokCommand.exe -l https://live.douyin.com/802939216127 -p /path/to/downdir
+.\TikTokCommand.exe -C True -l https://live.douyin.com/802939216127 -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 或者
-.\TikTokCommand.exe -l https://v.douyin.com/SnXMoh2/ -p /path/to/downdir
+.\TikTokCommand.exe -C True -l https://v.douyin.com/SnXMoh2/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 linux与mac用户:
-python TikTokCommand.py -l https://live.douyin.com/802939216127 -p /path/to/downdir
+python TikTokCommand.py -C True -l https://live.douyin.com/802939216127 -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 或者
-python TikTokCommand.py -l https://v.douyin.com/SnXMoh2/ -p /path/to/downdir
+python TikTokCommand.py -C True -l https://v.douyin.com/SnXMoh2/ -p /path/to/downdir --cookie "msToken=xxx; ttwid=xxx; odin_tt=xxx; passport_csrf_token=xxx; sid_guard=xxx;"
 ```
 
 # ToDo
@@ -260,7 +428,7 @@ python TikTokCommand.py -l https://v.douyin.com/SnXMoh2/ -p /path/to/downdir
 - [x] 获取分享的音乐(原声)链接下的所有作品
 - [x] 指定下载作品数量
 - [ ] 获取热搜榜数据
-- [ ] 多主页链接批量下载
+- [x] 多链接批量下载
 - [x] 多线程下载
 - [ ] 保存数据至数据库
 - [ ] 制作成接口