Files
douyin/README.md
T
2026-05-10 14:25:46 +08:00

14 KiB
Raw Blame History

dysync.net - 抖音同步工具(抖小云)

dysync.net 是一款基于 **.NET Core ** 和 Vue 开发的工具,用于同步抖音收藏夹、「我喜欢」的视频及指定博主作品,支持多账号同步,内置视频信息刮削功能,同步后的视频可直接在 Emby 或 Jellyfin 中播放。

🔧 问题反馈:如使用中遇到任何问题,欢迎进Q群反馈:759876963,不一定及时回复,见谅。


📺 Emby 效果预览

Emby播放效果


📋 目录


1. 获取抖音关键信息(必做!同步核心凭证)

Cookie 及 sec_user_id 是同步功能的核心,需严格按步骤获取,避免遗漏或错误。

1.1 提取Cookie以及 sec_uer_id

  1. 打开 抖音网页版 (https://www.douyin.com/) 并登录目标账号;
  2. 进入个人主页,按下F12进入开发者模式、并切换到 网络(也可能叫network).
  3. 在筛选框中输入/follow.
  4. 点击自己头像边上的 关注 按钮、会弹出你的关注列表,然后在右侧网络请求里面会出现多个请求,随便选一个.
  5. 在请求的标签里面切换到负载(也可能叫payload)
  6. 找到sec_user_id,复制值即可
  7. 在请求的标签里面切换到标头(也可能叫Headers)
  8. 往下拉,直到出现Cookie ,复制完整的值,注意前后不要带换行符,很多人会多复制个换行符出来.

cookie cookie cookie cookie

1.2 提取 博主的sec_user_id以及博主的uid

  • 对于想下载博主视频,但是又不想关注博主,需要用到
  • 1.进入博主主页,按F12 点击Network网络 筛选器里面填/web/aweme/post 然后切到预览preview 展开 json数据结果 找到aweme_list 然后随便点开其中一个子项 即可找到aweme_list[0].author.sec_uid 这便是博主的uid 。后续在关注列表中,需要手动添加非关注博主同步视频时将会要用到。 获取Cookie步骤

2. 路径映射规则(核心!错配会导致无法访问/数据丢失)

为实现视频在 Emby/Jellyfin 中正常播放及数据持久化,需正确配置本地路径与容器路径的映射:

存储类型 容器内路径 本地路径配置要求 用途说明
个人收藏视频 /app/collect 映射到本地目录(如 NAS/volume1/抖音/收藏、电脑:D:/抖音/收藏 存储同步后的收藏视频
个人喜欢视频 /app/favorite 映射到本地目录(建议与收藏视频路径区分,如 /volume1/抖音/喜欢 存储同步后的「我喜欢」视频
图文视频 /app/images 映射到本地目录(建议与收藏视频路径区分,如 /volume1/抖音/图文视频 存储同步后的「图文视频」
指定博主视频 /app/uper 映射到本地目录(如 /volume1/抖音/博主作品 存储同步后的博主视频
指定博主视频 /app/mix 映射到本地目录(如 /volume1/抖音/合集 存储同步后的合集视频
指定博主视频 /app/series 映射到本地目录(如 /volume1/抖音/短剧 存储同步后的短剧视频
数据库文件 /app/db 映射到本地稳定目录(如 /volume1/抖音/db 持久化配置、同步记录
数据库文件 /app/mp3 映射到本地稳定目录(如 /volume1/抖音/mp3 图文视频自定义音频(用于原视频音频带版权的情况)

关键注意

  1. 抖音授权时配置的路径为上面 表格里面 容器内路径 如 /app/collect 且注意 必须是/开头,路径可以自己随便命名,只要保证 授权里面配的路径有在docker-compose里面添加映射即可
  2. 未配置路径映射时,文件仅存于容器内部,且容器删除后数据丢失。

路径配置示例

路径配置示例


3. 默认账号密码(首次登录用)

首次访问后台管理页面时,使用以下默认账号密码:

  • 用户名douyin
  • 密码douyin2026

⚠️ 安全建议:登录后修改密码。


4. 运行方式(推荐 Docker Compose

镜像版本

镜像标签 架构
beta_2.2.0 x86_64 (amd64)
arm_2.2.0 ARM64
latest x86_64 (amd64)

构建命令示例

将下方命令中的「本地路径」替换为你的实际路径,终端执行即可:

方式一:Docker Compose 运行(推荐)

创建 docker-compose.yml 文件,复制以下内容,替换「本地路径」后执行 docker-compose up -d

需要注意:unraid玩家需要增加 user配置 --user 1000:100


services:
  dysync:
    image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_2.2.0
    container_name: dysync2026  # 容器名称
    restart: unless-stopped     # 始终重启容器,除非容器被手动停止或Docker服务停止
    ports:
      - "10101:10101" 
    volumes:
      # 基础路径映射
      - /vol2/1000/media/dysync/db:/app/db          # 数据库目录(持久化配置和同步记录)
      # 默认音频目录(用于图文/动态视频合成,版权受限音频的替代)
      - /vol2/1000/media/dysync/mp3:/app/mp3         
      # 账号1 - 视频存储目录
      - /vol2/1000/media/dysync/dy1/coll:/app/collect   # 个人收藏视频
      - /vol2/1000/media/dysync/dy1/fav:/app/favorite   # 个人喜欢视频
      - /vol2/1000/media/dysync/dy1/up:/app/uper        # 指定博主视频
      - /vol2/1000/media/dysync/dy1/mix:/app/mix        # 合集(不需要可删除)
      - /vol2/1000/media/dysync/dy1/series:/app/series  # 短剧(不需要可删除)
      
      # 账号2 - 多账号路径映射示例(可选:授权时可复用账号1路径)
      - /vol2/1000/media/dysync/dy2/collect:/app/collect2 
      - /vol2/1000/media/dysync/dy2/fav:/app/favorite2  
      - /vol2/1000/media/dysync/dy2/up:/app/uper2

    network_mode: bridge
    dns:
      - 223.5.5.5  # 阿里云DNS(备用)
      - 114.114.114.114  # 国内114 DNS(提升国内访问稳定性)
    deploy:
      resources: 
        limits:  
          memory: 250m  # 限制内存占用≤250MB(图文视频下载场景不建议设置)

另一个版本去掉了所有视频存储路径设置项,docker只需要映射3个路径就可以,但是!!! 不兼容老的版本,如果觉得这种方式好一些可以重新部署。其他没什么变化。 所有路径都变成 根目录/cookie名字/视频类型/(如果是合集或者短剧这里还有一层)/合集或短剧/名称/视频文件

services:
  dysync:
    image: ccr.ccs.tencentyun.com/jianzhichu/dysync:latest
    container_name: dysync_latest  # 容器自定义名称
    restart: unless-stopped     # 容器非手动停止则自动重启
    ports:
      - "10110:10101"           # 端口映射
    environment:
      # 限制GC堆最大内存为100MB100*1024*1024=104857600,可根据需求调整)
      - COMPlus_GCHeapHardLimit=154857600
      # 禁用服务器GC,改用工作站GC(轻量应用更友好)
      - COMPlus_GCServer=0
      # 可选:强制GC回收后释放内存给操作系统(Linux专属)
      - COMPlus_GCConserveMemory=1
      # 可选:显示GC日志(排查内存问题时用)
      # - COMPlus_GCLogFile=/app/gc.log
    
    volumes:
      # 基础路径映射 - 主账号(账号1
      - /vol2/1000/media/dy001/db:/app/db          # 数据库目录(持久化配置和同步记录)
      - /vol2/1000/media/dy001/mp3:/app/mp3        # 备用音频目录(版权音频无法下载时使用)
      - /vol2/1000/media/dy001/:/app/data  # 视频存储目录
    

    network_mode: bridge
    dns:
      - 223.5.5.5  # 阿里云DNS(备用)
      - 114.114.114.114  # 国内114 DNS(提升国内访问稳定性)
    deploy:
      resources: 
        limits:  
          memory: 211m  # 限制内存占用≤250MB(图文视频下载场景不建议设置)

🚀 5. 软件截图

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

路径配置示例

输入图片说明

🚀 5. 已有功能与计划

  1. 支持多账号同步(每个账号可单独配置存储路径)

  2. 收藏的视频

  3. 喜欢的视频(点赞的视频)

  4. 图文视频(需要将图片 + mp3 合成视频)

  5. 指定博主的视频,可配置是否单独存放一个总文件夹,是否直接用视频标题做文件名

  6. 清除日志(防止容器被日志占用太多空间,可配置保留天数)

  7. 将项目名称改成 "抖小云" 灵感来源于哪吒电影那坨云

  8. Cookie 过期提醒,在DY授权页可查看

  9. 自动根据去重规则进行去重(可设置去重优先级,同一个视频出现再多个分类时适用)

  10. 在同步记录页面中直接播放视频

  11. 关注列表同步。

  12. 选中记录,批量重新同步。以及分享(比较简陋)

  13. 关注列表支持新增,非关注的博主

  14. 增加永久删除功能,删除后,以后不会再同步该视频

  15. 增加配置项及关注列表(手动添加部分)导出导入功能

  16. 支持移动端

  17. 增加开关配置是否仅同步最近视频

  18. 完成飞牛fpk打包:https://github.com/jianzhichu/FnDepot

  19. 合集、短剧、自定义收藏夹下载。

💖 支持项目

如果这个项目对你有帮助,欢迎通过以下方式支持:

Star 项目

点击右上角的 Star 按钮,让更多人发现这个项目

💰 赞赏支持

  • 扫码请作者喝杯奶茶
微信支付 支付宝

🎁 其他支持方式

  • 分享给更多需要的朋友
  • 提交 Bug 报告和功能建议
  • 贡献代码和文档

感谢你的支持!❤️

免责声明

本项目(dysync.net)仅作为技术研究与学习交流的开源项目,其所有代码、功能及相关内容均不代表任何第三方平台的官方服务或立场。使用本项目前,请仔细阅读以下条款:

1. 授权与使用限制

  • 本项目未获得抖音(Douyin)等任何第三方平台的官方授权、合作或认可,与该等平台无任何关联。
  • 项目功能仅允许用于个人技术研究和学习目的,严禁用于商业用途、非法活动或违反任何第三方平台规则的行为。

2. 知识产权说明

  • 项目中涉及的第三方平台(如抖音)的名称、商标、接口、内容等均为其各自所有者的知识产权。
  • 本项目仅对技术实现方式进行研究,不涉及对第三方知识产权的侵占或滥用。如因使用本项目引发知识产权争议,相关责任由使用者自行承担。

3. 风险提示与责任豁免

  • 使用本项目可能导致违反第三方平台的用户协议或相关规定,进而导致账号限制、功能封禁等风险,此类风险由使用者自行承担。
  • 项目开发者不对使用本项目产生的任何直接或间接损失(包括但不限于数据丢失、设备损坏、账号问题等)承担责任。
  • 使用者应确保自身行为符合《网络安全法》《著作权法》等相关法律法规,不得利用本项目从事侵权、违法或违背公序良俗的活动。

4. 声明的修改与生效

  • 本免责声明的最终解释权归项目开发者所有,开发者保留随时修改本声明的权利。
  • 修改后的声明将在项目仓库中更新,建议使用者定期查阅。
  • 一旦使用本项目的代码、功能或相关资源,即视为您已充分理解并同意本免责声明的全部条款。如不同意,请立即停止使用。