2 flat logo on transparent 256
2019-04-09

Ruby単体でAPIを操作する|Udemy

2019 04 09 code coding macro

様々なWebサービスでAPIが提供されています。

今回はRubyでUdemyのAPIを利用して以下条件の情報を取得します。

1:講座名にRailsが入っている

2:日本語の講座

3:レビュー評価が高い順にソート

Ruby 2.1 と2.4で稼働確認しております。

今回Rubyを利用しましたが、APIなのでプログラミング言語は関係なくPythonやPHPでも利用可能です。

なおUdemyのAPIは利用申請が必要です。

Railsで設定した際の動作は こちらから御覧ください

UdemyへAPIの利用申請を行う

サイトで利用申請をすると10分程度で許可されましたが、申請する内容によっては時間がかかるかもしれません。

アカウントページでAPIクライアントを選択

Udemyアカウント登録

必要情報を入力

Udemyアカウント登録

Gemをダウンロードする

今回はLinuxのcurlコマンドをRubyから利用するgem faradayと Jsonを整形するので、jsonをダウンロードします。

gem install faraday
gem install json

RubyでUdemyのAPIを利用する

以下が全コードです

require 'faraday'
require 'json'

uri = 'https://www.udemy.com/api-2.0/courses/?search=Rails&language=ja&ordering=most-reviewed'
conn = Faraday.new(:url => uri) do |builder|
  builder.basic_auth('クライアント Id', 'クライアントパスワード    ')
  builder.adapter :net_http
end


p results = JSON.parse(conn.get.body)['results']

results.each do |result|
  p result['title']
end

以下可動させた場合の結果

[{"_class"=>"course", "id"=>1159278, "title"=>"Ruby on Rails 5入門 -Rubyプログラミングの基礎から学べる-", "url"=>"/ruby-on-rails-5/", "is_paid"=>true, "price"=>"¥10,800", "price_detail"=>{"currency_symbol"=>"¥", "price_string"=>"¥10,800", "currency"=>"JPY", "amount"=>10800.0}, "visible_instructors"=>[{"image_50x50"=>"https://i.udemycdn.com/user/50x50/16071104_0b37_2.jpg", "image_100x100"=>"https://i.udemycdn.com/user/100x100/16071104_0b37_2.jpg", "_class"=>"user", "name"=>"中村祐太", "job_title"=>"ITエンジニア, プログラミング講師", "display_name"=>"中村祐太 (Yuta Nakamura)", "url"=>"/user/yutanakamura/", "initials"=>"Y", "title"=>"中村祐太 (Yuta Nakamura)"}], "image_125_H"=>"https://i.udemycdn.com/course/125_H/1159278_7cd9.jpg", 

中略

"フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座"
"Rails入門:基礎をSinatraで理解しRailsで作れるようになる"
"よくわかるRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"
"ゼロからはじめる Dockerによるアプリケーション実行環境構築"
"Web開発入門完全攻略コース - プログラミングをはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!"
"Rubyで作る! ビットコイン自動売買システム"
"【入門・初心者向け】Ruby on Rails本番環境構築パーフェクトガイド"
"【3日でできる】はじめての Ruby on Rails 4 入門(Rubyから学べる)"
"Twitter APIを使ってSwiftでTwitterを作ろう"
"【初心者向け】Ruby on Rails 5を用いたWebアプリケーション開発入門"
"【最短30分でできる!】Ruby on Rails入門: 初心者でも簡単! ブラウザだけでRailsを使ったWeb開発!"

コード解説

faradayで指定要件の内容をGetする

uriのcourses以降にAPIでgetしたい情報を記載します。

今回は前述した要件ですが、RailsをPythonやHtmlなどに変更すればそれに関連する情報を取得できます。

また、その他カテゴリーなどでも取得可能です

uri = 'https://www.udemy.com/api-2.0/courses/?search=Rails&language=ja&ordering=most-reviewed'

詳細はAPI公式リファレンスを御覧ください

Basic認証を行う

UdemyのAPI公式リファレンス に記載の通り、API呼び出しの度に必ず認証が必要になりますので、faradayでBasic認証を行います。

クライアントIdとクライアントパスワードには事前に取得した自分の情報を記載します。

conn = Faraday.new(:url => uri) do |builder|
  builder.basic_auth('クライアント Id', 'クライアントパスワード    ')
  builder.adapter :net_http
end

Jsonパースする

戻り値がJsonで返ってくるのでパースします。

results = JSON.parse(conn.get.body)['results']

講座のタイトルを取得

resultsにはhash形式で複数の講座情報が入っているので、繰り返し処理でタイトルを取得します

results.each do |result|
  p result['title']
end

以上になります。

その他関連記事

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Ruby on Railsで外部APIを利用して、簡単なアプリケーションを作成する

Rubyでサイトをスクレイピングし、ローカルに画像を保存する

Ransackとajax で検索結果を動的に表示する|Ruby on Rails5

Ruby on RailsでAmazon アフィリエイトのProduct Advertising APIが利用できない

前の記事
人気記事
カテゴリーから記事を探す