[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円
[Django]LINEシェアボタンに動的URLを実装する
Djangoの動的URLをLINEシェアボタンで共有されるURLに反映してみましょう。
LINEシェア
投稿(Post)のidがURLとして共有されたいとします。
テンプレートには、
<a class="line button" href="http://line.me/R/msg/text/?投稿しました!https://example.com/{{ post.id }}/"><span><i class="fab fa-line"></i></span><span> LINE</span></a> <style> .line { background-color: #00B900; } </style>
ボタンの整形にはBulmaを使ってます。FontAwesomeにLINEアイコンが追加されていて良かったです。
このようにURLのところに{{ post.id }}とそのまま埋め込んでおけば問題なくシェアされますね!Djangoを使っていなくても同じようにいけるはずです!
何かあれば、じぇい👨💻 (@jyouj__) | Twitterに!
投げ銭も待ってまーす!-> jyouj__さんの投げ銭ビスケット募集中!
[Django]uuidを使ってみる
あけましておめでとうございます!
昨日、サービスをリリースしました!
久しぶり(といっても一ヶ月ぐらい)にPython/Djangoを使ってサービスを作りました。
そこで、最近GolangやNuxt.jsの記事ばかりだったので、Djangoの記事を書こうと思います。
今回は、uuidをurlとして使ってみることについてです。
urlの値を簡単に推測されなくなります。
モデルの定義
models.pyに記述していきましょう。
from django.db import models import uuid # Create your models here. class Post(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) text = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-created_at'] def __str__(self): return self.text
これでPostモデルのidがuuidになりました。
URLに
そして、urls.pyのpath()の一つ目の引数に
'<uuid:post_id>/'
これを書けばOKです。他のところは普通のpkとなんら変わりません!
何かあれば、じぇい👨💻 (@jyouj__) | Twitterに!
投げ銭も待ってまーす!-> jyouj__さんの投げ銭ビスケット募集中!
[Nuxt][Vue]Twitterライクな投票機能をvue-pollを使って実装!
前回、Twitter風のカウンターを作ってみましたが、今度はTwitter風の投票機能を作ってみようと思います。
このパッケージを使います。
GitHub - ppietris/vue-poll: A Vue.js component for voting
Nuxt.jsを使っていますが、Vue.jsでも同じように行けます。
導入
npm
でインストールしましょう。
$ npm install vue-poll
nuxt.config.js
にこう記述!
module.exports = { plugins: [ { src: '~plugins/vue-poll.js', ssr: false } ],
最後にplugins/vue-poll.js
を作成しましょう。
import Vue from 'vue' import VuePoll from 'vue-poll' Vue.component('vue-poll', VuePoll)
これで準備は整いました。
実装
pages/index.vue
を編集していきましょう。
<template> <section class="container"> <div> <vue-poll v-bind="options" @addvote="addVote"/> </div> </section> </template> <script> export default { data () { return { options: { question: "好きなプログラミング言語は?", answers: [ { value: 1, text: 'Python', votes: 0 }, { value: 2, text: 'Ruby', votes: 0 }, { value: 3, text: 'PHP', votes: 0 }, { value: 4, text: 'Java', votes: 0 } ] } } }, methods: { addVote(obj) { console.log(obj.value + 'に投票したよ!') } } } </script>
npm run dev
を実行してみると!
Pythonに投票してみると!
おお!Twitterの投票機能まんまだ!
何かあれば、じぇい👨💻 (@jyouj__) | Twitterに!
投げ銭も待ってまーす!-> jyouj__さんの投げ銭ビスケット募集中!