如何转换图像以上传 Spotify 个人资料图片?

我正在设置一个图像编码器功能,您可以在其中输入一个图像 URL,它会返回它的 ISO-8859-1 版本。我将如何编写一个向 URL 发送 HTTP GET 请求并将这些字节转换为 ISO-8859-1 的函数?下面的代码是我目前所拥有的一切。


func grabImageBytes(imageURL string) ([]byte, error) {

    req, _ := http.NewRequest("GET", imageURL, nil)

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()

    body, err := ioutil.ReadAll(res.Body)

    if err != nil {

        return nil, err

    } else {

        return body, nil

    }

}

其他功能:


func getRandomImage(keyword string) (string, error) {

    req, _ := http.NewRequest("GET", "https://www.google.com/search?tbm=isch&q="+keyword, nil)

    req.Header.Add("authority", "www.google.com")

    req.Header.Add("upgrade-insecure-requests", "1")

    req.Header.Add("referer", "https://images.google.com/")

    req.Header.Add("accept-language", "en-US,en;q=0.9")


    res, _ := http.DefaultClient.Do(req)


    defer res.Body.Close()

    body, _ := ioutil.ReadAll(res.Body)


    var imageURL string


    if strings.Contains(string(body), ",\"ou\":\"") {

        imageURL = strings.Split(strings.Split(string(body), ",\"ou\":\"")[1], "\",\"ow\":")[0]

    } else {

        return "", errors.New("Image not found.")

    }

    req2, _ := http.NewRequest("GET", imageURL, nil)


    res2, _ := http.DefaultClient.Do(req2)


    defer res2.Body.Close()

    if res2.StatusCode == 404 {

        return "", errors.New("Image not found.")

    } else {

        return imageURL, nil

    }


}


慕神8447489
浏览 97回答 1
1回答

忽然笑

您声称 Spotify 个人资料图片是ISO 8850-1编码/加密的说法毫无意义。更有意义的是它是 Base64 编码的。例如,面向开发人员的 Spotify:Web API:上传自定义播放列表封面图片。Base64 编码的 JPEG 图像数据,最大负载大小为 256 KB在围棋中,包base64import "encoding/base64"base64 包实现了 RFC 4648 指定的 base64 编码。另一个证据:“UTF-8 格式的 HTTPS 请求”面向开发人员的 Spotify:Web API要求Spotify Web API 基于 REST 原则。通过以 UTF-8 格式向 API 端点发送标准 HTTPS 请求来访问数据资源。例如。使用您的 Stack Overflow 个人资料图片:package mainimport (    "encoding/base64"    "fmt"    "io/ioutil"    "net/http"    "os")func grabImageBytes(imageURL string) ([]byte, error) {    req, err := http.NewRequest("GET", imageURL, nil)    if err != nil {        return nil, err    }    res, err := http.DefaultClient.Do(req)    if err != nil {        return nil, err    }    defer res.Body.Close()    body, err := ioutil.ReadAll(res.Body)    if err != nil {        return nil, err    }    enc := base64.StdEncoding    img := make([]byte, enc.EncodedLen(len(body)))    enc.Encode(img, body)    return img, nil}func main() {    imageURL := `https://lh5.googleusercontent.com/-P8ICR-LXoBs/AAAAAAAAAAI/AAAAAAAAE04/fVAeB6_nMeg/photo.jpg?sz=328`    img, err := grabImageBytes(imageURL)    if err != nil {        fmt.Fprintln(os.Stderr, err)        return    }    fmt.Println(string(img))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go