instagram: Hacer más resiliente
This commit is contained in:
parent
1e18e5100d
commit
e11c967c29
1 changed files with 14 additions and 2 deletions
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -10,7 +11,8 @@ import (
|
||||||
|
|
||||||
type QueryResponse struct {
|
type QueryResponse struct {
|
||||||
Data struct {
|
Data struct {
|
||||||
ShortcodeMedia struct {
|
ShortcodeMedia *struct {
|
||||||
|
Type string `json:"__typename"`
|
||||||
VideoUrl string `json:"video_url"`
|
VideoUrl string `json:"video_url"`
|
||||||
Owner struct {
|
Owner struct {
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
|
@ -34,10 +36,14 @@ type Response struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lookup(urlSrc string) (Response, error) {
|
func Lookup(urlSrc string) (Response, error) {
|
||||||
|
urlSrcParsed, err := url.Parse(urlSrc)
|
||||||
|
if err != nil {
|
||||||
|
return Response{}, err
|
||||||
|
}
|
||||||
|
|
||||||
url, _ := url.Parse("https://www.instagram.com/graphql/query/?query_hash=b3055c01b4b222b8a47dc12b090e4e64")
|
url, _ := url.Parse("https://www.instagram.com/graphql/query/?query_hash=b3055c01b4b222b8a47dc12b090e4e64")
|
||||||
query := url.Query()
|
query := url.Query()
|
||||||
query.Add("variables", "{\"shortcode\":\""+path.Base(urlSrc)+"\",\"child_comment_count\":3,\"fetch_comment_count\":40,\"parent_comment_count\":24,\"has_threaded_comments\":true}")
|
query.Add("variables", "{\"shortcode\":\""+path.Base(urlSrcParsed.Path)+"\",\"child_comment_count\":3,\"fetch_comment_count\":40,\"parent_comment_count\":24,\"has_threaded_comments\":true}")
|
||||||
url.RawQuery = query.Encode()
|
url.RawQuery = query.Encode()
|
||||||
|
|
||||||
resp, err := http.Get(url.String())
|
resp, err := http.Get(url.String())
|
||||||
|
@ -52,6 +58,12 @@ func Lookup(urlSrc string) (Response, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Response{}, err
|
return Response{}, err
|
||||||
}
|
}
|
||||||
|
if response.Data.ShortcodeMedia == nil {
|
||||||
|
return Response{}, errors.New("No encontré el video.")
|
||||||
|
}
|
||||||
|
if response.Data.ShortcodeMedia.Type != "GraphVideo" {
|
||||||
|
return Response{}, errors.New("Esto no es un video.")
|
||||||
|
}
|
||||||
return Response{
|
return Response{
|
||||||
VideoUrl: response.Data.ShortcodeMedia.VideoUrl,
|
VideoUrl: response.Data.ShortcodeMedia.VideoUrl,
|
||||||
Author: response.Data.ShortcodeMedia.Owner.Username,
|
Author: response.Data.ShortcodeMedia.Owner.Username,
|
||||||
|
|
Reference in a new issue