Le secteur des vidéos courtes est en plein essor depuis un an ou deux, et chaque site Web de vidéos possède son propre contenu vidéo court unique. Ce serait formidable s'il existait un programme capable de télécharger les dernières vidéos publiées par les utilisateurs populaires des principaux sites Web de vidéos. Non seulement ce serait pratique à regarder, mais vous pourriez également publier des vidéos libres de droits sur des sites de réseaux sociaux personnels pour augmenter votre visibilité. popularité
Le secteur des vidéos courtes est en plein essor depuis un an ou deux, et chaque site Web de vidéos possède son propre contenu vidéo court unique. Ne serait-il pas bien s'il existait un tel programme capable de télécharger les dernières vidéos publiées par les utilisateurs populaires des principaux sites Web de vidéos ? Non seulement il serait pratique pour vous de les regarder, mais vous pourriez également publier des vidéos libres de droits sur vos réseaux sociaux personnels ? des sites de réseautage pour augmenter votre popularité.
parker est un tel projet (adresse du projet : https://github.com/LiuRoy/parker). Il utilise le celeryframework pour explorer régulièrement les listes de vidéos des utilisateurs et compiler les dernières sorties. vidéos. Grâce au téléchargement asynchrone, le déploiement distribué peut être facilement réalisé. Étant donné que la mise en page et l'interface de chaque site Web sont mises à jour fréquemment, afin de garantir la haute disponibilité du programme, une surveillance Statsd est spécialement ajoutée pour faciliter la détection rapide des erreurs.
CodeArchitecture
Actuellement à Parker Seuls les téléchargements depuis Bilibili et Miaopai sont implémentés. Comme le montre le diagramme du cadre, deux interfaces asynchrones doivent être implémentées pour chaque type de site Web : analyser l'adresse de lecture de la vidéo publiée à partir de la page d'accueil vidéo de l'utilisateur et télécharger la vidéo en fonction. sur l’adresse de lecture. Par conséquent, lors de l'ajout d'un type de site Web, vous n'avez pas besoin de modifier le code d'origine, il vous suffit d'ajouter une nouvelle interface d'analyse et de téléchargement. Je n'ai pas encore mis en œuvre les opérations ultérieures une fois le téléchargement de la vidéo terminé. Vous pouvez l'implémenter librement selon vos propres besoins.
Lors de son exécution, le céleri enverra régulièrement la liste d'utilisateurs configurée de haute qualité à l'interface d'analyse du site Web correspondant pour une exécution asynchrone, filtrera la dernière adresse de lecture vidéo et la transmettra à l'interface de téléchargement correspondante pour téléchargement asynchrone. Une fois terminé, appelez les opérations suivantes de manière asynchrone. Par conséquent, il est nécessaire de démarrer un processus de battement de céleri pour envoyer des tâches planifiées et plusieurs tâches asynchrones de céleri pour effectuer des opérations d'analyse et de téléchargement. Pour les vidéos relativement volumineuses, le téléchargement prendra beaucoup de temps. Il est recommandé d'en allouer raisonnablement le nombre. tâches asynchrones en fonction de la taille de la liste des tâches.
Le programme s'exécute
Il a été vérifié que ce programme peut fonctionner normalement sous Ubuntu et Mac Car céleri sous Windows local. impossible. Il démarre normalement, il n'a donc pas été vérifié dans l'environnement Windows.
Bibliothèque dépendanteInstallation
La version python est 3.5. Après avoir entré le répertoire du projet, exécutez :
pip install -r exigences.txt
Créer une base de donnéesTable
Construisez-la dans le base de données à l'avance Deux tables (sql : https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)
Configuration des paramètres
Logging.yaml, params.yaml et sites.yaml sous le chemin de configuration correspondent respectivement à la configuration du journal, à la configuration des paramètres en cours d'exécution et à la configuration utilisateur populaire.
Configuration du journal
En mode débogage, le journal sera affiché directement dans le flux de sortie standard. En mode release, le contenu du journal sera affiché. être généré dans un fichier. Par conséquent, le fichier journal de sortie doit être configuré.
Exécuter la configuration
mode débogageMode débogage, dans ce mode le journal pointe vers la sortie standard et il n'y a pas de données de surveillance ; en mode de publication, le journal est sorti dans le fichier spécifié et il y a des données de surveillance.
broker_url correspond au BROKER_URL de céleri, qui peut être configuré comme redis ou lapinmq
mysql Adresse de la base de données _url, deux tables doivent être construites à l'avance
download_path chemin de téléchargement de la vidéo
adresse de surveillance statsd_address
video_number_per_page Combien d'adresses de lecture vidéo sont analysées à partir de la page d'accueil vidéo de l'utilisateur à chaque fois ? Étant donné que la plupart des utilisateurs publient un petit nombre de vidéos à chaque fois, il suffit de définir cette valeur sur une très petite valeur. Lors de la première diffusion, un grand nombre de vidéos de longue date ne seront pas téléchargées.
délai d'expiration download_timeout pour le téléchargement de vidéos
Configuration utilisateur populaire
Parker générera une liste de planificateurs de battements de céleri basée sur cette configuration.
la règle de nom est
utilisateur URL Le publication de la page d'accueil de la vidéo
la tâche correspond à la tâche asynchrone d'analyse du céleri
minute combien de minutes pour vérifier la liste des vidéos de l'utilisateur
Démarrer la tâche
Entrez dans le répertoire du projet et exécutez la commande suivante pour démarrer le travailleur de céleri
celery -A spider worker
Exécutez la commande suivante pour démarrer la tâche planifiée de battement de céleri
celery -A spider beat
Surveillance
Utilisez fortement une image docker pour configurer l'environnement de surveillance en une minute. Après cela, il vous suffit d'ajouter les données d'exécution réussie et d'exécution anormale, et vous pouvez facilement surveiller si le programme fonctionne normalement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!