eapi

package
v0.0.0-beta4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Api

type Api struct {
	// contains filtered or unexported fields
}

func New

func New(client *api.Client) *Api

func (*Api) CaptchaSend

func (a *Api) CaptchaSend(ctx context.Context, req *CaptchaSendReq) (*CaptchaSendResp, error)

CaptchaSend 发送验证码 PC客户端

func (*Api) CaptchaVerify

func (a *Api) CaptchaVerify(ctx context.Context, req *CaptchaVerifyReq) (*CaptchaVerifyResp, error)

CaptchaVerify 验证验证码

func (*Api) GetUserInfo

func (a *Api) GetUserInfo(ctx context.Context, req *GetUserInfoReq) (*GetUserInfoResp, error)

GetUserInfo 获取用户信息

func (*Api) LoginPhone

func (a *Api) LoginPhone(ctx context.Context, req *LoginPhoneReq) (*LoginPhoneResp, error)

LoginPhone 手机号登录

func (*Api) Playlist

func (a *Api) Playlist(ctx context.Context, req *PlaylistReq) (*PlaylistResp, error)

Playlist 歌单列表.其中包含用户创建得歌单+我喜欢得歌单 url: https://app.apifox.com/project/3870894 testdata/har/4.har NeedLogin: 未知

func (*Api) QrcodeCheck

func (a *Api) QrcodeCheck(ctx context.Context, req *QrcodeCheckReq) (*QrcodeCheckResp, error)

QrcodeCheck 查询扫码状态 返回值: 800-二维码不存在或已过期 801-等待扫码 802-正在扫码授权中 803-授权登录成功

func (*Api) QrcodeCreateKey

func (a *Api) QrcodeCreateKey(ctx context.Context, req *QrcodeCreateKeyReq) (*QrcodeCreateKeyResp, error)

QrcodeCreateKey 生成二维码需要得key 常见问题 1. 请求成功了,但是body为空值什么也没有,原因还是参数加密出现了问题。 2. crsftoken 可传可不传个人猜测前端写得通用框架传了

func (*Api) QrcodeGenerate

func (a *Api) QrcodeGenerate(ctx context.Context, req *QrcodeGenerateReq) (*QrcodeGenerateResp, error)

QrcodeGenerate 根据 QrcodeCreateKey 接口生成得key生成生成二维码,注意此处不是调用服务接口。

func (*Api) RefreshToken

func (a *Api) RefreshToken(ctx context.Context, req *RefreshTokenReq) (*RefreshTokenResp, error)

RefreshToken token刷新 url: https://app.apifox.com/project/3870894

func (*Api) V3SongDetail

func (a *Api) V3SongDetail(ctx context.Context, req *V3SongDetailReq) (*V3SongDetailResp, error)

V3SongDetail todo: 歌单列表 应该是根据歌单ID获取 url: https://app.apifox.com/project/3870894 testdata/har/1.har needLogin: 未知

func (*Api) YunBeiSignIn

func (a *Api) YunBeiSignIn(ctx context.Context, req *YunBeiSignInReq) (*YunBeiSignInResp, error)

YunBeiSignIn 用户每日签到 url: needLogin: 是 todo:目前传0会出现功能暂不支持不知为何(可能请求头或cookie问题)待填坑

type CaptchaSendReq

type CaptchaSendReq struct {
	Phone  string
	CTCode string
}

type CaptchaSendResp

type CaptchaSendResp struct {
	types.RespCommon[any]
}

type CaptchaVerifyReq

type CaptchaVerifyReq struct {
	Phone   string `json:"phone"`
	CTCode  string `json:"ctcode"`
	Captcha string `json:"captcha"`
}

type CaptchaVerifyResp

type CaptchaVerifyResp struct {
	types.RespCommon[any]
}

type GetUserInfoReq

type GetUserInfoReq struct {
	types.ReqCommon
}

type GetUserInfoResp

type GetUserInfoResp struct {
	types.RespCommon[any]
	Account GetUserInfoRespAccount `json:"account"`
	Profile GetUserInfoRespProfile `json:"profile"`
}

type GetUserInfoRespAccount

type GetUserInfoRespAccount struct {
	Id                 int64  `json:"id"`
	UserName           string `json:"userName"`
	Type               int64  `json:"type"`
	Status             int64  `json:"status"`
	WhitelistAuthority int64  `json:"whitelistAuthority"`
	CreateTime         int64  `json:"createTime"`
	TokenVersion       int64  `json:"tokenVersion"`
	Ban                int64  `json:"ban"`
	BaoyueVersion      int64  `json:"baoyueVersion"`
	DonateVersion      int64  `json:"donateVersion"`
	VipType            int64  `json:"vipType"`
	AnonimousUser      bool   `json:"anonimousUser"`
	PaidFee            bool   `json:"paidFee"`
}

