Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- "os"
- "os/signal"
- "syscall"
- "github.com/dghubble/go-twitter/twitter"
- "github.com/dghubble/oauth1"
- "github.com/robfig/cron"
- )
- func main() {
- consumerKey := "KSgKopvcwQuoMyr19sTFbx2sv"
- consumerSecret := "I2ypitHjRBk8wR2m59VKvDQdG9tJTMleOsodWIMFTmJ85p8KZZ"
- accessToken := "2323966614-hshIJaj2HFDFiRLC1BhbPF1OFYqtTuFBKfcVAPr"
- accessSecret := "xFcbPdyS9MbIh5TDOoqSmunp7mFN2IcxUJUUJt3eJpODP"
- config := oauth1.NewConfig(consumerKey, consumerSecret)
- token := oauth1.NewToken(accessToken, accessSecret)
- httpClient := config.Client(oauth1.NoContext, token)
- client := twitter.NewClient(httpClient)
- var hashtags = map[string]int{}
- // Convenience Demux demultiplexed stream messages
- demux := twitter.NewSwitchDemux()
- demux.Tweet = func(tweet *twitter.Tweet) {
- for _, hashtag := range tweet.Entities.Hashtags {
- hashtags[hashtag.Text]++
- }
- }
- demux.DM = func(_ *twitter.DirectMessage) {}
- demux.Event = func(_ *twitter.Event) {}
- fmt.Println("Starting Stream...")
- // FILTER
- filterParams := &twitter.StreamFilterParams{
- Track: []string{"#BNK48"},
- StallWarnings: twitter.Bool(true),
- }
- stream, _ := client.Streams.Filter(filterParams)
- // Receive messages until stopped or stream quits
- go demux.HandleChan(stream.Messages)
- c := cron.New()
- c.AddFunc("@every 30s", func() {
- b, _ := json.Marshal(hashtags)
- fmt.Printf("%s\n", b)
- })
- c.Start()
- // Wait for SIGINT and SIGTERM (HIT CTRL-C)
- ch := make(chan os.Signal)
- signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
- log.Println(<-ch)
- fmt.Println("Stopping Stream...")
- stream.Stop()
- c.Stop()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement