fix: 将所有后端文件都迁移到 sau_backend 文件夹内
@@ -167,4 +167,5 @@ youtube_uploader/*.json
|
||||
douyin_uploader/*.json
|
||||
bilibili_uploader/*.json
|
||||
tk_uploader/*.json
|
||||
cookies
|
||||
|
||||
sau_backend/cookies
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
项目实现了对 `抖音`、`Bilibili`、`小红书`、`快手`、`视频号`、`百家号` 以及 `TikTok` 等平台的视频上传、定时发布等功能。
|
||||
结合各平台 `uploader` 模块,您可以轻松配置和扩展支持的平台,并通过示例脚本快速上手。
|
||||
|
||||
<img src="media/show/tkupload.gif" alt="tiktok show" width="800"/>
|
||||
<img src="sau_backend/media/show/tkupload.gif" alt="tiktok show" width="800"/>
|
||||
|
||||
## 目录
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
| 微信公众号 | 交流群 (通过公众号获取) |
|
||||
| :----------------------------------------: | :------------------------------------------: |
|
||||
|  |  |
|
||||
|  |  |
|
||||
| 关注公众号,后台回复 `上传` 获取加群方式 | 如果您觉得项目有用,可以考虑打赏支持一下 |
|
||||
|
||||
## 🤝贡献指南
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.baijiahao_uploader.main import baijiahao_setup
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.baijiahao_uploader.main import baijiahao_setup
|
||||
|
||||
if __name__ == '__main__':
|
||||
account_file = Path(BASE_DIR / "cookies" / "baijiahao_uploader" / "account.json")
|
||||
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.douyin_uploader.main import douyin_setup
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.douyin_uploader.main import douyin_setup
|
||||
|
||||
if __name__ == '__main__':
|
||||
account_file = Path(BASE_DIR / "cookies" / "douyin_uploader" / "account.json")
|
||||
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.ks_uploader.main import ks_setup
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.ks_uploader.main import ks_setup
|
||||
|
||||
if __name__ == '__main__':
|
||||
account_file = Path(BASE_DIR / "cookies" / "ks_uploader" / "account.json")
|
||||
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.tencent_uploader.main import weixin_setup
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.tencent_uploader.main import weixin_setup
|
||||
|
||||
if __name__ == '__main__':
|
||||
account_file = Path(BASE_DIR / "cookies" / "tencent_uploader" / "account.json")
|
||||
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.tk_uploader.main_chrome import tiktok_setup
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.tk_uploader.main_chrome import tiktok_setup
|
||||
|
||||
if __name__ == '__main__':
|
||||
account_file = Path(BASE_DIR / "cookies" / "tk_uploader" / "account.json")
|
||||
@@ -1,9 +1,9 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.baijiahao_uploader.main import baijiahao_setup, BaiJiaHaoVideo
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.baijiahao_uploader.main import baijiahao_setup, BaiJiaHaoVideo
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -1,10 +1,10 @@
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from uploader.bilibili_uploader.main import read_cookie_json_file, extract_keys_from_json, random_emoji, BilibiliUploader
|
||||
from conf import BASE_DIR
|
||||
from utils.constant import VideoZoneTypes
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.uploader.bilibili_uploader.main import read_cookie_json_file, extract_keys_from_json, random_emoji, BilibiliUploader
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.utils.constant import VideoZoneTypes
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
if __name__ == '__main__':
|
||||
filepath = Path(BASE_DIR) / "videos"
|
||||
@@ -1,9 +1,9 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.douyin_uploader.main import douyin_setup, DouYinVideo
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.douyin_uploader.main import douyin_setup, DouYinVideo
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -1,9 +1,9 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.ks_uploader.main import ks_setup, KSVideo
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.ks_uploader.main import ks_setup, KSVideo
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -1,10 +1,10 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from uploader.tencent_uploader.main import weixin_setup, TencentVideo
|
||||
from utils.constant import TencentZoneTypes
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.uploader.tencent_uploader.main import weixin_setup, TencentVideo
|
||||
from sau_backend.utils.constant import TencentZoneTypes
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -1,10 +1,10 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
# from tk_uploader.main import tiktok_setup, TiktokVideo
|
||||
from uploader.tk_uploader.main_chrome import tiktok_setup, TiktokVideo
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.uploader.tk_uploader.main_chrome import tiktok_setup, TiktokVideo
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@@ -4,9 +4,9 @@ from time import sleep
|
||||
|
||||
from xhs import XhsClient
|
||||
|
||||
from conf import BASE_DIR
|
||||
from utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from uploader.xhs_uploader.main import sign_local, beauty_print
|
||||
from sau_backend.conf import BASE_DIR
|
||||
from sau_backend.utils.files_times import generate_schedule_time_next_day, get_title_and_hashtags
|
||||
from sau_backend.uploader.xhs_uploader.main import sign_local, beauty_print
|
||||
|
||||
config = configparser.RawConfigParser()
|
||||
config.read(Path(BASE_DIR / "uploader" / "xhs_uploader" / "accounts.ini"))
|
||||
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 396 KiB After Width: | Height: | Size: 396 KiB |
|
Before Width: | Height: | Size: 901 KiB After Width: | Height: | Size: 901 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies").mkdir(exist_ok=True)
|
||||
@@ -7,10 +7,10 @@ import os
|
||||
import time
|
||||
import asyncio
|
||||
|
||||
from conf import LOCAL_CHROME_PATH
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.log import baijiahao_logger
|
||||
from utils.network import async_retry
|
||||
from sau_backend.conf import LOCAL_CHROME_PATH
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.log import baijiahao_logger
|
||||
from sau_backend.utils.network import async_retry
|
||||
|
||||
|
||||
async def baijiahao_cookie_gen(account_file):
|
||||
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies" / "bilibili_uploader").mkdir(exist_ok=True)
|
||||
@@ -3,7 +3,7 @@ import pathlib
|
||||
import random
|
||||
from biliup.plugins.bili_webup import BiliBili, Data
|
||||
|
||||
from utils.log import bilibili_logger
|
||||
from sau_backend.utils.log import bilibili_logger
|
||||
|
||||
|
||||
def extract_keys_from_json(data):
|
||||
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies" / "douyin_uploader").mkdir(exist_ok=True)
|
||||
@@ -5,9 +5,9 @@ from playwright.async_api import Playwright, async_playwright, Page
|
||||
import os
|
||||
import asyncio
|
||||
|
||||
from conf import LOCAL_CHROME_PATH
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.log import douyin_logger
|
||||
from sau_backend.conf import LOCAL_CHROME_PATH
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.log import douyin_logger
|
||||
|
||||
|
||||
async def cookie_auth(account_file):
|
||||
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies" / "ks_uploader").mkdir(exist_ok=True)
|
||||
@@ -5,10 +5,10 @@ from playwright.async_api import Playwright, async_playwright
|
||||
import os
|
||||
import asyncio
|
||||
|
||||
from conf import LOCAL_CHROME_PATH
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.files_times import get_absolute_path
|
||||
from utils.log import kuaishou_logger
|
||||
from sau_backend.conf import LOCAL_CHROME_PATH
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.files_times import get_absolute_path
|
||||
from sau_backend.utils.log import kuaishou_logger
|
||||
|
||||
|
||||
async def cookie_auth(account_file):
|
||||
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies" / "tencent_uploader").mkdir(exist_ok=True)
|
||||
@@ -5,10 +5,10 @@ from playwright.async_api import Playwright, async_playwright
|
||||
import os
|
||||
import asyncio
|
||||
|
||||
from conf import LOCAL_CHROME_PATH
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.files_times import get_absolute_path
|
||||
from utils.log import tencent_logger
|
||||
from sau_backend.conf import LOCAL_CHROME_PATH
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.files_times import get_absolute_path
|
||||
from sau_backend.utils.log import tencent_logger
|
||||
|
||||
|
||||
def format_str_for_short_title(origin_title: str) -> str:
|
||||
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
Path(BASE_DIR / "cookies" / "tk_uploader").mkdir(exist_ok=True)
|
||||
@@ -5,10 +5,10 @@ from datetime import datetime
|
||||
from playwright.async_api import Playwright, async_playwright
|
||||
import os
|
||||
import asyncio
|
||||
from uploader.tk_uploader.tk_config import Tk_Locator
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.files_times import get_absolute_path
|
||||
from utils.log import tiktok_logger
|
||||
from sau_backend.uploader.tk_uploader.tk_config import Tk_Locator
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.files_times import get_absolute_path
|
||||
from sau_backend.utils.log import tiktok_logger
|
||||
|
||||
|
||||
async def cookie_auth(account_file):
|
||||
@@ -6,11 +6,11 @@ from playwright.async_api import Playwright, async_playwright
|
||||
import os
|
||||
import asyncio
|
||||
|
||||
from conf import LOCAL_CHROME_PATH
|
||||
from uploader.tk_uploader.tk_config import Tk_Locator
|
||||
from utils.base_social_media import set_init_script
|
||||
from utils.files_times import get_absolute_path
|
||||
from utils.log import tiktok_logger
|
||||
from sau_backend.conf import LOCAL_CHROME_PATH
|
||||
from sau_backend.uploader.tk_uploader.tk_config import Tk_Locator
|
||||
from sau_backend.utils.base_social_media import set_init_script
|
||||
from sau_backend.utils.files_times import get_absolute_path
|
||||
from sau_backend.utils.log import tiktok_logger
|
||||
|
||||
|
||||
async def cookie_auth(account_file):
|
||||
@@ -6,7 +6,7 @@ from time import sleep
|
||||
import requests
|
||||
from playwright.sync_api import sync_playwright
|
||||
|
||||
from conf import BASE_DIR, XHS_SERVER
|
||||
from sau_backend.conf import BASE_DIR, XHS_SERVER
|
||||
|
||||
config = configparser.RawConfigParser()
|
||||
config.read('accounts.ini')
|
||||
@@ -5,7 +5,7 @@ from time import sleep
|
||||
|
||||
from xhs import XhsClient
|
||||
|
||||
from uploader.xhs_uploader.main import sign
|
||||
from sau_backend.uploader.xhs_uploader.main import sign
|
||||
|
||||
# pip install qrcode
|
||||
if __name__ == '__main__':
|
||||
@@ -1,7 +1,7 @@
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
SOCIAL_MEDIA_DOUYIN = "douyin"
|
||||
SOCIAL_MEDIA_TENCENT = "tencent"
|
||||
@@ -3,7 +3,7 @@ from datetime import timedelta
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
|
||||
def get_absolute_path(relative_path: str, base_dir: str = None) -> str:
|
||||
@@ -2,7 +2,7 @@ from pathlib import Path
|
||||
from sys import stdout
|
||||
from loguru import logger
|
||||
|
||||
from conf import BASE_DIR
|
||||
from sau_backend.conf import BASE_DIR
|
||||
|
||||
|
||||
def log_formatter(record: dict) -> str:
|
||||
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 103 KiB |