Suivant la récente tendance YouTube dans les vidéos YouTube «Reddit to Text-to-Speech», j'ai lancé un projet pour créer un programme qui peut automatiser le processus de réception, de génération et de téléchargement de ces vidéos sur YouTube avec le moins d'intervention possible. Il a fallu 4 mois pour terminer le projet et est composé de 3 programmes distincts qui fonctionnent simultanément afin de terminer cette tâche.
L'idée était de minimiser autant d'intervention manuelle que possible et d'automatiser toutes les tâches triviales. Cependant, le processus ne peut pas être automatisé à 100%. Par exemple, les commentaires avec des liens ne peuvent pas être conservés car la qualité de la vidéo sera composée en raison du TTS. De plus, bien qu'un commentaire puisse avoir un grand nombre de votes, il pourrait potentiellement être offensant et non sûr pour une vidéo YouTube et doit donc être supprimé. La vignette, bien que partiellement générée, doit être modifiée afin de créer tout type d'attrait aux téléspectateurs pour cliquer sur votre vidéo. Il en va de même pour le titre de la vidéo qui doit être Clickbait-y afin de recevoir une attention. J'ai tenté de rationaliser le processus manuel avec le programme client et il me faut environ 30 minutes pour créer 6 vidéos (le maximum qui peut être téléchargé dans les 24 heures avec l'API de données YouTube).
Certaines de mes vidéos générées:
https://www.youtube.com/watch?v=xxdkmhyxcsq
https://www.youtube.com/watch?v=aw0yjixxnxi&t=35s
Le processus de réalisation d'une vidéo implique:
Exemple de canaux de texte à dispection Reddit:
https://www.youtube.com/watch?v=izsxhx64pgq https://www.youtube.com/watch?v=vzdtuap2ztw
Placez-les dans un dossier appelé "Assets" dans le répertoire du générateur vidéo YouTube Bot.
De plus, j'ai changé d'avis sur de nombreux aspects de conception en partie via le projet et donc certains fichiers sont nommés étrangement et il y a du code inutilisé ici et là. Je ne mettrai plus à mettre à jour le code, mais n'hésitez pas à le faire.
Vérifier les dépendances.txt
Pour installer facilement la plupart des dépendances Python, exécutez la commande suivante après le clonage (certaines peuvent avoir besoin d'être installées manuellement):
pip install -r requirements.txt
Cette tendance récente dans les vidéos de texte à dispection Reddit se compose (généralement) d'une formule très simple:
Une chanson est choisie au hasard. J'ai téléchargé ~ 40 chansons Kevin MacLeod Royality Songs gratuits à choisir au hasard.
https://www.youtube.com/watch?v=ccyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
Tous les actifs utilisés dans la génération de la vidéo peuvent être téléchargés ici:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
Ils doivent être placés dans un dossier appelé "Assets" dans le programme du générateur vidéo.
Le projet comprend trois programmes distincts:
Ce programme abrite le (1) serveur de socket pour se connecter au (s) programme client ainsi qu'au (2) serveur de socket pour se connecter aux clients du générateur vidéo. De plus, ce programme saisira également de nouveaux scripts de Reddit toutes les heures et mettra également à jour les existants qui n'ont pas encore été modifiés.
(1) Ce serveur de socket enverra des scripts bruts de la base de données au programme d'examen manuel (voir ci-dessous). Il recevra ensuite ces scripts examinés et mettra à jour la base de données avec les scripts finalisés qui comprendra une miniature, une description et un titre. Le serveur peut gérer plusieurs clients afin que plusieurs personnes puissent modifier ces scripts.
(2) Le serveur de générateurs vidéo n'est actuellement conçu que pour gérer un client de générateur vidéo. Les plans originaux étaient que ce serveur gère plusieurs clients de générateurs vidéo répartis entre plusieurs ordinateurs. Cependant, j'ai trouvé qu'un ordinateur était suffisant pour tous mes besoins de génération de vidéos, j'ai donc décidé de le coder dur à un seul client. Le but de ce serveur est d'envoyer des scripts finalisés de la base de données au client du générateur vidéo.
Ce programme recevra des scripts vidéo finalisés du serveur de générateurs vidéo YouTube Bot qui inclut des miniatures, des descriptions, des balises et un titre. Ces scripts seront générés dans un fichier MP4, puis téléchargés sur YouTube à un moment de libération planifié (actuellement au hasard à 17h, 18h, 19h GMT - les heures recommandées à télécharger sur YouTube). Une fois le script reçu, il sera généré, le programme attendra qu'il ait suffisamment de crédits API à télécharger en vérifiant quand les 6 dernières vidéos ont été téléchargées.
L'utilisation de quota API réinitialise à 8h GMT . J'ai calculé que le téléchargement de chaque vidéo coûtera 1658 crédits . Vous pouvez utiliser un maximum de 10 000 crédits par jour. Cela signifie qu'en théorie, vous pourrez télécharger 6 vidéos par jour . Cependant, dans la pratique, j'ai pu télécharger 5 vidéos, parfois la sixième téléchargera, mais il n'y aura pas assez de quotas disponibles pour télécharger la vignette, ce qui, dans ce cas, nécessitera une intervention manuelle pour télécharger la vignette manuellement. Les vidéos sont téléchargées avec YouTube-téléchargement que je n'ai réussi à travailler avec Python 2.7. Il est appelé avec sub-process.check_call avec la version python spécifiée et arguments selon les besoins (lien ci-dessous).
Une fois qu'une vidéo est téléchargée avec succès, son statut est défini pour terminer avec un temps de téléchargement afin que le programme puisse vérifier combien de vidéos ont été téléchargées dans la journée pour éviter de dépasser l'utilisation du quota.
YouTube Data API Informations https://developers.google.com/youtube/v3/getting-started youtube-upload (python 2.7) https://github.com/tokland/youtube upload toload
Le texte vocable de loin l'un des aspects les plus difficiles du projet a été de faire fonctionner le texte correctement. Je voulais utiliser le texte Soft Scan Daniel MLG vers la voix de la parole - celle trouvée dans la plupart des vidéos de Text To Speech Reddit. Je pensais que c'était une partie importante du projet parce que cette voix est très reconnaissable et est (à mon avis) l'un des meilleurs textes de discours disponibles. J'utilise la version de la ligne de commande de Balabolka pour générer les fichiers .wav et ceux-ci ont ensuite été synchronisés avec différents cadres dans le programme de génération de vidéos.
Balabolka http://www.cross-plus-a.com/balabolka.htm Instructions sur la façon d'obtenir la voix de Daniel Mlg https://www.youtube.com/watch?v=yj3dhtnyoty
Le programme client est un processus de glissement en forme de Tinder et de droite pour filtrer les commentaires qui ne doivent pas être inclus dans la vidéo. Il permet également à l'utilisateur d'écrire le titre et de télécharger une miniature pour la vidéo ainsi que de modifier des description et des balises, bien que le titre, la description et les balises soient partiellement générés comme suit: Titre: Be Faut est le titre de poste Description: Par défaut est un modèle généré avec le titre de poste dans les chaînes de sport telles que R / Hashtags Ceux-ci peuvent être modifiés. Un modèle pour la vignette est également partiellement généré. Il y a des chèques pour s'assurer que la quantité de caractères n'est pas dépassée pour tous ces champs, par exemple, le titre doit être inférieur à 100 caractères
Le contenu final de la vidéo comprend le script édité, la vignette, les balises, la description et les paramètres vidéo (il est possible de modifier certaines fonctionnalités du modèle de générateur vidéo pendant le processus d'édition tels que la couleur d'arrière-plan, la taille du texte, les largeurs de ligne, etc. Je gardais généralement les défauts, ce qui n'a pas vraiment été utilisé pour cela) qui est ensuite envoyé au serveur qui, à son tour, ne le télépose donc pas en tant que blob.
Mysql
Le stockage des scripts et leurs informations pertinentes se font avec une base de données MySQL. C'est la première fois que j'utilise une base de données MySQL pour un projet, je ne suis pas brillant chez SQL J'ai appris ce qui était nécessaire pour faire fonctionner les choses. J'ai utilisé trois tableaux «utilisateurs», «vidéogénérateurs» et «scripts»
Table «utilisateurs»
À l'origine, j'avais prévu de créer un vaste système de connexion où les utilisateurs avaient des statistiques d'édition, de voir qui est en ligne, etc. a mis au rebut et maintenant son seul usage est de suivre les utilisateurs qui modifient quelles vidéos pour empêcher la même vidéo étant modifiée et téléchargée deux fois. Les mots de passe sont chiffrés avec MD5 du côté client
Table «scripts»
Le tableau le plus important, contient toutes les informations de script. Le champ d'état est très important pour garder une trace de l'endroit où un script devrait être.
-RAW: le script est disponible pour modifier
-Dédition: le script est en cours de modification et ne peut être modifié par aucun autre utilisateur dans cet état
-complete: le script a été terminé l'édition et sera envoyé au client du générateur vidéo
-Successupload: le script a été téléchargé avec succès sur YouTube
Tableau "VideoGeenerators"
Comme les utilisateurs, j'ai conçu le client pour avoir un nom d'utilisateur et un mot de passe pour vous connecter. Le mot de passe est chiffré avec MD5 du côté client
Ces tableaux seront automatiquement créés dans une base de données appelée «YouTubebot» si elles n'existent pas déjà.
Recevoir les informations d'identification pour votre compte Google API sera téléchargé et enregistré automatiquement après une connexion unique (votre fenêtre de navigateur sera ouverte pour demander une connexion de compte Google): Videouplloader.py -> get_credentials ()