Конечная цель здесь:
- Пользователь упоминает дескриптор моего приложения в твиттере в ответе какого-то твита
- Мой скрипт извлекает идентификатор оригинального твита
- получает его json ответ и извлекает из него фактический URL видео.
Моя проблема:
Я могу добраться до точки, где я могу напечатать твит. Текст, но что-нибудь еще чем это бросает ошибку, связанную с адресом памяти. Я новичок в Go и до сих пор не использовал указатели, поэтому я предполагаю, что проблема лежит где-то там.
Мой код (игнорируйте комментарии в нем, я вставил его как есть, чтобы вы могли легко обратиться к ошибке) ->
// ExtendedEntity is a []MediEntity, now we need to figure out how to access the details in it
package main
import (
"fmt"
"github.com/dghubble/go-twitter/twitter"
"github.com/dghubble/oauth1"
)
func main() {
config := oauth1.NewConfig("asd", "asd")
token := oauth1.NewToken("asd-V65ynQCN5vxWi72MGqfwF7WqYqdUZh", "asd")
httpClient := config.Client(oauth1.NoContext, token)
client := twitter.NewClient(httpClient)
params := &twitter.StreamFilterParams{
Track: []string{"@bulundindia1337"},
// StallWarnings: twitter.Bool(true),
}
stream, _ := client.Streams.Filter(params)
// fmt.Printf("%T", stream)
// v := <-stream.Messages
// fmt.Println(v)
demux := twitter.NewSwitchDemux()
demux.Tweet = func(tweet *twitter.Tweet) {
fmt.Println("text > ", tweet.Text)
fmt.Println("tweet ID > ", tweet.ID)
parentTweetID := tweet.InReplyToStatusID
fmt.Println("Parent tweet id > ", parentTweetID)
a := parseURL(parentTweetID, client)
fmt.Println(a)
// fmt.Println(parentTweet.ExtendedTweet.ExtendedEntities)
//fmt.Println(parentTweet.Text)
//fmt.Println(parentTweet.ExtendedEntities)
}
for message := range stream.Messages {
demux.Handle(message)
}
}
func parseURL(tweetID int64, c *twitter.Client) twitter.MediaEntity {
status, _, err := c.Statuses.Show(tweetID, nil)
if err != nil {
fmt.Println(err)
}
return status.ExtendedEntities.Media[0]
}
Вывод при запуске потока ->
nish@b0x:~/Documents/go/twitube$ go run main.go
text > @thevirdas @netflix_in @TheWeirdass @EmmayEntertain @ApplauseSocial @Nikgonsalves @nikkhiladvani @nairsameer… t.co/LZ5iKKU8Ku
tweet ID > 1247376867046424578
Parent tweet id > 1246007863895449600
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x669a8a]
goroutine 1 [running]:
main.parseURL(0x114ab58cf2d4e000, 0xc0000ef700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
/home/nish/Documents/go/twitube/main.go:50 +0xda
main.main.func1(0xc00009e000)
/home/nish/Documents/go/twitube/main.go:33 +0x243
github.com/dghubble/go-twitter/twitter.SwitchDemux.Handle(0x7119e8, 0xc00005af00, 0x7119f8, 0x711a00, 0x711a08, 0x711a10, 0x711a18, 0x711a20, 0x711a28, 0x7119c8, ...)
/home/nish/Documents/go/src/github.com/dghubble/go-twitter/twitter/demux.go:55 +0x22e
main.main()
/home/nish/Documents/go/twitube/main.go:41 +0x265
exit status 2
URL-адрес пакета go -twitter -> https://godoc.org/github.com/dghubble/go-twitter/twitter#ExtendedEntity
Буду признателен, если вы укажете мне правильное направление!