[Golang]ニコニコ動画のAPIを使ってみた!
ニコニコ動画のAPIをGolangで使ってDiscord Botを作ってみました!今回はニコニコ動画のAPIを紹介しようと思います。
ソースコードはこちら
APIにアクセス
ニコニコ動画のスナップショットAPIを使います。動画を検索したりできます。
https://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?q=[[検索したいワード]]&targets=title&fields=contentId,title,viewCounter&filters[viewCounter][gte]=1000&_sort=-viewCounter&_offset=0&_limit=3&_context=apiguide
このURLにアクセスします。パラメータは自由に無くしてくれても構いません。q
とtargets
と_sort
は必須です。データを三つ、再生数の多い順に取得します。
Goで実装
それではGoでアクセスするコードを書いていきましょう。
Jsonから構造体を書いていきます。
type Niconico struct { Meta struct { Status int `json:"status"` TotalCount int `json:"totalCount"` ID string `json:"id"` } `json:"meta"` Data []struct { ContentID string `json:"contentId"` Title string `json:"title"` ViewCounter int `json:"viewCounter"` } `json:"data"` }
そして、次にmain()
を書いていきます。
package main import ( "fmt" "encoding/json" "net/http" "io/ioutil" ) func main() { url := "https://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?q={{ 検索キーワード}}&targets=title&fields=contentId,title,viewCounter&filters[viewCounter][gte]=1000&_sort=-viewCounter&_offset=0&_limit=3&_context=apiguide" fmt.Println(url) resp, _ := http.Get(url) defer resp.Body.Close() byteArray, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(byteArray)) jsonBytes := ([]byte)(byteArray) data := new(Niconico) if err := json.Unmarshal(jsonBytes, data); err != nil { fmt.Println("JSON Unmarshal error:", err) return } if len(data.Data) == 0 { No content } else { fmt.println("https://nico.ms/" + data.Data[0].ContentID) }
これで検索ワードの最も再生数の多い動画のURLを表示できるはずです。
easy!
何かあれば、じぇい👨💻 (@jyouj__) | Twitterに!
投げ銭も待ってまーす!-> jyouj__さんの投げ銭ビスケット募集中!
Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る【電子書籍】[ Sau Sheong Chang ]
- ジャンル: 本・雑誌・コミック > PC・システム開発 > インターネット・WEBデザイン > その他
- ショップ: 楽天Kobo電子書籍ストア
- 価格: 3,672円