I. Introduction
Chuyện là mình muốn crawl tất cả video của một channel youtube về nghịch chơi nhưng không ngờ là để crawl được thì cũng khá loằng ngoằng nên tiện tay biên một bài rồi lỡ sau này nếu mà có quên thì còn tìm lại được =))
Vì Youtube có cung cấp API chính thống nên mình sẽ không dùng tool scraper mà sẽ dùng YouTube Data API v3 để thực thi việc crawl này.
Ban đầu mình sẽ gọi thử API để xem kết quả thế nào nhé.
Nicely done!! Và đây là cách hướng dẫn lấy channelId
trong đoạn video trên nhé ạ.
II. Credentials
Như demo ở trên thì với tính năng Try this method của YouTube Data API v3 chúng ta đã lấy được danh sách videos của channel. Nhưng ở phần credentials đang check ở cả hai option là Google Oauth 2.0 và API key, chúng ta hãy đi xem liệu chúng ta có cần cả hai loại không để đỡ tốn công làm nhé.
Nếu việc lấy danh sách videos từ channelId
cần một trong số những scopes đặc biệt dưới đây thì chúng ta phải sử dụng Google Oauth 2.0.
Rõ ràng là chúng ta không cần scope nào cả =)) Thế nên giờ đi đăng kí API key là được.
III. API key
Setting up API keys thì đã có nhiều bài hướng dẫn rồi nên mình sẽ không viết lại nữa, mọi người có thể xem ở đây và ở đây nhé ạ.
Sau khi làm theo hướng dẫn thì mình cũng đã có thành quả 👋👋👋.
API example.
curl --location --get 'https://youtube.googleapis.com/youtube/v3/search?' \
-d part=snippet \
-d channelId=UC6yW44UGJJBvYTlfC7CRg2Q \
-d channelType=any \
-d maxResults=500 \
-d key={{API_KEY}} \
-d pageToken=0 \
-d order=date
Lưu ý là mỗi lần call API thì maxResults
tối đa chỉ là 50 nên trong trường hợp nhiều channel có nhiều hơn 50 videos thì cần truyền param pageToken
để lấy tiếp data.
IV. Google Oauth 2.0
Ở trên chúng ta chỉ lần API Key là xong nhưng với nếu bạn cần quyền truy cập những API khác như là Manage your YouTube videos
thì sẽ phải sử dụng Google Oauth 2.0 nên trong phạm vi bài viết này mình sẽ giới thiệu luôn vì biết đâu sẽ có bạn cần ^^.
Với Google Oauth 2.0 thì chúng ta sẽ cần access_token để truy cập. Mọi người có thể thử với Oauth 2.0 PlayGround tại đây.
1. Select & authorize APIs
2. Exchange authorization code for tokens
Sau bước này chúng ta đã lấy được access_token nhưng bởi vì access_token sẽ exprired sau 1 tiếng nên chúng ta cần refresh access_token để có thể tiếp tục gọi API.
Đó chính là demo của Oauth2 flow hoàn chỉnh nhưng đi vào sâu hơn như tạo Oauth Client ID thì mình sẽ không làm ở đây nữa vì đã có hướng dẫn rất rõ ràng từ Google Cloud Platform Console - Setting up OAuth 2.0 rồi =)).
V. Postman Oauth 2.0
Với sự ra đời của Postman Oauth 2.0 thì mọi thứ thật đơn giản. Mọi người có thể tham khảo tutorial Authorize Google APIs Using OAuth 2.0 được chính team Postman làm rất cụ thể và chi tiết.
Trong quá trình làm có thể sẽ gặp một số lỗi phổ biến nên mình sẽ để tên lỗi và solution link ở dưới:
- Error 403: access_denied The developer hasn’t given you access to this app despite a new project being created
- Not receiving Google OAuth refresh token
===
Thanks for reading.