+2

Oauth2 and Youtube channel's videos crawler

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.

image.png

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é ạ.

About snippet part parameters.

image.png

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.0API 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é.

image.png

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.

image.png

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ả 👋👋👋. image.png

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

image.png

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.

image.png

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 ^^.

image.png

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

image.png

https://accounts.google.com/o/oauth2/v2/auth

2. Exchange authorization code for tokens

image.png

https://oauth2.googleapis.com/token

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.

image.png

Đó 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 =)).

image.png

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.

image.png

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:

===

Thanks for reading.

References


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí