はじめに
私はUdemyというサイトを利用してよく学習します。
購入したコースが増えてきた結果、複数のコースで同じ内容のレッスンを扱っているケースも出てきました。
なのであるコースのレッスンが十分に理解できなかった場合に別のコースで似た内容を扱っているならそれを見て補足するという事がしたくてコースで扱うレッスンの一覧を作成する事にしました。
コースを開いてレッスンを全て選択してテキストエディターに貼り付けるという事を以前やっていましたがアナログ感があったので勉強をかねてPythonを使って一覧を取りPandasに格納して最期にcsvで保存します。
事前準備
- Udemy APIの申請
- Udemy packageのインストール
- Pandas packageのインストール
- 環境変数の設定
Udemy APIの申請
Udemyパッケージは内部的にUdemy APIを使っており、APIを使うにはclient id と Client secret取得の為APIの申請が必要です。
申請が許可されたら上記のページにクライアントIDとクライアントシークレットが表示されます。
Udemy packageのインストール
Udemyというパッケージを使います
pip install udemy
Pandas packageのインストール
pip install pandas
環境変数の設定
Udemyパッケージは環境変数にClient IDとClient Secretが設定されている前提で動作するので設定が必要です。
ここではWindowsでの方法です。
レッスン一覧取得手順
- ここでは無料の下記のコースのレッスン一覧を取る例を行います
- 赤枠の部分はコース詳細を取る際に必要な文字列です
大まかな流れは下記の通りです
- cource-detailからコースIDの取得
- レッスン一覧を取るためにコースIDが必要なようですがどこにIDがあるのかわからなかったのでこのAPIから取っています
- publiccurriculum-listからレッスンのリストを取得
- csvで保存
コード
import json
import pandas as pd
from udemy import *
# コースタイトル
cource_key = "google-jp-ai"
# page_size 一度に取得するレッスンの情報数(最低12最大100)
page_size = 12
# Udemyオブジェクトを作成
Client = PyUdemy()
# コース詳細を取得
cource_detail = json.loads(Client.get_coursesdetail(cource_key))
i = 1
while True:
result = json.loads(Client.get_publiccurriculumlist(cource_detail["id"],page=i,page_size=page_size))
i+=1
# Dataframeをまだ作成していなければ作成。そうでなければ前の結果と今回の結果を結合する
try:
df
except NameError:
df = pd.DataFrame.from_dict(result["results"])
else:
df = pd.concat([df, pd.DataFrame.from_dict(result["results"])])
if result["next"] is None:
break
# csvで保存
df.to_csv("result.csv")
結果
保存したcsvを Google spread sheetにインポートした図です。
title以外にもいろいろありますが、各列の解説を見つける事が出来なかったので勝手に解釈しました。
間違えているかもしれませんが下記のような列があります
項目名 | 意味 |
---|---|
_class | Chapter or lecture or quiz |
id | id |
created | 作成日 |
sort_order | ? |
title | タイトル |
description | 説明 |
is_published | 公開中 |
title_cleaned | ? |
transcript | ? |
is_downloadable | ダウンロード可能かどうか |
is_free | 無料公開しているかどうか |
asset | 動画の情報 |
can_be_previewed | プレビューで見れる動画か |
type | ? |
object_index | ? |
is_draft | 下書きかどうか |
version | Version |
duration | ? |
pass_percent | 進行率 |
メモ
関連情報
- Udemy API document
- パッケージ作成者が使い方を紹介している動画
- コース詳細APIで取得できる情報