Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【コピペでできるGO言語】youtubeの検索結果を取得してみよう!

GO言語

こんにちわ。ゆきとです!

 

今日はGo言語を使ってyoutubeから検索結果のデータを取得していこうと思います!

 

Goでやる必要がないって?そのとおりです。

なんならpythonでやった方が圧倒的に速く作れるし、参考文献もいっぱいあるし..something..

 

それでも俺は!!Goで作りたかったんだーーーー!

 

茶番はここまでにして早速作っていきましょう。

 

www.yukiyukiponsu.work

環境

事前準備

今回youtubeの検索結果を使用するにあたってGCPを使うのでGCPの登録をお願いします!

Google Cloud Platform

あとで必要になるAPIキーをもうここで発効しちゃってください!

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{
	//.envファイルの読み込み
	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()) //https://jsonplaceholder.typicode.com/todos?userId=1
	
	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)
	}
 
	// fmt.Println(string(body))
	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]