type GetUserInfoRespProfile

type GetUserInfoRespProfile struct {
	UserId              int64       `json:"userId"`
	UserType            int64       `json:"userType"`
	Nickname            string      `json:"nickname"`
	AvatarImgId         int64       `json:"avatarImgId"`
	AvatarUrl           string      `json:"avatarUrl"`
	BackgroundImgId     int64       `json:"backgroundImgId"`
	BackgroundUrl       string      `json:"backgroundUrl"`
	Signature           string      `json:"signature"`
	CreateTime          int64       `json:"createTime"`
	UserName            string      `json:"userName"`
	AccountType         int64       `json:"accountType"`
	ShortUserName       string      `json:"shortUserName"`
	Birthday            int64       `json:"birthday"`
	Authority           int64       `json:"authority"`
	Gender              int64       `json:"gender"`
	AccountStatus       int64       `json:"accountStatus"`
	Province            int64       `json:"province"`
	City                int64       `json:"city"`
	AuthStatus          int64       `json:"authStatus"`
	Description         interface{} `json:"description"`
	DetailDescription   interface{} `json:"detailDescription"`
	DefaultAvatar       bool        `json:"defaultAvatar"`
	ExpertTags          interface{} `json:"expertTags"`
	Experts             interface{} `json:"experts"`
	DjStatus            int64       `json:"djStatus"`
	LocationStatus      int64       `json:"locationStatus"`
	VipType             int64       `json:"vipType"`
	Followed            bool        `json:"followed"`
	Mutual              bool        `json:"mutual"`
	Authenticated       bool        `json:"authenticated"`
	LastLoginTime       int64       `json:"lastLoginTime"`
	LastLoginIP         string      `json:"lastLoginIP"`
	RemarkName          interface{} `json:"remarkName"`
	ViptypeVersion      int64       `json:"viptypeVersion"`
	AuthenticationTypes int64       `json:"authenticationTypes"`
	AvatarDetail        interface{} `json:"avatarDetail"`
	Anchor              bool        `json:"anchor"`
}

type LoginPhoneReq

type LoginPhoneReq struct {
	CounterCode   string
	Phone         string
	Password      string
	Captcha       string
	RememberLogin bool
}

type LoginPhoneResp

type LoginPhoneResp struct {
	types.RespCommon[any]
}

type PlaylistReq

type PlaylistReq struct {
	Uid    string `json:"uid"`
	Offset string `json:"offset"`
	// Limit default 1000
	Limit string `json:"limit"`
}

type PlaylistResp

type PlaylistResp struct {
	types.RespCommon[any]
	Version  string             `json:"version"` // 时间戳1703557080686
	More     bool               `json:"more"`
	Playlist []PlaylistRespList `json:"playlist"`
}

type PlaylistRespList

