264 lines
8.6 KiB
Python
264 lines
8.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
抖音发布调度器使用示例
|
||
展示如何使用 DouyinScheduler 进行各种发布操作
|
||
"""
|
||
|
||
from douyin_scheduler import DouyinScheduler, DouyinConfig
|
||
from datetime import datetime, timedelta
|
||
import os
|
||
|
||
|
||
def example_basic_video_publish():
|
||
"""示例:基本视频发布"""
|
||
print("=== 基本视频发布示例 ===")
|
||
|
||
# 创建调度器实例
|
||
scheduler = DouyinScheduler("cookies.json", "safari")
|
||
|
||
try:
|
||
# 发布视频
|
||
success = scheduler.publish_video_with_product(
|
||
video_path="/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
title="广州周末亲子游",
|
||
description="带孩子探索科学的奥秘 #广州亲子游 #科学中心"
|
||
)
|
||
|
||
if success:
|
||
print("✅ 视频发布成功")
|
||
else:
|
||
print("❌ 视频发布失败")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def example_video_with_product():
|
||
"""示例:带商品的视频发布"""
|
||
print("=== 带商品视频发布示例 ===")
|
||
|
||
scheduler = DouyinScheduler("cookies.json", "safari")
|
||
|
||
try:
|
||
success = scheduler.publish_video_with_product(
|
||
video_path="/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
title="广州周末亲子游 - 科学中心探索之旅",
|
||
description="周末带娃好去处!广东科学中心等你来探索 #广州亲子游 #科学中心 #周末遛娃",
|
||
product_name="广东科学中心门票--亲子1大1小票",
|
||
product_info="广东科学中心门票"
|
||
)
|
||
|
||
if success:
|
||
print("✅ 带商品视频发布成功")
|
||
else:
|
||
print("❌ 带商品视频发布失败")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def example_scheduled_publish():
|
||
"""示例:定时发布"""
|
||
print("=== 定时发布示例 ===")
|
||
|
||
scheduler = DouyinScheduler("cookies.json", "safari")
|
||
|
||
try:
|
||
# 计算明天中午12点的时间
|
||
tomorrow_noon = datetime.now() + timedelta(days=1)
|
||
tomorrow_noon = tomorrow_noon.replace(hour=12, minute=0, second=0, microsecond=0)
|
||
schedule_time = tomorrow_noon.strftime("%Y-%m-%d %H:%M")
|
||
|
||
success = scheduler.publish_video_with_product(
|
||
video_path="/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
title="定时发布测试 - 广州科学中心",
|
||
description="定时发布功能测试 #定时发布 #广州科学中心",
|
||
schedule_time=schedule_time
|
||
)
|
||
|
||
if success:
|
||
print(f"✅ 定时发布设置成功,发布时间:{schedule_time}")
|
||
else:
|
||
print("❌ 定时发布设置失败")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def example_batch_publish():
|
||
"""示例:批量发布"""
|
||
print("=== 批量发布示例 ===")
|
||
|
||
# 定义要发布的视频列表
|
||
videos_to_publish = [
|
||
{
|
||
"video_path": "/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
"title": "广州科学中心 - 亲子游第一站",
|
||
"description": "科学启蒙从这里开始 #广州亲子游 #科学中心",
|
||
"product_name": "广东科学中心门票--亲子1大1小票",
|
||
"product_info": "广东科学中心门票",
|
||
"schedule_time": "2025-06-05 12:30"
|
||
},
|
||
{
|
||
"video_path": "/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
"title": "广州科学中心 - 亲子游第二站",
|
||
"description": "更多精彩等你发现 #广州亲子游 #科学中心",
|
||
"product_name": "广东科学中心门票--亲子1大1小票",
|
||
"product_info": "广东科学中心门票",
|
||
"schedule_time": "2025-06-05 14:30"
|
||
}
|
||
]
|
||
|
||
# 创建调度器实例
|
||
scheduler = DouyinScheduler("cookies.json", "safari")
|
||
|
||
try:
|
||
success_count = 0
|
||
total_count = len(videos_to_publish)
|
||
|
||
for i, video_info in enumerate(videos_to_publish, 1):
|
||
print(f"\n--- 发布第 {i}/{total_count} 个视频 ---")
|
||
|
||
success = scheduler.publish_video_with_product(**video_info)
|
||
|
||
if success:
|
||
success_count += 1
|
||
print(f"✅ 第 {i} 个视频发布成功")
|
||
else:
|
||
print(f"❌ 第 {i} 个视频发布失败")
|
||
|
||
# 如果不是最后一个视频,需要重新打开发布页面
|
||
if i < total_count:
|
||
scheduler.driver.get("https://creator.douyin.com/creator-micro/content/upload?enter_from=dou_web")
|
||
scheduler.utils.smart_wait(scheduler.driver, 3)
|
||
|
||
print(f"\n=== 批量发布完成 ===")
|
||
print(f"成功发布: {success_count}/{total_count} 个视频")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def example_with_config():
|
||
"""示例:使用配置文件"""
|
||
print("=== 使用配置文件示例 ===")
|
||
|
||
# 加载配置
|
||
config = DouyinConfig("config_example.json")
|
||
|
||
# 获取配置参数
|
||
browser_type = config.get("browser", {}).get("type", "safari")
|
||
cookies_path = config.get("cookies", {}).get("path", "cookies.json")
|
||
|
||
scheduler = DouyinScheduler(cookies_path, browser_type)
|
||
|
||
try:
|
||
# 使用配置中的默认标签
|
||
default_hashtags = config.get("content", {}).get("default_hashtags", [])
|
||
hashtag_str = " ".join(default_hashtags)
|
||
|
||
success = scheduler.publish_video_with_product(
|
||
video_path="/Users/yarrow/autoPublisher/video/gdsc/2011_1749089195_raw.mp4",
|
||
title="配置文件测试发布",
|
||
description=f"使用配置文件进行发布测试 {hashtag_str}"
|
||
)
|
||
|
||
if success:
|
||
print("✅ 使用配置文件发布成功")
|
||
else:
|
||
print("❌ 使用配置文件发布失败")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def interactive_publish():
|
||
"""交互式发布"""
|
||
print("=== 交互式发布 ===")
|
||
|
||
# 获取用户输入
|
||
video_path = input("请输入视频文件路径: ").strip()
|
||
if not video_path or not os.path.exists(video_path):
|
||
print("❌ 视频文件不存在")
|
||
return
|
||
|
||
title = input("请输入视频标题: ").strip()
|
||
if not title:
|
||
print("❌ 标题不能为空")
|
||
return
|
||
|
||
description = input("请输入视频描述(可选): ").strip()
|
||
|
||
# 询问是否挂载商品
|
||
add_product = input("是否挂载商品?(y/n): ").strip().lower()
|
||
product_name = None
|
||
product_info = None
|
||
|
||
if add_product == 'y':
|
||
product_name = input("请输入商品名称: ").strip()
|
||
product_info = input("请输入商品信息: ").strip()
|
||
|
||
# 询问是否定时发布
|
||
schedule_publish = input("是否定时发布?(y/n): ").strip().lower()
|
||
schedule_time = None
|
||
|
||
if schedule_publish == 'y':
|
||
schedule_time = input("请输入发布时间(格式:2025-06-05 12:30): ").strip()
|
||
|
||
# 执行发布
|
||
scheduler = DouyinScheduler("cookies.json", "safari")
|
||
|
||
try:
|
||
success = scheduler.publish_video_with_product(
|
||
video_path=video_path,
|
||
title=title,
|
||
description=description,
|
||
product_name=product_name,
|
||
product_info=product_info,
|
||
schedule_time=schedule_time
|
||
)
|
||
|
||
if success:
|
||
print("✅ 发布成功")
|
||
else:
|
||
print("❌ 发布失败")
|
||
|
||
finally:
|
||
scheduler.close()
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
print("抖音发布调度器使用示例")
|
||
print("=" * 40)
|
||
|
||
examples = {
|
||
"1": ("基本视频发布", example_basic_video_publish),
|
||
"2": ("带商品视频发布", example_video_with_product),
|
||
"3": ("定时发布", example_scheduled_publish),
|
||
"4": ("批量发布", example_batch_publish),
|
||
"5": ("使用配置文件", example_with_config),
|
||
"6": ("交互式发布", interactive_publish),
|
||
}
|
||
|
||
print("请选择要运行的示例:")
|
||
for key, (desc, _) in examples.items():
|
||
print(f"{key}. {desc}")
|
||
|
||
choice = input("\n请输入选择 (1-6): ").strip()
|
||
|
||
if choice in examples:
|
||
desc, func = examples[choice]
|
||
print(f"\n运行示例: {desc}")
|
||
try:
|
||
func()
|
||
except KeyboardInterrupt:
|
||
print("\n用户中断操作")
|
||
except Exception as e:
|
||
print(f"运行示例时出错: {e}")
|
||
else:
|
||
print("无效选择")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main() |