こんにちわ。ゆきとです!
今日はGo言語を使ってyoutubeから検索結果のデータを取得していこうと思います!
Goでやる必要がないって?そのとおりです。
なんならpythonでやった方が圧倒的に速く作れるし、参考文献もいっぱいあるし..something..
それでも俺は!!Goで作りたかったんだーーーー!
茶番はここまでにして早速作っていきましょう。
www.yukiyukiponsu.work
環境
事前準備
今回youtubeの検索結果を使用するにあたってGCPを使うのでGCPの登録をお願いします!
Google Cloud Platform
あとで必要になるAPIキーをもうここで発効しちゃってください!
実行結果
まずどんなものができるかをイメージしてください!
今回のプログラムでは、指定したキーワードをyoutubeで検索させ、その検索結果を一つだけ取得するプログラムとなっています。
それでは実際のソースコードをみていきましょう!
.envを使用する上で必要なライブラリをまずインストール
go get github.com/joho/godotenv
.env
DEVELOPER_KEY = "先ほどコピーしたAPIキー"
test_youtube_api.go
package main
import (
"os"
"fmt"
"log"
"time"
"net/http"
"io/ioutil"
"github.com/joho/godotenv"
)
func main() {
developer_key := get_developer_key()
youtube_search_list := search_youtube_list(developer_key)
fmt.Println(youtube_search_list)
}
func get_developer_key() string{
err := godotenv.Load()
if(err != nil){
log.Fatal("Error loading .env file")
}
developer_key := os.Getenv("DEVELOPER_KEY")
fmt.Println(developer_key)
return developer_key
}
func search_youtube_list(developer_key string) string{
url := "https://www.googleapis.com/youtube/v3/search"
request, err := http.NewRequest("GET", url, nil)
if err != nil{
log.Fatal(err)
}
params := request.URL.Query()
params.Add("key", developer_key)
params.Add("q", "洋楽")
params.Add("part", "snippet, id")
params.Add("maxResults", "1")
request.URL.RawQuery = params.Encode()
fmt.Println(request.URL.String())
timeout := time.Duration(5 * time.Second)
client := &http.Client{
Timeout: timeout,
}
response, err := client.Do(request)
if err != nil{
log.Fatal(err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
return string(body)
}
これで終了です!
コンパイルして、実行すると先ほどの実行結果のようになります!是非試してみてくださいね!
おまけ
ちなみにフォルダの構成的にはこうなってますー
test_go
|- .env
|- test_youtube_api.go
以上です!
今日もブログを読んでくださり誠にありがとうございます!!
少しでも参考になれば幸いです!
ではまた後日!
参考資料
Go コード サンプル | YouTube Data API | Google Developers
【Go】.envファイルをGolangでも使用するためのライブラリ「godotenv」 - Qiita
GoでGETによるリクエスト [parameter][http.Get][http.Client]