Showing
1 changed file
with
291 additions
and
0 deletions
README.MD
0 → 100644
| 1 | +# xj-marketing | ||
| 2 | +social-auto-upload 该项目旨在自动化发布视频到各个社交媒体平台 | ||
| 3 | + | ||
| 4 | +social-auto-upload This project aims to automate the posting of videos to various social media platforms. | ||
| 5 | + | ||
| 6 | + | ||
| 7 | +## 💡Feature | ||
| 8 | +- 中国主流社交媒体平台: | ||
| 9 | + - [x] 抖音 | ||
| 10 | + - [x] 视频号 | ||
| 11 | + - [x] bilibili | ||
| 12 | + - [x] 小红书 | ||
| 13 | + - [x] 快手 | ||
| 14 | + - [ ] 百家号 | ||
| 15 | + - [ ] 网易号 | ||
| 16 | + | ||
| 17 | +- 部分国外社交媒体: | ||
| 18 | + - [x] tiktok | ||
| 19 | + - [ ] youtube | ||
| 20 | + | ||
| 21 | +--- | ||
| 22 | +- [ ] 易用版本(支持非开发人员使用):Gui or Cli | ||
| 23 | +- [ ] API 封装 | ||
| 24 | + - [ ] Docker 部署 | ||
| 25 | +- [ ] 自动化上传(schedule) | ||
| 26 | +- [x] 定时上传(cron) | ||
| 27 | +- [ ] cookie 管理 | ||
| 28 | +- [ ] 国外平台proxy 设置 | ||
| 29 | +- [ ] 多线程上传 | ||
| 30 | +- [ ] slack 推送 | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +# 💾Installation | ||
| 34 | +``` | ||
| 35 | +pip install -r requirements.txt | ||
| 36 | +playwright install chromium firefox | ||
| 37 | +``` | ||
| 38 | + | ||
| 39 | + | ||
| 40 | +# 核心模块解释 | ||
| 41 | + | ||
| 42 | +### 1. 视频文件准备(video prepare) | ||
| 43 | +filepath 本地视频目录,目录包含(filepath Local video directory containing) | ||
| 44 | + | ||
| 45 | +- 视频文件(video files) | ||
| 46 | +- 视频meta信息txt文件(video meta information txt file) | ||
| 47 | + | ||
| 48 | +举例(for example): | ||
| 49 | + | ||
| 50 | +file:2023-08-24_16-29-52 - 这位勇敢的男子为了心爱之人每天坚守 .mp4 | ||
| 51 | + | ||
| 52 | +meta_file:2023-08-24_16-29-52 - 这位勇敢的男子为了心爱之人每天坚守 .txt | ||
| 53 | + | ||
| 54 | +meta_file 内容(content): | ||
| 55 | +```angular2html | ||
| 56 | +这位勇敢的男子为了心爱之人每天坚守 🥺❤️🩹 | ||
| 57 | +#坚持不懈 #爱情执着 #奋斗使者 #短视频 | ||
| 58 | +``` | ||
| 59 | + | ||
| 60 | +### Usage | ||
| 61 | +1. 设置conf 文件中的 `LOCAL_CHROME_PATH`(在douyin、视频号 tiktok可能出现chromium 不兼容的各种问题,建议设置本地的chrome) | ||
| 62 | +2. 这里分割出来3条路 | ||
| 63 | + - 可自行研究源码,免费、任意 穿插在自己的项目中 | ||
| 64 | + - 可参考下面的各个平台的使用指南,`examples`文件夹中有各种示例代码 | ||
| 65 | + - 使用cli 简易使用(支持tiktok douyin 视频号) | ||
| 66 | + | ||
| 67 | +#### cli 用法 | ||
| 68 | +```python | ||
| 69 | +python cli_main.py <platform> <account_name> <action: upload, login> [options] | ||
| 70 | +``` | ||
| 71 | +查看详细的参数说明使用: | ||
| 72 | +```python | ||
| 73 | +python cli_main.py -h | ||
| 74 | +``` | ||
| 75 | +```python | ||
| 76 | +usage: cli_main.py [-h] platform account_name action ... | ||
| 77 | + | ||
| 78 | +Upload video to multiple social-media. | ||
| 79 | + | ||
| 80 | +positional arguments: | ||
| 81 | + platform Choose social-media platform: douyin tencent tiktok kuaishou | ||
| 82 | + account_name Account name for the platform: xiaoA | ||
| 83 | + action Choose action | ||
| 84 | + upload upload operation | ||
| 85 | + login login operation | ||
| 86 | + watch watch operation | ||
| 87 | + | ||
| 88 | +options: | ||
| 89 | + -h, --help show this help message and exit | ||
| 90 | + | ||
| 91 | +``` | ||
| 92 | +示例 | ||
| 93 | +```python | ||
| 94 | +python cli_main.py douyin test login | ||
| 95 | +douyin平台,账号名为test,动作为login | ||
| 96 | + | ||
| 97 | +python cli_main.py douyin test upload "C:\Users\duperdog\Videos\2023-11-07_05-27-44 - 这位少女如梦中仙... .mp4" -pt 0 | ||
| 98 | +douyin平台, 账号名为test, 动作为upload, 视频文件(需对应的meta文件,详见上), 发布方式(pt):0 立即发布 | ||
| 99 | + | ||
| 100 | +python cli_main.py douyin test upload "C:\Users\superdog\Videos\2023-11-07_05-27-44 - 这位少女如梦中仙... .mp4" -pt 1 -t "2024-6-14 12:00" | ||
| 101 | +douyin平台, 账号名为test, 动作为upload, 视频文件, 发布方式(pt):1 定时发布, 发布时间(t): 2024-6-14 12:00 | ||
| 102 | +``` | ||
| 103 | + | ||
| 104 | +--- | ||
| 105 | + | ||
| 106 | +## 各平台详细说明 | ||
| 107 | + | ||
| 108 | +### 1. 抖音 | ||
| 109 | +<img src="media/show/pdf3.gif" alt="douyin show" width="500"/> | ||
| 110 | + | ||
| 111 | +使用playwright模拟浏览器行为 | ||
| 112 | +> 抖音前端实现,诸多css class id 均为随机数,故项目中locator多采用相对定位,而非固定定位 | ||
| 113 | +1. 准备视频目录结构 | ||
| 114 | +2. cookie获取:get_douyin_cookie.py 扫码登录 | ||
| 115 | +3. 上传视频:upload_video_to_douyin.py | ||
| 116 | + | ||
| 117 | + | ||
| 118 | + | ||
| 119 | +其他部分解释: | ||
| 120 | +``` | ||
| 121 | +douyin_setup handle 参数为True,为手动获取cookie False 则是校验cookie有效性 | ||
| 122 | + | ||
| 123 | +generate_schedule_time_next_day 默认从第二天开始(此举为避免选择时间的意外错误) | ||
| 124 | +参数解释: | ||
| 125 | +- total_videos 本次上传视频个数 | ||
| 126 | +- videos_per_day 每日上传视频数量 | ||
| 127 | +- daily_times 视频发布时间 默认6、11、14、16、22点 | ||
| 128 | +- start_days 从第N天开始 | ||
| 129 | +``` | ||
| 130 | + | ||
| 131 | +> 2023年12月15日补充:使用chromium可能会出现无法识别视频封面图片的情况 | ||
| 132 | +> 解决方案: | ||
| 133 | +> 1. 下载chrome | ||
| 134 | +> 2. 找到chrome的安装目录 | ||
| 135 | +> 3. 将本地chrome 路径conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe" | ||
| 136 | + | ||
| 137 | + | ||
| 138 | +参考项目: | ||
| 139 | +- https://github.com/wanghaisheng/tiktoka-studio-uploader | ||
| 140 | +- https://github.com/Superheroff/douyin_uplod | ||
| 141 | +- https://github.com/lishang520/DouYin-Auto-Upload.git | ||
| 142 | + | ||
| 143 | +--- | ||
| 144 | + | ||
| 145 | +### 2. 视频号 | ||
| 146 | +使用playwright模拟浏览器行为 | ||
| 147 | +1. 准备视频目录结构 | ||
| 148 | +2. cookie获取:get_tencent_cookie.py 扫码登录 | ||
| 149 | +3. 上传视频:upload_video_to_tencent.py | ||
| 150 | + | ||
| 151 | + | ||
| 152 | + | ||
| 153 | +其他部分解释: | ||
| 154 | +``` | ||
| 155 | +参考上面douyin_setup 配置 | ||
| 156 | +``` | ||
| 157 | + | ||
| 158 | +> 视频号使用chromium会出现不支持上传视频,需要自行指定本地浏览器 | ||
| 159 | +> 解决方案: | ||
| 160 | +> 1. 下载chrome | ||
| 161 | +> 2. 找到chrome的安装目录 | ||
| 162 | +> 3. 将本地chrome 路径conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe" | ||
| 163 | + | ||
| 164 | +--- | ||
| 165 | + | ||
| 166 | + | ||
| 167 | +### 3. 小红书 | ||
| 168 | +该实现,借助ReaJason的[xhs](https://github.com/ReaJason/xhs),再次感谢。 | ||
| 169 | + | ||
| 170 | +1. 目录结构同上 | ||
| 171 | +2. cookie获取,可使用chrome插件:EditThisCookie | ||
| 172 | +- 设置导出格式 | ||
| 173 | + | ||
| 174 | +- 导出 | ||
| 175 | + | ||
| 176 | +3. 黏贴至 uploader/xhs_uploader/accounts.ini文件中 | ||
| 177 | + | ||
| 178 | + | ||
| 179 | +#### 解释与注意事项: | ||
| 180 | + | ||
| 181 | +``` | ||
| 182 | +xhs签名方式分为两种: | ||
| 183 | +- 本地签名 sign_locl (默认) | ||
| 184 | +- 自建签名服务 sign | ||
| 185 | + | ||
| 186 | +测试下来发现本地签名,在实际多账号情况下会存在问题 | ||
| 187 | +故如果你有多账号分发,建议采用自建签名服务(todo 上传docker配置) | ||
| 188 | +``` | ||
| 189 | +##### 疑难杂症 | ||
| 190 | +遇到签名问题,可尝试更新 "utils/stealth.min.js"文件 | ||
| 191 | +https://github.com/requireCool/stealth.min.js | ||
| 192 | + | ||
| 193 | +24.4.10 大多数人小红书失败的原因在于你的cookie有问题,请参照你cookie是不是如我这样 | ||
| 194 | + | ||
| 195 | + | ||
| 196 | +关于xhs部分可参考作者: https://reajason.github.io/xhs/basic | ||
| 197 | + | ||
| 198 | +##### todo | ||
| 199 | +- 扫码登录方式(实验下来发现与浏览器获取的存在区别,会有问题,未来再研究) | ||
| 200 | + | ||
| 201 | + | ||
| 202 | +参考项目: | ||
| 203 | +- https://github.com/ReaJason/xhs | ||
| 204 | + | ||
| 205 | +--- | ||
| 206 | + | ||
| 207 | +### 4. bilibili | ||
| 208 | +该实现,借助biliup的[biliup-rs](https://github.com/biliup/biliup-rs),再次感谢。 | ||
| 209 | +1. 准备视频目录结构 | ||
| 210 | +2. cookie获取:`biliup.exe -u account.json login` 选项你喜欢的登录方式 | ||
| 211 | + | ||
| 212 | +3. 上传视频:upload_video_to_bilibili.py | ||
| 213 | + | ||
| 214 | +#### 解释与注意事项: | ||
| 215 | + | ||
| 216 | +``` | ||
| 217 | +bilibili cookie 长期有效(至少我运行2年以来是这样的) | ||
| 218 | +其他平台 诸如linux mac 服务器运行 请自行研究 | ||
| 219 | +``` | ||
| 220 | +参考项目: | ||
| 221 | +- https://github.com/biliup/biliup-rs | ||
| 222 | + | ||
| 223 | +--- | ||
| 224 | + | ||
| 225 | +### 5. tiktok | ||
| 226 | +使用playwright模拟浏览器行为(Simulating Browser Behavior with playwright) | ||
| 227 | +1. 准备视频目录结构(Prepare the video directory structure) | ||
| 228 | +2. 将本地chrome路径配置到conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe"(Configure the local chrome path to the conf file) | ||
| 229 | +3. cookie获取(generate your cookie):get_tk_cookie.py | ||
| 230 | + | ||
| 231 | +4. 上传视频(upload video):upload_video_to_tiktok.py | ||
| 232 | + | ||
| 233 | +24.7.3 update local chrome support: | ||
| 234 | +- you can upload your custom thumbnail(place `png` file at the path of `videos`) | ||
| 235 | +- if not, the system will take the first frame of the video as the thumbnail. | ||
| 236 | +- chrome drive can't login by gmail oauth. the google don't support it. (if you want login by google oauth you can use the `tk_uploader/main.py` old firefox.) | ||
| 237 | +- before the upload process change the language to eng. | ||
| 238 | + | ||
| 239 | +其他部分解释: | ||
| 240 | +``` | ||
| 241 | +参考上面douyin_setup 配置 | ||
| 242 | +``` | ||
| 243 | + | ||
| 244 | +other part explain(for eng friends): | ||
| 245 | +``` | ||
| 246 | +tiktok_setup handle parameter is True to get cookie manually False to check cookie validity | ||
| 247 | + | ||
| 248 | +generate_schedule_time_next_day defaults to start on the next day (this is to avoid accidental time selection errors) | ||
| 249 | +Parameter explanation: | ||
| 250 | +- total_videos Number of videos uploaded this time | ||
| 251 | +- videos_per_day Number of videos uploaded per day | ||
| 252 | +- daily_times The video posting times are 6, 11, 14, 16, 22 by default. | ||
| 253 | +- start_days Starts on the nth day. | ||
| 254 | +``` | ||
| 255 | +参考项目: | ||
| 256 | +- https://github.com/wkaisertexas/tiktok-uploader | ||
| 257 | + | ||
| 258 | +--- | ||
| 259 | + | ||
| 260 | +### 其余部分(todo) | ||
| 261 | +整理后上传 | ||
| 262 | + | ||
| 263 | +--- | ||
| 264 | + | ||
| 265 | +## 其他优秀项目 | ||
| 266 | +- https://github.com/KLordy/auto_publish_videos | ||
| 267 | + - db支持 | ||
| 268 | + - 定期自动发布 | ||
| 269 | + - cookie db管理 | ||
| 270 | + - 视频去重 | ||
| 271 | + - 消息推送 | ||
| 272 | + | ||
| 273 | + | ||
| 274 | +## 🐾Communicate | ||
| 275 | +[Donate as u like](https://www.buymeacoffee.com/hysn2001m) | ||
| 276 | + | ||
| 277 | +如果你也是`一个人`,喜欢`折腾`, 想要在如此恶劣的大环境寻找突破 | ||
| 278 | + | ||
| 279 | +希望探索 #技术变现 #AI创业 #跨境航海 #自动化上传 #自动化视频 #技术探讨 | ||
| 280 | + | ||
| 281 | +可以来群里和大家交流 | ||
| 282 | + | ||
| 283 | +||| | ||
| 284 | +|:-:|:-:| | ||
| 285 | +|后台回复 `上传` 加群交流|如果你觉得有用| | ||
| 286 | + | ||
| 287 | + | ||
| 288 | +## Star History | ||
| 289 | +> 如果这个项目对你有帮助,⭐以表示支持 | ||
| 290 | + | ||
| 291 | +[](https://star-history.com/#dreammis/social-auto-upload&Date) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment