为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕神8447489 2023-05-22 16:06:45
我正在设置一个图像编码器功能,您可以在其中输入一个图像 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    }}
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

您声称 Spotify 个人资料图片是ISO 8850-1编码/加密的说法毫无意义。

更有意义的是它是 Base64 编码的。

例如,

面向开发人员的 Spotify:Web API:上传自定义播放列表封面图片。

Base64 编码的 JPEG 图像数据,最大负载大小为 256 KB


在围棋中,

包base64

import "encoding/base64"

base64 包实现了 RFC 4648 指定的 base64 编码。


另一个证据:“UTF-8 格式的 HTTPS 请求”

面向开发人员的 Spotify:Web API

要求

Spotify Web API 基于 REST 原则。通过以 UTF-8 格式向 API 端点发送标准 HTTPS 请求来访问数据资源。


例如。使用您的 Stack Overflow 个人资料图片:

package main


import (

    "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))

}


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信