/home/vagrant/go/bin/dep init
twitterのconsumer key, access-tokenなどを用意します。
package main import ( "github.com/ChimeraCoder/anaconda" ) func main() { anaconda.NewTwitterApiWithCredentials("your-access-token", "your-access-token-secret", "your-consumer-key", "your-consumer-secret") }
$ /home/vagrant/go/bin/dep ensure
作成されています。
twitterAccount.json
{ "accessToken": "", "accessTokenSecret": "", "consumerKey": "", "consumerSecret": "" }
package main import ( "encoding/json" "fmt" "io/ioutil" "github.com/ChimeraCoder/anaconda" ) func main(){ raw, error := ioutil.ReadFile("twitterAccount.json") if error != nil { fmt.Println(error.Error()) return } var twitterAccount TwitterAccount json.Unmarshal(raw, &twitterAccount) api := anaconda.NewTwitterApiWithCredentials(twitterAccount.AccessToken, twitterAccount.AccessTokenSecret, twitterAccount.ConsumerKey, twitterAccount.ConsumerSecret) searchResult, _ := api.GetSearch(`スタートアップ`, nil) for _, tweet := range searchResult.Statuses { fmt.Println(tweet.Text) } } type TwitterAccount struct { AccessToken string `json:"accessToken"` AccessTokenSecret string `json:"accessTokenSecret"` ConsumerKey string `json:"consumerKey"` ConsumerSecret string `json:"consumerSecret"` }
$ go run main.go
“厄介者”火山灰で排水処理を手助け、
巨大企業も目?
RT @ecoecoecho: 何をやっているか全く分からないが藤原竜也のイ
RT @Herlipto_info: 𝖲𝗁𝖺𝗋𝗂𝗇𝗀 𝗈𝗎𝗋 𝗅𝗈𝗏𝖾𝗅𝗒 𝗇𝖾𝗐 𝗉𝗂𝖾𝖼𝖾𝗌.
9/20(mon)20:00
RT @Herlipto_info: 𝖲𝗁𝖺𝗋𝗂𝗇𝗀 𝗈𝗎𝗋 𝗅𝗈𝗏𝖾𝗅𝗒 𝗇𝖾𝗐 𝗉𝗂𝖾𝖼𝖾𝗌.
// 省略
おおおおおおおおおおお
package main import ( "encoding/json" "fmt" "io/ioutil" "net/http" "github.com/labstack/echo" "github.com/ChimeraCoder/anaconda" ) func main(){ e := echo.New() e.Post("/tweet", search) e.Logger.Fatal(e.start(":1323")) } func search(c echo.Context) error { keyword := c.FormValue("keyword") api := connectTwitterApi() searchResult, _ := api.GetSearch(`"` +keyword+ `"`, nil) tweets := make([]*Tweet, 0) for _, data := range searchResult.Statuses { tweet := new(Tweet) tweet.Text = data.FullText tweet.User = data.User.Name tweets = append(tweets, tweet) } return c.JSON(http.StatusOK, tweets) } func connectTwitterApi() *anaconda.TwitterApi { raw, error := ioutil.ReadFile("twitterAccount.json") if error != nil { fmt.Println(error.Error()) return } var twitterAccount TwitterAccount json.Unmarshal(raw, &twitterAccount) return anaconda.NewTwitterApiWithCredentials(twitterAccount.AccessToken, twitterAccount.AccessTokenSecret, twitterAccount.ConsumerKey, twitterAccount.ConsumerSecret) } type TwitterAccount struct { AccessToken string `json:"accessToken"` AccessTokenSecret string `json:"accessTokenSecret"` ConsumerKey string `json:"consumerKey"` ConsumerSecret string `json:"consumerSecret"` } type Tweet struct { User string `json:"user"` Text string `json:"text"` } type Tweets *[]Tweet
$ go build
go: inconsistent vendoring in /home/vagrant/go/src/github.com/me/twitter:
github.com/ChimeraCoder/anaconda@v2.0.0+incompatible: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/ChimeraCoder/tokenbucket@v0.0.0-20131201223612-c5a927568de7: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/azr/backoff@v0.0.0-20160115115103-53511d3c7330: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/dustin/go-jsonpointer@v0.0.0-20160814072949-ba0abeacc3dc: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/dustin/gojson@v0.0.0-20160307161227-2e71ec9dd5ad: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/garyburd/go-oauth@v0.0.0-20180319155456-bca2e7f09a17: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/labstack/echo/v4@v4.5.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
golang.org/x/net@v0.0.0-20210917221730-978cfadd31cf: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
run ‘go mod vendor’ to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory
なんでやろ
まあ 取得できるって事まではわかった。