[RUBY] Comment obtenir le dernier ID de diffusion en direct pour une chaîne sans utiliser l'API de données YouTube

Mise en garde

Conditions d'utilisation-YouTube Assurez-vous de vérifier les conditions d'utilisation de YouTube, car elles peuvent entrer en conflit avec les conditions d'utilisation de YouTube en fonction de votre utilisation.

Contexte

C'est un problème que j'ai rencontré lors du développement récent d'applications personnelles. Maintenant que la distribution YouTube en direct est active tous les jours, vous souhaitez souvent obtenir les dernières informations de distribution en direct pour cette chaîne tout en ayant un identifiant de chaîne. Cependant, les deux problèmes suivants se posent lorsque vous essayez d'obtenir les dernières informations de distribution en direct à l'aide de l'API de données YouTube.

  1. Obtenir toutes les informations de la chaîne Même si vous essayez d'obtenir la dernière vidéo de la chaîne à partir de la ressource channels, les informations de distribution en direct (informations pendant la distribution en direct ou dont la sortie est prévue) ne sont pas incluses. (Actuellement en mai 2020)
  2. Si vous utilisez une ressource search avec un identifiant de canal, elle sera traitée comme une opération d'écriture, elle coûtera donc des dizaines de fois plus que les autres opérations d'acquisition d'informations list (https://developers.google). .com / youtube / v3 / getting-started? hl = ja) sera consommé.

Comme cela n'a pas de sens si vous n'obtenez pas et ne mettez pas à jour fréquemment la présence ou l'absence d'informations de distribution en direct, l'utilisation de la ressource search éliminera bientôt la répartition des coûts de quota qui peut être utilisée pendant une journée. D'autre part, s'il existe un moyen d'obtenir l'ID de diffusion en direct videoId, vous pouvez spécifier videoId pour accéder aux informations de diffusion en direct à partir de la ressource videos à un coût de quota faible. Par conséquent, il est nécessaire d'obtenir le dernier ID de distribution en direct de la chaîne, videoId, sans utiliser l'API de données YouTube.

Méthode (Ruby)

Il peut ne pas être beaucoup utilisé, mais si la chaîne a des informations de diffusion en direct, vous pouvez intégrer le dernier lecteur de diffusion en direct dans la page en utilisant l'URL ci-dessous.

url = "https://www.youtube.com/embed/live_stream?channel=<ID de canal>"

Il sera plus facile de parler si vous affichez la dernière distribution en direct. La prochaine chose à faire est de supprimer la page ~~ et de récupérer les informations requises videoId.

content = Net::HTTP.get_response(URI.parse(url)).entity
unless content.match(/watch\?.+/) == nil
  match = content.match(/watch\?.+/)[0]
  videoId = match.sub("watch?v=","").sub("\">","")
end

Comme il est essentiellement écrit sous la forme de watch? V = <videoId> sur les pages et les URL YouTube, vous pouvez utiliser les méthodes match et sub du content obtenu pour obtenir videoId. Facile à avoir. (Merci à YouTube qui l'a correctement entretenu) Maintenant que vous avez le videoId, vous pouvez utiliser la ressource videos (videos) de l'API de données YouTube pour obtenir l'état de la distribution et l'heure de distribution.

Référence (méthode en PHP)

https://stackoverflow.com/questions/58040154/how-to-get-live-video-id-from-from-youtube-channel-html

Recommended Posts

Comment obtenir le dernier ID de diffusion en direct pour une chaîne sans utiliser l'API de données YouTube
Comment générer des valeurs de tableau sans utiliser d'instruction for
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
[Java] Comment obtenir facilement la plus longue chaîne de caractères d'ArrayList à l'aide de stream
[Pour les débutants] Comment utiliser Stream API après Java 8
Comment faire un MOD pour Slay the Spire
[Swift] Comment obtenir l'ID de document Firebase
SDWebImage: Comment vider le cache pour une UIImageView particulière
[À voir absolument pour l'apprenti ingénieur Java] Comment utiliser l'API Stream
Comment installer JDK 8 sur Windows sans utiliser le programme d'installation
Comment joindre une table sans utiliser DBFlute et SQL
Il est maintenant temps de commencer avec l'API Stream
[jsoup] Comment obtenir la totalité de la documentation
Comment lire un fichier MIDI à l'aide de l'API Java Sound
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR
Un moyen simple de créer une classe de mappage lors de l'utilisation de l'API
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
[Pour les débutants] Comment obtenir le nom de la ligne de chemin de fer différée Ruby
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Comment faire un diamant révolutionnaire en utilisant Java pour déclaration wwww
[java8] Pour comprendre l'API Stream
Comment configurer la haute disponibilité (HA) sans avoir besoin d'un équilibreur de charge tiers R3 Corda
Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Essayez d'émettre ou d'obtenir une carte de Jave à Trello à l'aide de l'API
Comment convertir un tableau de chaînes en un tableau d'objets avec l'API Stream
Comment obtenir la date actuelle sous forme de chaîne au format aaaaMMjj
Comment donner MAX + 1 ID aux données enregistrées lors de l'ajout d'un nouvel enregistrement
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
[Java] Générez une liste restreinte à partir de plusieurs listes à l'aide de l'API Stream
Comment exécuter un contrat avec web3j
Comment trier une liste à l'aide du comparateur
Traitement des données à l'aide de l'API de flux de Java 8
Essayez d'utiliser l'API Stream en Java
Comment créer un référentiel Maven pour 2020
[Java] Comment obtenir le répertoire actuel
Comment obtenir la date avec Java
J'ai essayé de résumer l'API Stream
Comment faire en sorte que la chaîne de requête émette réellement lors de l'utilisation de PreparedStatement dans JDBC
Comment obtenir des articles à l'aide de l'API News, de l'API New York Times, de la gemme Wikipedia, etc.
Comment lire un fichier MIDI à l'aide de l'API Java Sound (spécifiez le périphérique MIDI à utiliser)
[Swift] Comment générer un identifiant pour identifier de manière unique une certaine chose (en utilisant UUID)
[Java] Comment obtenir des éléments HashMap par contrôle de boucle à l'aide de l'instruction Extended for
[Ruby] Envoyez une requête HTTP POST à l'API Web à l'aide de l'authentification OAuth
Comment créer une combinaison unique de données dans la table intermédiaire des rails