Mengikuti tren YouTube baru-baru ini di video YouTube “Reddit to Text-to-Speech” saya memulai proyek untuk membuat program yang dapat mengotomatiskan proses menerima, menghasilkan, dan mengunggah video ini ke YouTube dengan intervensi sesedikit mungkin. Butuh 4 bulan untuk menyelesaikan proyek dan terdiri dari 3 program terpisah yang bekerja secara bersamaan untuk menyelesaikan tugas ini.
Idenya adalah untuk meminimalkan intervensi manual sebanyak mungkin dan mengotomatiskan semua tugas sepele. Namun prosesnya tidak dapat 100% otomatis. Misalnya komentar dengan tautan di dalamnya tidak dapat disimpan karena kualitas video akan terdiri dari TTS. Selain itu, sementara komentar mungkin memiliki sejumlah besar suara, itu berpotensi menyinggung dan tidak aman untuk video YouTube dan dengan demikian harus dihapus. Thumbnail, sementara sebagian dihasilkan, harus diedit untuk membuat segala jenis daya tarik kepada pemirsa untuk mengklik video Anda. Hal yang sama berlaku untuk judul video yang harus clickbait-y untuk menerima perhatian. Saya telah berusaha untuk merampingkan proses manual dengan program klien dan saya membutuhkan waktu sekitar 30 menit untuk membuat 6 video (maksimal yang dapat diunggah dalam waktu 24 jam dengan API data YouTube).
Beberapa video yang saya hasilkan:
https://www.youtube.com/watch?v=XXDKMHYXCSQ
https://www.youtube.com/watch?v=aw0yjixxnxi&t=35s
Proses menyelesaikan video melibatkan:
Contoh Saluran Teks-ke-Pidato Reddit:
https://www.youtube.com/watch?v=izsxhx64pgq https://www.youtube.com/watch?v=vzdtuap2ztw
Tempatkan ini di folder yang disebut "aset" di dalam direktori generator video bot YouTube.
Selain itu saya berubah pikiran pada banyak aspek desain sebagian melalui proyek dan oleh karena itu beberapa file dinamai aneh dan ada kode yang tidak digunakan di sana -sini. Saya tidak akan memperbarui kode lagi, namun jangan ragu.
Periksa dependensi.txt
Untuk menginstal sebagian besar dependensi Python dengan mudah, jalankan perintah berikut setelah kloning (beberapa mungkin perlu diinstal secara manual):
pip install -r requirements.txt
Tren terbaru dalam video reddit-teks-ke-pidato terdiri dari (biasanya) dari formula yang sangat sederhana:
Lagu dipilih secara acak. Saya telah mengunduh ~ 40 lagu Kevin MacLeod Royality lagu gratis untuk dipilih secara acak.
https://www.youtube.com/watch?v=ccpyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
Semua aset yang digunakan dalam pembuatan video dapat diunduh di sini:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
Mereka harus ditempatkan di folder yang disebut "aset" dalam program generator video.
Proyek ini terdiri dari tiga program terpisah:
Program ini menampung server soket (1) untuk menghubungkan ke program klien dan juga (2) server soket untuk terhubung ke klien generator video. Selain itu, program ini juga akan mengambil skrip baru dari Reddit setiap satu jam, dan juga akan memperbarui yang sudah ada yang belum diedit.
(1) Server soket ini akan mengirim skrip mentah dari database ke program tinjauan manual (lihat di bawah). Ini kemudian akan menerima skrip yang ditinjau ini dan memperbarui database dengan skrip yang diselesaikan yang akan menyertakan thumbnail, deskripsi dan judul. Server dapat menangani banyak klien sehingga banyak orang dapat mengedit skrip ini.
(2) Server generator video saat ini hanya dirancang untuk menangani satu klien generator video. Paket asli adalah server ini untuk menangani beberapa klien generator video yang tersebar di antara beberapa komputer. Namun, saya menemukan bahwa satu komputer sudah cukup untuk semua kebutuhan pembuatan video saya, jadi saya memutuskan untuk membuat kode yang keras menjadi hanya satu klien. Tujuan dari server ini adalah untuk mengirim skrip yang diselesaikan dari database ke klien generator video.
Program ini akan menerima skrip video yang diselesaikan dari server generator video bot YouTube yang mencakup thumbnail, deskripsi, tag, dan judul. Script ini akan dihasilkan ke dalam file MP4 dan kemudian diunggah ke YouTube pada waktu rilis yang dijadwalkan (saat ini secara acak pukul 17:00, 18:00, 19:00 GMT - Waktu yang disarankan untuk mengunggah ke YouTube). Setelah skrip diterima, itu akan dihasilkan maka program akan menunggu sampai memiliki cukup kredit API untuk diunggah dengan memeriksa kapan 6 video terakhir diunggah.
API Kuota Penggunaan Reset pada jam 8 pagi GMT . Saya telah menghitung bahwa mengunggah setiap video akan menelan biaya 1658 kredit . Anda dapat menggunakan maksimal 10.000 kredit sehari. Ini berarti secara teori Anda akan dapat mengunggah 6 video sehari . Namun, dalam praktiknya saya telah dapat mengunggah 5 video, kadang -kadang yang keenam akan mengunggah namun tidak akan ada cukup kuota yang tersedia untuk mengunggah thumbnail, yang dalam hal ini akan membutuhkan intervensi manual untuk mengunggah thumbnail secara manual. Video diunggah dengan YouTube-upload yang saya hanya berhasil mulai bekerja dengan Python 2.7. Ini disebut dengan subprocess.check_call dengan versi python yang ditentukan dan argumen sesuai kebutuhan (tautan di bawah).
Setelah video berhasil diunggah statusnya diatur untuk diselesaikan bersama dengan waktu unggahan sehingga program dapat memeriksa berapa banyak video yang diunggah dalam hari itu untuk menghindari melebihi penggunaan kuota.
Data YouTube Informasi API https://developers.google.com/youtube/v3/getting-started youtube-upload (Python 2.7) https://github.com/tokland/youtube-upload
Teks-ke-speech sejauh ini salah satu aspek paling menantang dari proyek ini adalah membuat teks untuk berbicara untuk bekerja dengan baik. Saya ingin menggunakan teks pemindaian lunak Daniel MLG untuk berbicara - yang ditemukan di sebagian besar teks untuk berbicara video reddit. Saya percaya ini adalah bagian penting dari proyek karena suara ini sangat dikenali dan (menurut saya) salah satu teks yang terdengar terbaik untuk pidato yang tersedia. Saya menggunakan versi baris perintah Balabolka untuk menghasilkan file .wav dan ini kemudian disinkronkan dengan frame yang berbeda dalam program pembuatan video.
Balabolka http://www.cross-plus-u.com/balabolka.htm Instruksi tentang cara mendapatkan suara Daniel MLG https://www.youtube.com/watch?v=yj3dhtnyoty
Program klien adalah proses gesek kiri dan kanan seperti Tinder untuk memfilter komentar yang tidak termasuk dalam video. Hal ini juga memungkinkan pengguna untuk menulis judul dan mengunggah thumbnail untuk video serta mengedit deskripsi dan tag, meskipun judul, deskripsi dan tag sebagian dihasilkan sebagai berikut: Judul: Be Default adalah Judul Posting Deskripsi: Secara default adalah Template Red, Red Template dengan POSICE. Semua ini dapat diedit. Template untuk thumbnail juga dihasilkan sebagian. Ada cek untuk memastikan bahwa jumlah karakter tidak terlampaui untuk semua bidang ini, misalnya judul harus di bawah 100 karakter
Konten akhir dari video ini mencakup skrip yang diedit, thumbnail, tag, deskripsi dan pengaturan video (dimungkinkan untuk mengubah fitur tertentu dari templat generator video selama proses pengeditan seperti warna latar belakang, ukuran teks, lebar garis dll. Saya biasanya menyimpan default sehingga tidak benar -benar digunakan untuknya) yang kemudian dikirim ke server yang pada gilirannya di atas databor.
Mysql
Penyimpanan skrip dan informasi yang relevan dilakukan dengan database MySQL. Ini adalah pertama kalinya saya menggunakan database MySQL untuk suatu proyek, saya tidak brilian di SQL Saya belajar apa yang diperlukan untuk membuat semuanya berhasil. Saya menggunakan tiga tabel "pengguna", "videogenerator" dan "skrip"
Tabel "Pengguna"
Awalnya saya telah merencanakan untuk membuat sistem login yang luas di mana pengguna memiliki statistik pengeditan, lihat siapa yang online dll. Menghapus ini dan sekarang hanya penggunaannya adalah untuk melacak pengguna mana yang mengedit video mana yang akan mencegah video yang sama diedit dan diunggah dua kali. Kata sandi dienkripsi dengan MD5 di sisi klien
Tabel "Script"
Tabel terpenting, menyimpan semua informasi skrip. Bidang status sangat penting untuk melacak di mana naskah seharusnya.
-Raw: skrip tersedia untuk diedit
-Erediting: Script sedang diedit dan tidak dapat diedit oleh pengguna lain saat dalam keadaan ini
-Plot lengkap: skrip telah selesai diedit dan akan dikirim ke klien generator video
-Successuppload: Script telah berhasil diunggah ke YouTube
Tabel “Videogenerators”
Seperti pengguna, saya merancang klien untuk memiliki nama pengguna dan kata sandi untuk masuk. Kata sandi dienkripsi dengan MD5 di sisi klien
Tabel ini akan secara otomatis dibuat dalam database yang disebut "YouTubeBot" jika belum ada.
Terima kredensial untuk akun Google API Anda akan diunduh dan disimpan secara otomatis mengikuti login satu kali (jendela browser Anda akan dibuka meminta login akun google): videouploader.py -> get_credentials ()