克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

social-auto-upload

social-auto-upload 该项目旨在自动化发布视频到各个社交媒体平台

social-auto-upload This project aims to automate the posting of videos to various social media platforms.

tiktok show

💡Feature

  • 中国主流社交媒体平台:

    • 抖音
    • 视频号
    • bilibili
    • 小红书
    • 快手
    • 百家号
  • 部分国外社交媒体:

    • tiktok
    • youtube

  • 易用版本(支持非开发人员使用):Gui or Cli
  • API 封装
    • Docker 部署
  • 自动化上传(schedule)
  • 定时上传(cron)
  • cookie 管理
  • 国外平台proxy 设置
  • 多线程上传
  • slack 推送

💾Installation

pip install -r requirements.txt
playwright install chromium firefox

非程序员,新手级教程

🐇 About

The project for my own project extracted, my release strategy is timed release (released a day in advance), so the release part of the event are used for the next day time!

If you need to release it immediately, you can study the source code or ask me questions.

该项目为我自用项目抽离出来,我的发布策略是定时发布(提前一天发布),故发布部分采用的事件均为第二天的时间

如果你有需求立即发布,可自行研究源码或者向我提问

核心模块解释

1. 视频文件准备(video prepare)

filepath 本地视频目录,目录包含(filepath Local video directory containing)

  • 视频文件(video files)
  • 视频meta信息txt文件(video meta information txt file)

举例(for example):

file:2023-08-24_16-29-52 - 这位勇敢的男子为了心爱之人每天坚守 .mp4

meta_file:2023-08-24_16-29-52 - 这位勇敢的男子为了心爱之人每天坚守 .txt

meta_file 内容(content):

这位勇敢的男子为了心爱之人每天坚守 🥺❤️‍🩹
#坚持不懈 #爱情执着 #奋斗使者 #短视频

Usage

  1. 设置conf 文件中的 LOCAL_CHROME_PATH(在douyin、视频号 tiktok可能出现chromium 不兼容的各种问题,建议设置本地的chrome)
  2. 这里分割出来3条路
    • 可自行研究源码,免费、任意 穿插在自己的项目中
    • 可参考下面的各个平台的使用指南,examples文件夹中有各种示例代码
    • 使用cli 简易使用(支持tiktok douyin 视频号)

cli 用法

python cli_main.py <platform> <account_name> <action: upload, login> [options]

查看详细的参数说明使用:

python cli_main.py -h
usage: cli_main.py [-h] platform account_name action ...

Upload video to multiple social-media.

positional arguments:
  platform      Choose social-media platform: douyin tencent tiktok kuaishou
  account_name  Account name for the platform: xiaoA
  action        Choose action
    upload      upload operation
    login       login operation
    watch       watch operation

options:
  -h, --help    show this help message and exit

示例

python cli_main.py douyin test login
douyin平台,账号名为test,动作为login

python cli_main.py douyin test upload "C:\Users\duperdog\Videos\2023-11-07_05-27-44 - 这位少女如梦中仙... .mp4" -pt 0
douyin平台, 账号名为test, 动作为upload, 视频文件(需对应的meta文件,详见上), 发布方式(pt):0 立即发布

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"
douyin平台, 账号名为test, 动作为upload, 视频文件, 发布方式(pt):1 定时发布, 发布时间(t): 2024-6-14 12:00

各平台详细说明

1. 抖音

douyin show

使用playwright模拟浏览器行为

抖音前端实现,诸多css class id 均为随机数,故项目中locator多采用相对定位,而非固定定位

  1. 准备视频目录结构
  2. cookie获取:get_douyin_cookie.py 扫码登录
  3. 上传视频:upload_video_to_douyin.py

其他部分解释:

douyin_setup handle 参数为True,为手动获取cookie False 则是校验cookie有效性

generate_schedule_time_next_day 默认从第二天开始(此举为避免选择时间的意外错误)
参数解释:
- total_videos 本次上传视频个数
- videos_per_day 每日上传视频数量
- daily_times 视频发布时间 默认6、11、14、16、22点
- start_days 从第N天开始