type PlaylistRespList struct {
	Subscribers []interface{} `json:"subscribers"`
	Subscribed  bool          `json:"subscribed"`
	Creator     struct {
		DefaultAvatar     bool     `json:"defaultAvatar"`
		Province          int64    `json:"province"`
		AuthStatus        int64    `json:"authStatus"`
		Followed          bool     `json:"followed"`
		AvatarUrl         string   `json:"avatarUrl"`
		AccountStatus     int64    `json:"accountStatus"`
		Gender            int64    `json:"gender"`
		City              int64    `json:"city"`
		Birthday          int64    `json:"birthday"`
		UserId            int64    `json:"userId"`
		UserType          int64    `json:"userType"`
		Nickname          string   `json:"nickname"`
		Signature         string   `json:"signature"`
		Description       string   `json:"description"`
		DetailDescription string   `json:"detailDescription"`
		AvatarImgId       int64    `json:"avatarImgId"`
		BackgroundImgId   int64    `json:"backgroundImgId"`
		BackgroundUrl     string   `json:"backgroundUrl"`
		Authority         int64    `json:"authority"`
		Mutual            bool     `json:"mutual"`
		ExpertTags        []string `json:"expertTags"`
		Experts           *struct {
			Field1 string `json:"2"`
		} `json:"experts"`
		DjStatus            int64       `json:"djStatus"`
		VipType             int64       `json:"vipType"`
		RemarkName          interface{} `json:"remarkName"`
		AuthenticationTypes int64       `json:"authenticationTypes"`
		AvatarDetail        interface{} `json:"avatarDetail"`
		BackgroundImgIdStr  string      `json:"backgroundImgIdStr"`
		AvatarImgIdStr      string      `json:"avatarImgIdStr"`
		Anchor              bool        `json:"anchor"`
		AvatarImgIdStr1     string      `json:"avatarImgId_str,omitempty"`
	} `json:"creator"`
	Artists            interface{} `json:"artists"`
	Tracks             interface{} `json:"tracks"`
	Top                bool        `json:"top"`
	UpdateFrequency    *string     `json:"updateFrequency"`
	BackgroundCoverId  int64       `json:"backgroundCoverId"`
	BackgroundCoverUrl *string     `json:"backgroundCoverUrl"`
	TitleImage         int64       `json:"titleImage"`
	TitleImageUrl      *string     `json:"titleImageUrl"`
	EnglishTitle       *string     `json:"englishTitle"`
	OpRecommend        bool        `json:"opRecommend"`
	RecommendInfo      *struct {
		Alg     string `json:"alg"`
		LogInfo string `json:"logInfo"`
	} `json:"recommendInfo"`
	SubscribedCount       int64       `json:"subscribedCount"`
	CloudTrackCount       int64       `json:"cloudTrackCount"`
	UserId                int64       `json:"userId"`
	TotalDuration         int64       `json:"totalDuration"`
	CoverImgId            int64       `json:"coverImgId"`
	Privacy               int64       `json:"privacy"`
	TrackUpdateTime       int64       `json:"trackUpdateTime"`
	TrackCount            int64       `json:"trackCount"`
	UpdateTime            int64       `json:"updateTime"`
	CommentThreadId       string      `json:"commentThreadId"`
	CoverImgUrl           string      `json:"coverImgUrl"`
	SpecialType           int64       `json:"specialType"`
	Anonimous             bool        `json:"anonimous"`
	CreateTime            int64       `json:"createTime"`
	HighQuality           bool        `json:"highQuality"`
	NewImported           bool        `json:"newImported"`
	TrackNumberUpdateTime int64       `json:"trackNumberUpdateTime"`
	PlayCount             int64       `json:"playCount"`
	AdType                int64       `json:"adType"`
	Description           *string     `json:"description"`
	Tags                  []string    `json:"tags"`
	Ordered               bool        `json:"ordered"`
	Status                int64       `json:"status"`
	Name                  string      `json:"name"`
	Id                    int64       `json:"id"`
	CoverImgIdStr         *string     `json:"coverImgId_str"`
	SharedUsers           interface{} `json:"sharedUsers"`
	ShareStatus           interface{} `json:"shareStatus"`
	Copied                bool        `json:"copied"`
}

type QrcodeCheckReq

type QrcodeCheckReq struct {
	Key  string `json:"key"`  // QrcodeCreateKey()返回值codekey
	Type int64  `json:"type"` // 目前传3 weapi中好像传1
}

type QrcodeCheckResp

type QrcodeCheckResp struct {
	types.RespCommon[any]
}

type QrcodeCreateKeyReq

type QrcodeCreateKeyReq struct {
	types.ReqCommon
	Type int64 `json:"type"`
}

type QrcodeCreateKeyResp

type QrcodeCreateKeyResp struct {
	types.RespCommon[any]
	UniKey string `json:"unikey"`
}

type QrcodeGenerateReq

type QrcodeGenerateReq struct {
	CodeKey string
}

type QrcodeGenerateResp

type QrcodeGenerateResp struct {
	types.RespCommon[any]
	Qrcode      []byte //
	QrcodePrint string
}

type RefreshTokenReq

type RefreshTokenReq struct {
}

type RefreshTokenResp

type RefreshTokenResp struct {
	types.RespCommon[any]
}

type V3SongDetailReq

type V3SongDetailReq struct {
	C []V3SongDetailReqList `json:"c"`
}

type V3SongDetailReqList

type V3SongDetailReqList struct {
	Id string `json:"id"`
	V  int64  `json:"v"`
}

type V3SongDetailResp

type V3SongDetailResp struct {
	types.RespCommon[any]
	Songs      []V3SongDetailRespSongs      `json:"songs"`
	Privileges []V3SongDetailRespPrivileges `json:"privileges"`
}

V3SongDetailResp see: https://github.com/Binaryify/NeteaseCloudMusicApi/issues/1121#issuecomment-774438040 name: String, 歌曲标题 id: u64, 歌曲ID pst: 0,功能未知 t: enum,

0: 一般类型
1: 通过云盘上传的音乐,网易云不存在公开对应
  如果没有权限将不可用,除了歌曲长度以外大部分信息都为null。
  可以通过 `/api/v1/playlist/manipulate/tracks` 接口添加到播放列表。
  如果添加到“我喜欢的音乐”,则仅自己可见,除了长度意外各种信息均为未知,且无法播放。
  如果添加到一般播放列表,虽然返回code 200,但是并没有效果。
  网页端打开会看到404画面。
  属于这种歌曲的例子: https://music.163.com/song/1345937107
2: 通过云盘上传的音乐,网易云存在公开对应
  如果没有权限则只能看到信息,但无法直接获取到文件。
  可以通过 `/api/v1/playlist/manipulate/tracks` 接口添加到播放列表。
  如果添加到“我喜欢的音乐”,则仅自己可见,且无法播放。
  如果添加到一般播放列表,则自己会看到显示“云盘文件”,且云盘会多出其对应的网易云公开歌曲。其他人看到的是其对应的网易云公开歌曲。
  网页端打开会看到404画面。
  属于这种歌曲的例子: https://music.163.com/song/435005015

ar: Vec<Artist>, 歌手列表 alia: Vec<String>,

别名列表,第一个别名会被显示作副标题
例子: https://music.163.com/song/536623501

pop: 小数,常取[0.0, 100.0]中离散的几个数值, 表示歌曲热度 st: 0: 功能未知 rt: Option<String>, None、空白字串、或者类似`600902000007902089`的字符串,功能未知 fee: enum,

0: 免费
1: 2元购买单曲
4: 购买专辑
8: 低音质免费

v: u64, 常为[1, ?]任意数字, 功能未知 crbt: Option<String>, None或字符串表示的十六进制,功能未知 cf: Option<String>, 空白字串或者None,功能未知 al: Album, 专辑,如果是DJ节目(dj_type != 0)或者无专辑信息(single == 1),则专辑id为0 dt: u64, 功能未知 h: Option<Quality>, 高质量文件信息 m: Option<Quality>, 中质量文件信息 l: Option<Quality>, 低质量文件信息 a: Option<?>, 常为None, 功能未知 cd: Option<String>, None或如"04", "1/2", "3", "null"的字符串,表示歌曲属于专辑中第几张CD,对应音频文件的Tag no: u32, 表示歌曲属于CD中第几曲,0表示没有这个字段,对应音频文件的Tag rtUrl: Option<String(?)>, 常为None, 功能未知 rtUrls: Vec<String(?)>, 常为空列表, 功能未知 dj_id: u64,

0: 不是DJ节目
其他:是DJ节目,表示DJ ID

copyright: u32, 0, 1, 2: 功能未知 s_id: u64, 对于t == 2的歌曲,表示匹配到的公开版本歌曲ID mark: u64, 功能未知 originCoverType: enum

0: 未知
1: 原曲
2: 翻唱

originSongSimpleData: Option<SongSimpleData>, 对于翻唱曲,可选提供原曲简单格式的信息 single: enum,

0: 有专辑信息或者是DJ节目
1: 未知专辑

noCopyrightRcmd: Option<NoCopyrightRcmd>, None表示可以播,非空表示无版权 mv: u64, 非零表示有MV ID rtype: 常为0,功能未知 rurl: Option<String(?)>, 常为None,功能未知 mst: u32, 偶尔为0, 常为9,功能未知 cp: u64, 功能未知 publish_time: i64, 毫秒为单位的Unix时间戳

type V3SongDetailRespPrivileges

