123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package browseajax
-
- import (
- "net/http"
- "github.com/terorie/yt-mango/common"
- "errors"
- "io/ioutil"
- "github.com/valyala/fastjson"
- )
-
- const mainURL = "https://www.youtube.com/browse_ajax?ctoken="
-
- func GrabPage(channelID string, page uint) (*fastjson.Value, error) {
- // Generate page URL
- token := GenerateToken(channelID, uint64(page))
- url := mainURL + token
-
- // Prepare request
- req, err := http.NewRequest("GET", url, nil)
- if err != nil { return nil, err }
- req.Header.Add("X-YouTube-Client-Name", "1")
- req.Header.Add("X-YouTube-Client-Version", "2.20180726")
-
- // Send request
- res, err := common.Client.Do(req)
- if err != nil { return nil, err }
- if res.StatusCode == 500 {
- defer res.Body.Close()
- buf, _ := ioutil.ReadAll(res.Body)
- println(string(buf))
- }
- if res.StatusCode != 200 { return nil, errors.New("HTTP failure") }
-
- // Download response
- defer res.Body.Close()
- buf, err := ioutil.ReadAll(res.Body)
- if err != nil { return nil, err }
-
- // Parse JSON
- var p fastjson.Parser
- root, err := p.ParseBytes(buf)
- if err != nil { return nil, err }
-
- return root, nil
- }
|