2023年12月15日补充:使用chromium可能会出现无法识别视频封面图片的情况 解决方案:

  1. 下载chrome
  2. 找到chrome的安装目录
  3. 将本地chrome 路径conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe"

参考项目:


2. 视频号

使用playwright模拟浏览器行为

  1. 准备视频目录结构
  2. cookie获取:get_tencent_cookie.py 扫码登录
  3. 上传视频:upload_video_to_tencent.py

其他部分解释:

参考上面douyin_setup 配置

视频号使用chromium会出现不支持上传视频,需要自行指定本地浏览器 解决方案:

  1. 下载chrome
  2. 找到chrome的安装目录
  3. 将本地chrome 路径conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe"

3. 小红书

该实现,借助ReaJason的xhs,再次感谢。

  1. 目录结构同上
  2. cookie获取,可使用chrome插件:EditThisCookie
  • 设置导出格式 Alt text
  • 导出 Alt text
  1. 黏贴至 uploader/xhs_uploader/accounts.ini文件中

解释与注意事项:

xhs签名方式分为两种:
- 本地签名 sign_locl (默认)
- 自建签名服务 sign

测试下来发现本地签名,在实际多账号情况下会存在问题
故如果你有多账号分发,建议采用自建签名服务(todo 上传docker配置)
疑难杂症

遇到签名问题,可尝试更新 "utils/stealth.min.js"文件 https://github.com/requireCool/stealth.min.js

24.4.10 大多数人小红书失败的原因在于你的cookie有问题,请参照你cookie是不是如我这样 正确的cookie

关于xhs部分可参考作者: https://reajason.github.io/xhs/basic

todo
  • 扫码登录方式(实验下来发现与浏览器获取的存在区别,会有问题,未来再研究)

参考项目:


4. bilibili

该实现,借助biliup的biliup-rs,再次感谢。

  1. 准备视频目录结构
  2. cookie获取:biliup.exe -u account.json login 选项你喜欢的登录方式 登录方式
  3. 上传视频:upload_video_to_bilibili.py

解释与注意事项:

bilibili cookie 长期有效(至少我运行2年以来是这样的)
其他平台 诸如linux mac 服务器运行 请自行研究

参考项目:


5. tiktok

使用playwright模拟浏览器行为(Simulating Browser Behavior with playwright)

  1. 准备视频目录结构(Prepare the video directory structure)
  2. 将本地chrome路径配置到conf文件中 LOCAL_CHROME_PATH = "xxx/xxx/chrome.exe"(Configure the local chrome path to the conf file)
  3. cookie获取(generate your cookie):get_tk_cookie.py get tiktok cookie
  4. 上传视频(upload video):upload_video_to_tiktok.py

24.7.3 update local chrome support:

  • you can upload your custom thumbnail(place png file at the path of videos)
  • if not, the system will take the first frame of the video as the thumbnail.
  • 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.)
  • before the upload process change the language to eng.

其他部分解释:

参考上面douyin_setup 配置

other part explain(for eng friends):

tiktok_setup handle parameter is True to get cookie manually False to check cookie validity

generate_schedule_time_next_day defaults to start on the next day (this is to avoid accidental time selection errors)
Parameter explanation:
- total_videos Number of videos uploaded this time
- videos_per_day Number of videos uploaded per day
- daily_times The video posting times are 6, 11, 14, 16, 22 by default.
- start_days Starts on the nth day.

参考项目:


其余部分(todo)

整理后上传


其他优秀项目

🐾Communicate

Donate as u like

如果你也是一个人,喜欢折腾, 想要在如此恶劣的大环境寻找突破

希望探索 #技术变现 #AI创业 #跨境航海 #自动化上传 #自动化视频 #技术探讨

可以来群里和大家交流

Nas 赞赏
后台回复 上传 加群交流 如果你觉得有用

Star History

如果这个项目对你有帮助,⭐以表示支持

Star History Chart

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

更改默认分支为main 展开 收起
Python
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化