ขูดโพสต์จาก Reddit และสร้างวิดีโอ YouTube และรูปขนาดย่อโดยอัตโนมัติ
เช็คเอาต์ช่อง YouTube ของฉันสำหรับตัวอย่างวิดีโอที่ทำโดย repo นี้:
อาชญากรรมใดที่คุณโอเคกับคนที่กระทำความผิด? 
รายการใดที่ไม่มีตัวละครที่น่าพอใจ? 
ช่อง YouTube ที่สร้างขึ้นโดยใช้ repo นี้:
หากช่อง YouTube ของคุณถูกสร้างขึ้นโดยใช้ที่เก็บนี้และคุณต้องการแสดงไว้ข้างต้นโปรดแสดงความคิดเห็นเกี่ยวกับปัญหานี้ #91 ด้วย URL ช่อง YouTube ของคุณและชื่อช่องและพูดถึงว่าคุณต้องการแสดงรายการในไฟล์ readme หลัก
ดูวิดีโอสอนการสอนบอท Python Reddit Youtube: วิดีโอ: 
ติดตั้งส่วนประกอบที่จำเป็นต้องมีก่อน:
Git - https://git-scm.com/download/win
Python 3.10-https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe
Microsoft C ++ Build Tools-https://visualstudio.microsoft.com/visual-cpp-build-tools/
Imagemagick - https://imagemagick.org/script/download.php#windows
git clone [email protected]:alexlaverty/python-reddit-youtube-bot.git
cd python-reddit-youtube-bot
สร้าง Reddit Praw Tokens - https://www.reddit.com/prefs/apps/
สร้างสำเนาของไฟล์ Auth-example.py และตั้งชื่อ Auth.py:
copy config/auth-example.py config/auth.py
อัปเดตไฟล์ auth.py เพื่อมีโทเค็น Auth Reddit ที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า
pip install -r requirements.txt
ติดตั้งและกำหนดค่านักเขียนบทละครโดยใช้:
playwright install
เรียกใช้สคริปต์ Python:
python app.py
เมื่อมันเสร็จสิ้นวิดีโอจะถูกสร้างขึ้นในโฟลเดอร์ videos และจะถูกตั้งชื่อ final.mp4
หากคุณต้องการเพิ่มพื้นหลังวิดีโอให้ติดตั้ง YT-DLP:
yt-dlp
จากนั้นสร้างโฟลเดอร์ backgrounds และเรียกใช้คำสั่งต่อไปนี้:
mkdir -p assets/backgrounds
cd assets/backgrounds
yt-dlp --playlist-items 1:10 -f 22 --output "%(uploader)s_%(id)s.%(ext)s" https://www.youtube.com/playlist?list=PLGmxyVGSCDKvmLInHxJ9VdiwEb82Lxd2E
คุณสามารถดูพารามิเตอร์ที่มีอยู่ได้โดยผ่าน --help :
python app.py --help
##### YOUTUBE REDDIT BOT #####
usage: app.py [-h] [-l VIDEO_LENGTH] [-o] [-s] [-t] [-u URL]
options:
-h, --help show this help message and exit
-l VIDEO_LENGTH, --video-length VIDEO_LENGTH
Set how long you want the video to be
-o, --disable-overlay
Disable video overlay
-s, --story-mode Generate video for post title and selftext only, disables user comments
-t, --thumbnail-only Generate thumbnail image only
-u URL, --url URL Specify Reddit post url, seperate with a comma for multiple posts.
หรือหากคุณต้องการสร้างวิดีโอสำหรับโพสต์ reddit เฉพาะคุณสามารถระบุได้ผ่าน param --url :
python app.py --url https://www.reddit.com/r/AskReddit/comments/hvsxty/which_legendary_reddit_post_comment_can_you_still/
หรือคุณสามารถทำ URL หลายตัวโดยการแยกด้วยเครื่องหมายจุลภาคเช่น:
python app.py --url https://www.reddit.com/r/post1,https://www.reddit.com/r/post2,https://www.reddit.com/r/post3
หากคุณต้องการสร้างเพียงภาพขนาดย่อคุณสามารถระบุ-โหมด --thumbnail-only สิ่งนี้จะข้ามกระบวนการรวบรวมวิดีโอ:
python app.py --thumbnail-only
หากคุณต้องการเปิดใช้งานผู้ประกาศข่าวให้แก้ไขการตั้งค่า PY และตั้งค่า:
enable_newscaster = True