type V3SongDetailRespPrivileges struct {
	Id                 int         `json:"id"`
	Fee                int         `json:"fee"`
	Payed              int         `json:"payed"`
	St                 int         `json:"st"`
	Pl                 int         `json:"pl"`
	Dl                 int         `json:"dl"`
	Sp                 int         `json:"sp"`
	Cp                 int         `json:"cp"`
	Subp               int         `json:"subp"`
	Cs                 bool        `json:"cs"`
	Maxbr              int         `json:"maxbr"`
	Fl                 int         `json:"fl"`
	Toast              bool        `json:"toast"`
	Flag               int         `json:"flag"`
	PreSell            bool        `json:"preSell"`
	PlayMaxbr          int         `json:"playMaxbr"`
	DownloadMaxbr      int         `json:"downloadMaxbr"`
	MaxBrLevel         string      `json:"maxBrLevel"`
	PlayMaxBrLevel     string      `json:"playMaxBrLevel"`
	DownloadMaxBrLevel string      `json:"downloadMaxBrLevel"`
	PlLevel            string      `json:"plLevel"`
	DlLevel            string      `json:"dlLevel"`
	FlLevel            string      `json:"flLevel"`
	Rscl               interface{} `json:"rscl"`
	FreeTrialPrivilege struct {
		ResConsumable      bool        `json:"resConsumable"`
		UserConsumable     bool        `json:"userConsumable"`
		ListenType         interface{} `json:"listenType"`
		CannotListenReason interface{} `json:"cannotListenReason"`
		PlayReason         interface{} `json:"playReason"`
	} `json:"freeTrialPrivilege"`
	RightSource    int `json:"rightSource"`
	ChargeInfoList []struct {
		Rate          int         `json:"rate"`
		ChargeUrl     interface{} `json:"chargeUrl"`
		ChargeMessage interface{} `json:"chargeMessage"`
		ChargeType    int         `json:"chargeType"`
	} `json:"chargeInfoList"`
}

type V3SongDetailRespSongs

type V3SongDetailRespSongs struct {
	Name string `json:"name"`
	Id   int64  `json:"id"`
	Pst  int64  `json:"pst"`
	T    int64  `json:"t"`
	Ar   []struct {
		Id    int64         `json:"id"`
		Name  string        `json:"name"`
		Tns   []interface{} `json:"tns"`
		Alias []interface{} `json:"alias"`
	} `json:"ar"`
	Alia []interface{} `json:"alia"`
	Pop  float64       `json:"pop"`
	St   int64         `json:"st"`
	Rt   string        `json:"rt"`
	Fee  int64         `json:"fee"`
	V    int64         `json:"v"`
	Crbt interface{}   `json:"crbt"`
	Cf   string        `json:"cf"`
	Al   struct {
		Id     int64         `json:"id"`
		Name   string        `json:"name"`
		PicUrl string        `json:"picUrl"`
		Tns    []interface{} `json:"tns"`
		PicStr string        `json:"pic_str"`
		Pic    int64         `json:"pic"`
	} `json:"al"`
	Dt                   int64         `json:"dt"`
	H                    types.Quality `json:"h"`
	M                    types.Quality `json:"m"`
	L                    types.Quality `json:"l"`
	Sq                   types.Quality `json:"sq"`
	Hr                   interface{}   `json:"hr"`
	A                    interface{}   `json:"a"`
	Cd                   string        `json:"cd"`
	No                   int64         `json:"no"`
	RtUrl                interface{}   `json:"rtUrl"`
	Ftype                int           `json:"ftype"`
	RtUrls               []interface{} `json:"rtUrls"`
	DjId                 int           `json:"djId"`
	Copyright            int           `json:"copyright"`
	SId                  int           `json:"s_id"`
	Mark                 int           `json:"mark"`
	OriginCoverType      int           `json:"originCoverType"`
	OriginSongSimpleData interface{}   `json:"originSongSimpleData"`
	TagPicList           interface{}   `json:"tagPicList"`
	ResourceState        bool          `json:"resourceState"`
	Version              int           `json:"version"`
	SongJumpInfo         interface{}   `json:"songJumpInfo"`
	EntertainmentTags    interface{}   `json:"entertainmentTags"`
	AwardTags            interface{}   `json:"awardTags"`
	Single               int           `json:"single"`
	NoCopyrightRcmd      interface{}   `json:"noCopyrightRcmd"`
	Mv                   int           `json:"mv"`
	Rurl                 interface{}   `json:"rurl"`
	Mst                  int           `json:"mst"`
	Cp                   int           `json:"cp"`
	Rtype                int           `json:"rtype"`
	PublishTime          int           `json:"publishTime"`
}

type YunBeiSignInReq

type YunBeiSignInReq struct {
	// Type 签到类型 0:安卓(默认)3点经验 1:web/PC2点经验
	Type int64 `json:"type"`
}

type YunBeiSignInResp

type YunBeiSignInResp struct {
	// Code 错误码 -2:重复签到 200:成功(会有例外会出现“功能暂不支持”) 301:未登录
	types.RespCommon[any]
	// Point 签到获得积分奖励数量
	Point int64 `json:"point"`
}

YunBeiSignInResp 签到返回

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL