Documentation
¶
Index ¶
- Constants
- func DecryptEp(data string) string
- func DecryptFileId(data string) string
- func DecryptFileName(send int, s string) string
- func DecryptUrlParams(s string) (sign string, buyKey, token, timestamp int)
- func DestroyJavaVM() error
- func GetAlbumInfo(albumID int) (title string, audioCount, pageCount int, err error)
- func HttpGet(url string, userAgent int) (*http.Response, error)
- func HttpGetByCookie(url, cookie string, userAgent int) (*http.Response, error)
- func InitJavaVM(jvmDlPath, jarPath string)
- type AudioInfo
- type AudioInfoMobile
- type ChargeTrackInfo
- type Playlist
- type QRCode
- type QRCodeStatus
- type TrackInfo
- type TrackList
- type UserInfo
- type VipAudioInfo
- type Xmly
Constants ¶
const ( UserAgentPC = "ting_v6.7.3_c5(CFNetwork, iOS 13.7, iPhone12,5)" UserAgentAndroid = "ting_6.3.60(sdk,Android16)" )
const ( PC = 1 << iota Android )
Variables ¶
This section is empty.
Functions ¶
func DecryptUrlParams ¶
DecryptUrlParams 解密URL参数
func GetAlbumInfo ¶
GetAlbumInfo 获取专辑信息
Types ¶
type AudioInfo ¶
type AudioInfo struct {
TrackID int `json:"trackId"`
TrackRecordID int `json:"trackRecordId"`
UID int `json:"uid"`
PlayURL64 string `json:"playUrl64"` //mp3 64kbps
PlayURL32 string `json:"playUrl32"` //mp3 32kbps
PlayPathHq string `json:"playPathHq"`
PlayPathAacv164 string `json:"playPathAacv164"` //m4a 64kbps
PlayPathAacv224 string `json:"playPathAacv224"` //m4a 24kbps
Title string `json:"title"`
Duration int `json:"duration"`
AlbumID int `json:"albumId"`
AlbumTitle string `json:"albumTitle"`
AlbumImage string `json:"albumImage"`
IsPaid bool `json:"isPaid"`
IsFree bool `json:"isFree"`
IsVideo bool `json:"isVideo"`
IsDraft bool `json:"isDraft"`
IsRichAudio bool `json:"isRichAudio"`
IsAuthorized bool `json:"isAuthorized"`
PriceTypeID int `json:"priceTypeId"`
PriceTypeEnum int `json:"priceTypeEnum"`
Type int `json:"type"`
RelatedID int `json:"relatedId"`
OrderNo int `json:"orderNo"`
VipFirstStatus int `json:"vipFirstStatus"`
PaidType int `json:"paidType"`
}
AudioInfo Mobile接口的音频信息
func GetAllAudioInfo ¶
GetAllAudioInfo 获取所有音频信息
func GetAudioInfo ¶
GetAudioInfo 获取音频信息
type AudioInfoMobile ¶
type AudioInfoMobile struct {
Msg string `json:"msg"`
Ret int `json:"ret"`
Data struct {
List []struct {
TrackID int `json:"trackId"`
TrackRecordID int `json:"trackRecordId"`
UID int `json:"uid"`
PlayURL64 string `json:"playUrl64"`
PlayURL32 string `json:"playUrl32"`
PlayPathHq string `json:"playPathHq"`
PlayPathAacv164 string `json:"playPathAacv164"`
PlayPathAacv224 string `json:"playPathAacv224"`
Title string `json:"title"`
Duration int `json:"duration"`
AlbumID int `json:"albumId"`
IsPaid bool `json:"isPaid"`
IsFree bool `json:"isFree"`
IsVideo bool `json:"isVideo"`
IsDraft bool `json:"isDraft"`
IsRichAudio bool `json:"isRichAudio"`
IsAuthorized bool `json:"isAuthorized"`
Price float64 `json:"price"`
DiscountedPrice float64 `json:"discountedPrice"`
PriceTypeID int `json:"priceTypeId"`
SampleDuration int `json:"sampleDuration"`
PriceTypeEnum int `json:"priceTypeEnum"`
DisplayPrice string `json:"displayPrice"`
DisplayDiscountedPrice string `json:"displayDiscountedPrice"`
VipPrice float64 `json:"vipPrice"`
DisplayVipPrice string `json:"displayVipPrice"`
Type int `json:"type"`
RelatedID int `json:"relatedId"`
OrderNo int `json:"orderNo"`
IsHoldCopyright bool `json:"isHoldCopyright"`
VipFirstStatus int `json:"vipFirstStatus"`
PaidType int `json:"paidType"`
IsSample bool `json:"isSample"`
ProcessState int `json:"processState"`
CreatedAt int64 `json:"createdAt"`
CoverSmall string `json:"coverSmall"`
CoverMiddle string `json:"coverMiddle"`
CoverLarge string `json:"coverLarge"`
Nickname string `json:"nickname"`
SmallLogo string `json:"smallLogo"`
UserSource int `json:"userSource"`
OpType int `json:"opType"`
IsPublic bool `json:"isPublic"`
Likes int `json:"likes"`
Playtimes int `json:"playtimes"`
Comments int `json:"comments"`
Shares int `json:"shares"`
Status int `json:"status"`
ExpireTime int64 `json:"expireTime"`
IsTrailer bool `json:"isTrailer"`
} `json:"list"`
PageID int `json:"pageId"`
PageSize int `json:"pageSize"`
MaxPageID int `json:"maxPageId"`
TotalCount int `json:"totalCount"`
} `json:"data"`
}
AudioInfoMobile Mobile接口
type ChargeTrackInfo ¶
type ChargeTrackInfo struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
TrackID int `json:"trackId"`
UID int `json:"uid"`
AlbumID int `json:"albumId"`
Title string `json:"title"`
Domain string `json:"domain"`
TotalLength int `json:"totalLength"`
SampleDuration int `json:"sampleDuration"`
SampleLength int `json:"sampleLength"`
IsAuthorized bool `json:"isAuthorized"`
APIVersion string `json:"apiVersion"`
Seed int `json:"seed"`
FileID string `json:"fileId"`
BuyKey string `json:"buyKey"`
Duration int `json:"duration"`
Ep string `json:"ep"`
HighestQualityLevel int `json:"highestQualityLevel"`
DownloadQualityLevel int `json:"downloadQualityLevel"`
}
VipTrackInfo VIP音频信息(MobileAPI)
需使用 Java unidbg库 解密音频URL unidbg: https://github.com/zhkl0228/unidbg
func GetChargeTrackInfo ¶
func GetChargeTrackInfo(trackID int, cookie string) (info *ChargeTrackInfo, err error)
GetChargeTrackInfo 获取付费音频信息(Android API)
func (*ChargeTrackInfo) DecryptAndToURL ¶
func (cti *ChargeTrackInfo) DecryptAndToURL() string
DecryptAndToURL 解密Ep与FileId并返回音频URL
type Playlist ¶
type Playlist struct {
Msg string `json:"msg"`
Ret int `json:"ret"`
MaxPageID int `json:"maxPageId"`
PageSize int `json:"pageSize"`
List []*AudioInfo `json:"list"`
PageID int `json:"pageId"`
TotalCount int `json:"totalCount"`
}
Playlist 播放列表
https://mobwsa.ximalaya.com/mobile/playlist/album/page?albumId=%d&pageId=%d
func GetAudioInfoListByPageID ¶
GetAudioInfoListByPageID 使用PageID获取音频信息列表
type QRCode ¶
type QRCode struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
QrID string `json:"qrId"`
Img string `json:"img"`
}
QRCode 二维码
type QRCodeStatus ¶
type QRCodeStatus struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
BizKey interface{} `json:"bizKey"`
UID int `json:"uid"`
Token interface{} `json:"token"`
UserType interface{} `json:"userType"`
IsFirst bool `json:"isFirst"`
ToSetPwd bool `json:"toSetPwd"`
LoginType string `json:"loginType"`
MobileMask string `json:"mobileMask"`
MobileCipher string `json:"mobileCipher"`
CaptchaInfo interface{} `json:"captchaInfo"`
Avatar interface{} `json:"avatar"`
ThirdpartyAvatar interface{} `json:"thirdpartyAvatar"`
ThirdpartyNickname interface{} `json:"thirdpartyNickname"`
SmsKey interface{} `json:"smsKey"`
ThirdpartyID interface{} `json:"thirdpartyId"`
}
QRCodeStatus 二维码状态
func CheckQRCodeStatus ¶
func CheckQRCodeStatus(qrID string) (status *QRCodeStatus, cookie string, err error)
CheckQRCodeStatus 检查二维码的状态
type TrackInfo ¶
type TrackInfo struct {
TrackID int `json:"trackId"`
TrackRecordID int `json:"trackRecordId"`
UID int `json:"uid"`
PlayURL64 string `json:"playUrl64"`
PlayURL32 string `json:"playUrl32"`
PlayPathAacv164 string `json:"playPathAacv164"`
PlayPathAacv224 string `json:"playPathAacv224"`
Title string `json:"title"`
Duration int `json:"duration"`
AlbumID int `json:"albumId"`
IsPaid bool `json:"isPaid"`
IsFree bool `json:"isFree"`
IsVideo bool `json:"isVideo"`
IsDraft bool `json:"isDraft"`
IsRichAudio bool `json:"isRichAudio"`
IsAuthorized bool `json:"isAuthorized"`
Price float64 `json:"price"`
DiscountedPrice float64 `json:"discountedPrice"`
PriceTypeID int `json:"priceTypeId"`
SampleDuration int `json:"sampleDuration"`
PriceTypeEnum int `json:"priceTypeEnum"`
DisplayPrice string `json:"displayPrice"`
DisplayDiscountedPrice string `json:"displayDiscountedPrice"`
Type int `json:"type"`
RelatedID int `json:"relatedId"`
OrderNo int `json:"orderNo"`
IsHoldCopyright bool `json:"isHoldCopyright"`
VipFirstStatus int `json:"vipFirstStatus"`
PaidType int `json:"paidType"`
IsSample bool `json:"isSample"`
ProcessState int `json:"processState"`
CreatedAt int64 `json:"createdAt"`
CoverSmall string `json:"coverSmall"`
CoverMiddle string `json:"coverMiddle"`
CoverLarge string `json:"coverLarge"`
Nickname string `json:"nickname"`
SmallLogo string `json:"smallLogo"`
UserSource int `json:"userSource"`
OpType int `json:"opType"`
IsPublic bool `json:"isPublic"`
Likes int `json:"likes"`
Playtimes int `json:"playtimes"`
Comments int `json:"comments"`
Status int `json:"status"`
IsTrailer bool `json:"isTrailer"`
}
TrackInfo 音频信息(MobileV1API)
TrackList
type TrackList ¶
type TrackList struct {
Msg string `json:"msg"`
Ret int `json:"ret"`
Data struct {
List []*TrackInfo `json:"list"`
PageID int `json:"pageId"`
PageSize int `json:"pageSize"`
MaxPageID int `json:"maxPageId"`
TotalCount int `json:"totalCount"`
} `json:"data"`
}
TrackList 音频列表(MobileV1API)
type UserInfo ¶
type UserInfo struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
Data struct {
UID int `json:"uid"`
RealUID int `json:"realUid"`
Nickname string `json:"nickname"`
LogoPic string `json:"logoPic"`
IsLoginBan bool `json:"isLoginBan"`
IsVerified bool `json:"isVerified"`
Ptitle interface{} `json:"ptitle"`
Mobile string `json:"mobile"`
IsRobot bool `json:"isRobot"`
VerifyType int `json:"verifyType"`
IsVip bool `json:"isVip"`
VipExpireTime int `json:"vipExpireTime"`
AnchorGrade int `json:"anchorGrade"`
UserGrade int `json:"userGrade"`
UserTitle interface{} `json:"userTitle"`
LogoType int `json:"logoType"`
} `json:"data"`
}
UserInfo 用户信息
type VipAudioInfo ¶
type VipAudioInfo struct {
Ret int `json:"ret"`
Msg string `json:"msg"`
TrackID int `json:"trackId"`
UID int `json:"uid"`
AlbumID int `json:"albumId"`
Title string `json:"title"`
Domain string `json:"domain"`
TotalLength int `json:"totalLength"`
SampleDuration int `json:"sampleDuration"`
SampleLength int `json:"sampleLength"`
IsAuthorized bool `json:"isAuthorized"`
APIVersion string `json:"apiVersion"`
Seed int `json:"seed"`
FileID string `json:"fileId"`
BuyKey string `json:"buyKey"`
Duration int `json:"duration"`
Ep string `json:"ep"`
HighestQualityLevel int `json:"highestQualityLevel"`
DownloadQualityLevel int `json:"downloadQualityLevel"`
AuthorizedType int `json:"authorizedType"`
}
VipAudioInfo VIP音频信息(WebAPI)
需使用 DecryptFileName(send, fileId) 与 DecryptUrlParams(ep) 解密音频URL