หากวิดีโอ Newcaster มีหน้าจอสีเขียวคุณสามารถลบออกได้ด้วยการตั้งค่าต่อไปนี้ให้ใช้เขียงตาเพื่อรับสี RGB ของ Greenscreen และตั้งค่าให้ลบออก:
newscaster_remove_greenscreen = True
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
newscaster_greenscreen_remove_threshold = 100
มีตัวเลือกไม่กี่ตัวที่คุณสามารถปรับแต่งใน settings.py ค่าไฟล์ py:
ระบุ subreddits ที่คุณต้องการขูด:
subreddits = [
"AmItheAsshole",
"antiwork",
"AskMen",
"ChoosingBeggars",
"hatemyjob",
"NoStupidQuestions",
"pettyrevenge",
"Showerthoughts",
"TooAfraidToAsk",
"TwoXChromosomes",
"unpopularopinion",
"confessions",
"confession"
]
subreddits เพื่อยกเว้น:
subreddits_excluded = [
"r/CFB",
]
กรองโพสต์ reddit ผ่านคำหลักที่ระบุ
banned_keywords =["my", "nasty", "keywords"]
เปลี่ยนข้อความเป็นเครื่องมือพูดที่คุณต้องการใช้บันทึก AWS Polly ต้องการและบัญชี AWS และโทเค็นรับรองความถูกต้องและอาจต้องเสียค่าใช้จ่าย:
สนับสนุนเครื่องมือพูด:
# choices "polly","balcon","gtts"
voice_engine = "polly"
จำนวนวิดีโอ reddit ทั้งหมดที่จะสร้าง
total_posts_to_process = 5
การตั้งค่าถัดไปคือการกรองโพสต์โดยอัตโนมัติ
ข้ามโพสต์ Reddit ที่น้อยกว่าการอัปเดตจำนวนนี้
minimum_submission_score = 5000
การกรองโพสต์ reddit ตามความยาวชื่อโพสต์ reddit
title_length_minimum = 20
title_length_maximum = 100
กรองโพสต์ที่เกินความยาวข้อความตัวเองสูงสุด
maximum_length_self_text = 5000
กรองโพสต์ reddit ที่ไม่มีความคิดเห็นเพียงพอ
minimum_num_comments = 200
พยายามประมวลผลโพสต์ reddit จำนวนสูงสุดเท่านั้น
submission_limit = 1000
ระบุจำนวนภาพขนาดย่อที่คุณต้องการสร้าง
number_of_thumbnails = 3
ระบุความยาววิดีโอสูงสุด
max_video_length = 600 # Seconds
ระบุจำนวนความคิดเห็นสูงสุดเพื่อสร้างในวิดีโอ
comment_limit = 600
การระบุเส้นทางโฟลเดอร์ต่างๆ
assets_directory = "assets"
temp_directory = "temp"
audio_directory = str(Path("temp"))
fonts_directory = str(Path(assets_directory,"fonts"))
image_backgrounds_directory = str(Path(assets_directory,"image_backgrounds"))
images_directory = str(Path(assets_directory,"images"))
thumbnails_directory = str(Path(assets_directory,"images"))
background_directory = str(Path(assets_directory,"backgrounds"))
video_overlay_filepath = str(Path(assets_directory,"particles.mp4"))
videos_directory = "videos"
ระบุความสูงและความกว้างของวิดีโอ
video_height = 720
video_width = 1280
clip_size = (video_width, video_height)
ข้ามการรวบรวมวิดีโอและออกไปแทน
enable_compilation = True
ข้ามการอัปโหลดไปยัง YouTube
enable_upload = False
เพิ่มวิดีโอซ้อนทับลงในวิดีโอเช่น Snow Falling Effect
enable_overlay = True
เพิ่มในเครื่องอ่านผู้ประกาศข่าวในวิดีโอ
enable_newscaster = True
หากวิดีโอของ Newcaster เป็นหน้าจอสีเขียวพยายามลบหน้าจอสีเขียว
newscaster_remove_greenscreen = True
ระบุสีของหน้าจอสีเขียวใน RGB
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
ยิ่งจำนวนเกณฑ์กรีนสกรีนสูงขึ้นเท่าไหร่ก็จะยิ่งพยายามลบออกมากเท่าไหร่
newscaster_greenscreen_remove_threshold = 100
PATH ไปยังไฟล์ Newcaster
newscaster_filepath = str(Path(assets_directory,"newscaster.mp4").resolve())
ตำแหน่งบนหน้าจอของผู้ประกาศข่าว
newscaster_position = ("left","bottom")
ขนาดของผู้ประกาศข่าว
newcaster_size = (video_width * 0.5, video_height * 0.5)
เพิ่มหยุดชั่วคราวหลังจากแต่ละข้อความลงในไฟล์เสียงพูด
pause = 1 # Pause after speech
การตั้งค่าสไตล์ข้อความ
text_bg_color = "#1A1A1B"
text_bg_opacity = 1
text_color = "white"
text_font = "Verdana-Bold"
text_fontsize = 32
ดาวน์โหลดรูปภาพจาก Lexica หรือข้ามพยายามดาวน์โหลด
lexica_download_enabled = True