ตามเทรนด์ YouTube ล่าสุดในวิดีโอ“ Reddit to Text-to-speech” วิดีโอ YouTube ที่ฉันเริ่มโครงการเพื่อสร้างโปรแกรมที่สามารถทำให้กระบวนการรับ, สร้างและอัปโหลดวิดีโอเหล่านี้ไปยัง YouTube โดยอัตโนมัติ ใช้เวลา 4 เดือนในการทำโครงการให้เสร็จและประกอบด้วย 3 โปรแกรมแยกต่างหากที่ทำงานพร้อมกันเพื่อให้งานนี้เสร็จสมบูรณ์
ความคิดคือการลดการแทรกแซงด้วยตนเองให้มากที่สุดเท่าที่จะเป็นไปได้และทำให้งานเล็ก ๆ น้อย ๆ ทั้งหมดเป็นไปโดยอัตโนมัติ อย่างไรก็ตามกระบวนการไม่สามารถเป็นอัตโนมัติ 100% ตัวอย่างเช่นความคิดเห็นที่มีลิงก์ในนั้นไม่สามารถเก็บไว้ได้เนื่องจากคุณภาพของวิดีโอจะประกอบด้วยเนื่องจาก TTS นอกจากนี้ในขณะที่ความคิดเห็นอาจมีคะแนนโหวตจำนวนมากมันอาจจะเป็นที่น่ารังเกียจและไม่ปลอดภัยสำหรับวิดีโอ YouTube และต้องลบออก รูปขนาดย่อในขณะที่สร้างขึ้นบางส่วนจะต้องได้รับการแก้ไขเพื่อสร้างการอุทธรณ์ใด ๆ ให้กับผู้ชมเพื่อคลิกที่วิดีโอของคุณ เช่นเดียวกันกับชื่อของวิดีโอซึ่งจะต้องเป็น clickbait-y เพื่อที่จะได้รับความสนใจใด ๆ ฉันพยายามปรับปรุงกระบวนการด้วยตนเองด้วยโปรแกรมไคลเอนต์และใช้เวลาประมาณ 30 นาทีในการสร้างวิดีโอ 6 รายการ (สูงสุดที่สามารถอัปโหลดได้ภายใน 24 ชั่วโมงด้วยข้อมูล YouTube API)
วิดีโอที่สร้างขึ้นของฉันบางส่วน:
https://www.youtube.com/watch?v=XXDKMHYXCSQ
https://www.youtube.com/watch?v=AW0YJIXXNXI&t=35S
กระบวนการทำวิดีโอให้เสร็จ:
ตัวอย่างช่องทาง text-to-speech reddit:
https://www.youtube.com/watch?v=izsxhx64pgq https://www.youtube.com/watch?v=VZDTUAP2ZTW
วางสิ่งเหล่านี้ไว้ในโฟลเดอร์ที่เรียกว่า "สินทรัพย์" ภายในไดเรกทอรีวิดีโอ YouTube Bot Video Generator
นอกจากนี้ฉันเปลี่ยนใจในหลาย ๆ ด้านการออกแบบบางส่วนผ่านโครงการและดังนั้นไฟล์บางไฟล์จึงมีชื่อแปลก ๆ และมีรหัสที่ไม่ได้ใช้ที่นี่และที่นั่น ฉันจะไม่อัปเดตรหัสอีกต่อไป แต่โปรดอย่าลังเล
ตรวจสอบการพึ่งพา. txt
ในการติดตั้งการพึ่งพา python ส่วนใหญ่ได้อย่างง่ายดายให้เรียกใช้คำสั่งต่อไปนี้หลังจากการโคลนนิ่ง (บางอย่างอาจต้องติดตั้งด้วยตนเอง):
pip install -r requirements.txt
เทรนด์ล่าสุดในวิดีโอข้อความเป็นคำพูดของ Reddit ประกอบด้วย (โดยปกติ) ของสูตรที่ง่ายมาก:
เพลงถูกเลือกโดยการสุ่ม ฉันได้ดาวน์โหลดเพลง ~ 40 เพลง Kevin MacLeod Royality เพลงฟรีที่จะเลือกแบบสุ่ม
https://www.youtube.com/watch?v=CCPYYRDS-QO&LIST=PLBZGR7H3FYUS3LVITFAIGV601UKUHJX
สินทรัพย์ทั้งหมดที่ใช้ในการสร้างวิดีโอสามารถดาวน์โหลดได้ที่นี่:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
พวกเขาจะต้องวางไว้ในโฟลเดอร์ที่เรียกว่า "สินทรัพย์" ในโปรแกรมเครื่องกำเนิดวิดีโอ
โครงการประกอบด้วยสามโปรแกรมแยกกัน:
โปรแกรมนี้มี (1) ซ็อกเก็ตเซิร์ฟเวอร์สำหรับการเชื่อมต่อกับโปรแกรมไคลเอนต์และเซิร์ฟเวอร์ซ็อกเก็ต (2) สำหรับการเชื่อมต่อกับไคลเอนต์ Video Generator นอกจากนี้โปรแกรมนี้จะคว้าสคริปต์ใหม่จาก Reddit ทุก ๆ ชั่วโมงและจะอัปเดตโปรแกรมที่มีอยู่ซึ่งยังไม่ได้รับการแก้ไข
(1) ซ็อกเก็ตเซิร์ฟเวอร์นี้จะส่งสคริปต์ดิบจากฐานข้อมูลไปยังโปรแกรมตรวจสอบด้วยตนเอง (ดูด้านล่าง) จากนั้นจะได้รับสคริปต์ที่ตรวจสอบเหล่านี้และอัปเดตฐานข้อมูลด้วยสคริปต์ที่สรุปซึ่งจะรวมถึงรูปขนาดย่อคำอธิบายและชื่อเรื่อง เซิร์ฟเวอร์สามารถจัดการไคลเอนต์หลายตัวเพื่อให้หลายคนสามารถแก้ไขสคริปต์เหล่านี้ได้
(2) เซิร์ฟเวอร์ Video Generator ได้รับการออกแบบมาเพื่อจัดการไคลเอนต์ Video Generator หนึ่งตัวเท่านั้น แผนเดิมสำหรับเซิร์ฟเวอร์นี้เพื่อจัดการไคลเอนต์วิดีโอตัวสร้างวิดีโอหลายตัวกระจายออกไประหว่างคอมพิวเตอร์หลายเครื่อง อย่างไรก็ตามฉันพบว่าคอมพิวเตอร์เครื่องหนึ่งเพียงพอสำหรับทุกความต้องการในการสร้างวิดีโอของฉันดังนั้นฉันจึงตัดสินใจที่จะโค้ดให้กับลูกค้าเพียงรายเดียวเท่านั้น วัตถุประสงค์ของเซิร์ฟเวอร์นี้คือการส่งสคริปต์สุดท้ายจากฐานข้อมูลไปยังไคลเอนต์ Video Generator
โปรแกรมนี้จะได้รับสคริปต์วิดีโอขั้นสุดท้ายจากเซิร์ฟเวอร์ YouTube Bot Video Generator ซึ่งรวมถึงรูปขนาดย่อคำอธิบายแท็กและชื่อเรื่อง สคริปต์เหล่านี้จะถูกสร้างขึ้นเป็นไฟล์ MP4 จากนั้นอัปโหลดไปยัง YouTube ในเวลาที่กำหนดเวลา (ปัจจุบันสุ่มเวลา 17.00 น., 18.00 น., เวลา 19.00 น. GMT - เวลาแนะนำในการอัปโหลดไปยัง YouTube) เมื่อได้รับสคริปต์แล้วจะถูกสร้างขึ้นโปรแกรมจะรอจนกว่าจะมีเครดิต API เพียงพอที่จะอัปโหลดโดยการตรวจสอบเมื่ออัปโหลดวิดีโอ 6 รายการล่าสุด
API โควต้าการใช้งานรีเซ็ตเวลา 8.00 น. GMT ฉันคำนวณว่าการอัปโหลดวิดีโอแต่ละรายการจะมีค่าใช้จ่าย 1658 เครดิต คุณสามารถใช้สูงสุด 10,000 หน่วยกิตต่อวัน ซึ่งหมายความว่าในทางทฤษฎีคุณจะสามารถ อัปโหลดวิดีโอได้ 6 ครั้งต่อวัน อย่างไรก็ตามในทางปฏิบัติฉันสามารถอัปโหลดวิดีโอได้ 5 รายการบางครั้งวิดีโอที่หกจะอัปโหลด แต่จะมีโควต้าไม่เพียงพอที่จะอัปโหลดภาพขนาดย่อซึ่งในกรณีนั้นจะต้องมีการแทรกแซงด้วยตนเองเพื่ออัปโหลดภาพย่อด้วยตนเอง วิดีโอจะถูกอัปโหลดด้วย YouTube-Upload ซึ่งฉันได้จัดการเพื่อทำงานกับ Python 2.7 เท่านั้น มันถูกเรียกด้วย subprocess.check_call พร้อมรุ่น Python ที่ระบุและอาร์กิวเมนต์ตามที่ต้องการ (ลิงก์ด้านล่าง)
เมื่ออัพโหลดวิดีโอเรียบร้อยแล้วจะถูกตั้งค่าให้เสร็จสมบูรณ์พร้อมกับเวลาอัปโหลดเพื่อให้โปรแกรมสามารถตรวจสอบจำนวนวิดีโอที่อัปโหลดภายในวันเพื่อหลีกเลี่ยงการใช้โควต้าเกินกว่า
ข้อมูล YouTube API https://developers.google.com/youtube/v3/getting-started youtube-upload (Python 2.7) https://github.com/tokland/youtube-upload
ข้อความเป็นคำพูด โดยหนึ่งในแง่มุมที่ท้าทายที่สุดของโครงการคือการได้รับข้อความเป็นคำพูดเพื่อทำงานอย่างถูกต้อง ฉันต้องการใช้ข้อความสแกน Soft Daniel MLG เพื่อพูดเสียง - สิ่งที่พบในวิดีโอข้อความส่วนใหญ่เป็นคำพูด reddit ฉันเชื่อว่านี่เป็นส่วนสำคัญของโครงการเพราะเสียงนี้เป็นที่รู้จักมากและเป็น (ในความคิดของฉัน) หนึ่งในข้อความที่ดีที่สุดในการกล่าวสุนทรพจน์ ฉันใช้เวอร์ชันบรรทัดคำสั่งของ Balabolka เพื่อสร้างไฟล์. wav และสิ่งเหล่านี้ถูกซิงค์กับเฟรมที่แตกต่างกันในโปรแกรมการสร้างวิดีโอ
Balabolka http://www.cross-plus-a.com/balabolka.htm คำแนะนำเกี่ยวกับวิธีการรับเสียง Daniel MLG https://www.youtube.com/watch?v=yJ3DHTNYOTY
โปรแกรมไคลเอนต์เป็นกระบวนการปัดแบบด้านซ้ายและขวาเพื่อกรองความคิดเห็นที่ไม่รวมอยู่ในวิดีโอ นอกจากนี้ยังอนุญาตให้ผู้ใช้เขียนชื่อเรื่องและอัปโหลดภาพขนาดย่อสำหรับวิดีโอรวมถึงการแก้ไขคำอธิบายและแท็กแม้ว่าชื่อคำอธิบายและแท็กจะถูกสร้างขึ้นบางส่วนดังนี้: ชื่อ: เป็นค่าเริ่มต้นคือคำอธิบายชื่อโพสต์: โดยค่าเริ่มต้น สิ่งเหล่านี้สามารถแก้ไขได้ เทมเพลตสำหรับรูปขนาดย่อถูกสร้างขึ้นบางส่วนเช่นกัน มีการตรวจสอบเพื่อให้แน่ใจว่าจำนวนอักขระไม่เกินสำหรับฟิลด์เหล่านี้ทั้งหมดเช่นชื่อเรื่องต้องต่ำกว่า 100 อักขระ
เนื้อหาสุดท้ายของวิดีโอรวมถึงสคริปต์ที่แก้ไข, รูปขนาดย่อ, แท็ก, คำอธิบายและการตั้งค่าวิดีโอ (เป็นไปได้ที่จะเปลี่ยนคุณสมบัติบางอย่างของเทมเพลตเครื่องกำเนิดวิดีโอในระหว่างกระบวนการแก้ไขเช่นสีพื้นหลังขนาดข้อความความกว้างบรรทัด ฯลฯ ฉันมักจะเก็บค่าเริ่มต้น
mysql
การจัดเก็บสคริปต์และข้อมูลที่เกี่ยวข้องจะทำด้วยฐานข้อมูล MySQL นี่เป็นครั้งแรกที่ฉันใช้ฐานข้อมูล MySQL สำหรับโครงการฉันไม่ได้ยอดเยี่ยมที่ SQL ฉันได้เรียนรู้สิ่งที่จำเป็นในการทำงาน ฉันใช้สองตาราง“ ผู้ใช้”,“ Videogenerators” และ“ สคริปต์”
ตาราง“ ผู้ใช้”
เดิมทีฉันได้วางแผนที่จะสร้างระบบเข้าสู่ระบบที่กว้างขวางซึ่งผู้ใช้มีการแก้ไขสถิติดูว่าใครเป็นออนไลน์ ฯลฯ ทิ้งสิ่งนี้และตอนนี้การใช้งานเพียงอย่างเดียวคือการติดตามว่าผู้ใช้กำลังแก้ไขวิดีโอใดเพื่อป้องกันวิดีโอเดียวกันที่ได้รับการแก้ไขและอัปโหลดสองครั้ง รหัสผ่านถูกเข้ารหัสด้วย MD5 ทางฝั่งไคลเอ็นต์
ตาราง“ สคริปต์”
ตารางที่สำคัญที่สุดเก็บข้อมูลสคริปต์ทั้งหมด ฟิลด์สถานะมีความสำคัญมากสำหรับการติดตามว่าควรอยู่ที่ไหน
-raw: สคริปต์พร้อมใช้งานเพื่อแก้ไข
-การแก้ไข: สคริปต์กำลังได้รับการแก้ไขและไม่สามารถแก้ไขได้โดยผู้ใช้รายอื่นในขณะที่อยู่ในสถานะนี้
-Complete: สคริปต์เสร็จสิ้นแล้วและจะถูกส่งไปยังไคลเอนต์ Video Generator
-successUpload: สคริปต์ได้รับการอัปโหลดไปยัง YouTube เรียบร้อยแล้ว
ตาราง“ Videogenerators”
เช่นเดียวกับผู้ใช้ฉันออกแบบไคลเอนต์ให้มีชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ รหัสผ่านถูกเข้ารหัสด้วย MD5 ทางฝั่งไคลเอ็นต์
ตารางเหล่านี้จะถูกสร้างขึ้นโดยอัตโนมัติภายในฐานข้อมูลที่เรียกว่า "YouTubeBot" หากไม่มีอยู่จริง
รับข้อมูลรับรองสำหรับบัญชี Google API ของคุณจะถูกดาวน์โหลดและบันทึกโดยอัตโนมัติหลังจากการเข้าสู่ระบบครั้งเดียว (หน้าต่างเบราว์เซอร์ของคุณจะเปิดขึ้นเพื่อขอเข้าสู่ระบบบัญชี Google): videouploader.py -> get_credentials ()