Je suis un débutant en Rails qui crée des applications Web avec Ruby on Rails. Du coup, je suis désolé de vous le dire personnellement, mais récemment je suis devenu accro à Youtuber, et je passe le plus clair de mon temps à regarder Youtube sauf pour étudier la programmation (rires) Youtube est amusant ... Youtuber est bon ... Comme c'est une vie quotidienne, j'ai pensé que j'aimerais faire une application web qui gère diverses informations sur Youtube comme sortie d'étude, alors j'ai commencé à la faire. Idéal pour étudier et passe-temps! C'est simple
En faisant beaucoup de recherches pour cela, j'ai trouvé que je devais utiliser ** l'API de données Youtube ** pour gérer les informations Youtube.
Cette fois, j'aimerais rédiger un mémorandum sur l'acquisition d'informations Youtube à l'aide de cette API Youtube.
Présentation de l'API de données Youtube
Cette API fournit diverses fonctions.
· Type de ressource
・ Type d'opération
Cette fois, j'aimerais écrire sur ce que j'ai fait pour obtenir les informations sur la chaîne Youtube. (Type de ressource: canal, opération: liste dans le tableau ci-dessus)
-Vous devez avoir acquis une clé API qui vous permet d'accéder à l'API Youtube Data en effectuant diverses opérations avec l'API Google. Veuillez vous référer à ce qui suit pour la procédure d'acquisition de la clé API.
Recherchez des vidéos sur Youtube à l'aide du récent client Ruby de l'API Google et téléchargez-les sous forme de fichiers [Ruby on Rails] La façon la plus simple d'utiliser l'API YouTube
Je développe Rails en créant un conteneur avec Docker pour Mac.
ruby 2.4.5
Ruby on rails 5.0.7.2
#Gemme de prémisse
#J'utilise dotenv pour mettre la clé API GOOGLE dans une variable d'environnement
dotenv-rails 2.7.6
Le célèbre joyau pour gérer cette API est le google officiel google-api-ruby-client
créé pour frapper diverses API Google avec des rails.
Puisqu'il y a des informations en japonais et que c'est officiel, j'envisageais ce bijou au début, mais cette fois je prévois d'utiliser uniquement l'API Youtube, et j'ai pensé que je pourrais le faire avec quelque chose d'un peu plus simple.
C'est pourquoi j'ai trouvé «yt».
Yt - a Ruby client for the YouTube API
Un bijou spécialisé pour l'API Youtube. J'étais inquiet car il n'y avait pas beaucoup d'informations et il n'y avait pas beaucoup d'étoiles, mais j'étais personnellement une fourmi parce que je pouvais l'implémenter avec une description simple! Après cela, j'écrirai sur l'obtention d'informations Youtube avec Yt.
Tout d'abord, téléchargez la gemme. Décrivez-le dans le Gemfile comme indiqué dans le github de yt.
Gemfile
gem 'yt', '~> 0.32.0'
Effectuez ensuite une installation groupée.
terminal
bundle install
gemlife.lock
yt (0.32.6)
Après avoir téléchargé yt, écrivez une configuration qui définit la CLE API GOOGLE sur yt. Lors de l'appel de diverses informations, seule cette clé API est OK car elle ne lit que le serveur.
dotenv-rails
.
Référence) Comment définir les variables d'environnementSi vous souhaitez exploiter un client Web tel que le téléchargement de vidéos sur Youtube,
Vous aurez besoin de client_id
et client_secret
séparément de la clé API.
Référence) Module: Yt :: Config
videos_controller.rb
class VideosController < ApplicationController
GOOGLE_API_KEY = ENV['GOOGLE_API_KEY'] #.Comment écrire lorsque la clé API est déjà définie dans env
:
def set_yt
Yt.configure do |config|
config.api_key = GOOGLE_API_KEY #Définir l'API Google dans Config
end
end
:
end
```
Maintenant, si vous appelez `set_yt` à l'avance avant diverses opérations, la CLE API sera définie et vous pourrez effectuer diverses opérations avec yt.
# Obtenez des informations Youtube avec yt
Ceci termine les préparatifs. Faisons immédiatement diverses opérations.
Cette fois, je vais examiner deux opérations que je voulais faire avec mon application web.
** Partie 1) Obtenez le nombre spécifié d'abonnés Youtube **
** Partie 2) Obtenez la vidéo de la chaîne Youtube spécifiée et enregistrez-la dans la base de données **
Jetons un coup d'œil à chacun!
## Partie 1) Obtenez le nombre spécifié d'abonnés Youtube
Tout d'abord, apportez l'identifiant de la chaîne Youtube à partir de l'URL de la chaîne Youtube.
![スクリーンショット 2020-10-04 15.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176783/8be443f0-f917-8840-14e1-db7518f0b29b.png)
Accédez à la page de la chaîne que vous souhaitez enregistrer (écran comme l'image ci-dessus), et la partie après ** chaîne / ** de l'URL sera l'ID de la chaîne. Dans ce cas, c'est la partie de ʻUCQ_MqAw18jFTlBB-f8BP7dw`.
Nous définirons ces informations comme identifiant du canal.
Ensuite, les informations de canal sont acquises sur la base de cet ID. Très facile.
#### **`videos_controller.rb`**
```ruby
class VideosController < ApplicationController
:
def index #Voici la méthode appropriée
set_yt #Chargez la configuration que vous avez définie précédemment
channel = Yt::Channel.new id: 'UCQ_MqAw18jFTlBB-f8BP7dw' #Obtenir des informations sur la chaîne
@subscriber_count = channel.subscriber_count #Obtenez le nombre d'inscrits
end
:
end
```
Vous pouvez maintenant obtenir le nombre d'abonnés en appelant `abonné_compte`.
#### **`ruby:index.html.erb`**
```
:
<%= @subscriber_count %>
:
```
Cela ressemble à ceci (je traite ce à quoi il ressemble avec jquery)
![スクリーンショット 2020-10-04 16.01.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176783/968d2803-9157-be99-6f39-f1815b6d53b4.png)
## 2) Obtenez la vidéo de la chaîne Youtube spécifiée et enregistrez-la dans la base de données
L'obtention de l'ID de canal est la même que dans la partie 1.
Dans la partie 2,
① Obtenez des informations sur la chaîne
② Obtenez la vidéo associée à cette chaîne
③ Enregistrez les informations dans le DB
Il y a trois étapes principales.
La table de destination d'enregistrement utilisée cette fois est une table vidéo contenant le nom de la vidéo, l'URL et la date de publication.
Si vous obtenez toutes les données en même temps, vous risquez d'être pris dans les restrictions du côté de l'API Google, donc j'écrirai pour obtenir environ 30 des dernières vidéos une fois.
* Voir ci-dessous pour savoir comment écrire où
(référence)
[J'ai essayé d'utiliser l'API youtube avec Rails](https://qiita.com/sakakinn/items/46c0d4945e4646f346f6)
[J'ai enfin découvert comment rechercher des vidéos et obtenir plusieurs informations avec gem yt! !! ](Https://yatta47.hateblo.jp/entry/2016/10/31/100755)
#### **`videos_controller.rb`**
```ruby
:
#Appeler l'acquisition vidéo YouTube
def create_videodata
create_videodata_from_youtube
redirect_to videos_path, notice: { "L'acquisition vidéo est terminée" }
end
:
def create_videodata_from_youtube
set_yt
channel = Yt::channel.new id: 'UCQ_MqAw18jFTlBB-f8BP7dw' #Obtenir des informations sur la chaîne
#Obtenez environ 30 vidéos publiées au cours des 2 derniers mois.
channel.videos.where(publisher_afer: 2.months.ago.iso8601).first(30).each do |video|
#S'il ne s'agit pas de données vidéo enregistrées, ajoutez-les sous forme de tableau
unless Video.find_by(name: video.title)
Video.create!(
name: video.title,
url: "https://www.youtube.com/watch?v=" + video.id,
uploaded_at: video.published_at
)
end
end
end
:
```
Vous pouvez maintenant obtenir la vidéo youtube en appelant la méthode ci-dessus lorsque vous en avez besoin.
Dans l'application Web que j'ai créée, j'ai installé un bouton "Obtenir la vidéo" et j'ai appelé create_videodata lorsque j'ai appuyé dessus pour obtenir des informations sur Youtube.
Vous avez maintenant implémenté la fonctionnalité que vous vouliez implémenter. Grâce à Yt, la description est assez simple!
# Dépannage (quotaExceeded)
Au début, je savais comment l'écrire, mais pour une raison quelconque, cela n'a pas fonctionné ... Quand je l'ai regardé, c'était "quota dépassé".
En d'autres termes, j'obtenais une erreur disant que j'utilisais trop et que l'allocation quotidienne était perdue et que l'API Google était restreinte.
À ce moment-là, je n'avais jamais réussi, alors j'ai changé de jour en pensant: "Je ne peux pas manquer de quotas ...".
J'ai changé mon compte et l'ai recréé, en me référant à ce qui suit, et cela a fonctionné!
https://teratail.com/questions/270779
Je ne comprends pas pourquoi même si je le cherche ... Si vous obtenez la même erreur, veuillez créer un compte Google et recréer la clé API avec un autre compte.
# À la fin
Nous avons vu comment obtenir des informations Youtube à l'aide de l'API Youtube.
Avec Yt, c'est assez simple à écrire, il est donc facile d'implémenter ce que vous voulez faire.
Il y a beaucoup d'autres informations que je voudrais apporter, je voudrais donc étudier et utiliser d'autres fonctions également.
Enfin, merci à tous les auteurs des articles et blogs auxquels j'ai fait référence!
Recommended Posts