Skip to content

Commit

Permalink
Merge pull request #1291 from Nathaniel-Wu/master
Browse files Browse the repository at this point in the history
Updated Bilibili bangumi extractor due to an API change
  • Loading branch information
iawia002 committed Nov 6, 2023
2 parents d529cbb + ce85102 commit 154292b
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions extractors/bilibili/bilibili.go
Expand Up @@ -96,29 +96,28 @@ type bilibiliOptions struct {

func extractBangumi(url, html string, extractOption extractors.Options) ([]*extractors.Data, error) {
dataString := utils.MatchOneOf(html, `<script\s+id="__NEXT_DATA__"\s+type="application/json"\s*>(.*?)</script\s*>`)[1]
epMapString := utils.MatchOneOf(dataString, `"epMap"\s*:\s*(.+?)\s*,\s*"initEpList"`)[1]
epArrayString := utils.MatchOneOf(dataString, `"episodes"\s*:\s*(.+?)\s*,\s*"user_status"`)[1]
fullVideoIdString := utils.MatchOneOf(dataString, `"videoId"\s*:\s*"(ep|ss)(\d+)"`)
epSsString := fullVideoIdString[1] // "ep" or "ss"
videoIdString := fullVideoIdString[2]

var epMap map[string]json.RawMessage
err := json.Unmarshal([]byte(epMapString), &epMap)
var epArray []json.RawMessage
err := json.Unmarshal([]byte(epArrayString), &epArray)
if err != nil {
return nil, errors.WithStack(err)
}
var data bangumiData
for idString, jsonByte := range epMap {
for _, jsonByte := range epArray {
var epInfo bangumiEpData
err := json.Unmarshal(jsonByte, &epInfo)
if err != nil {
return nil, errors.WithStack(err)
}
epID, err := strconv.ParseInt(idString, 10, 0)
videoId, err := strconv.ParseInt(videoIdString, 10, 0)
if err != nil {
return nil, errors.WithStack(err)
}
epInfo.EpID = int(epID)
if idString == videoIdString || (epSsString == "ss" && epInfo.TitleFormat == "第1话") {
if epInfo.ID == int(videoId) || (epSsString == "ss" && epInfo.TitleFormat == "第1话") {
data.EpInfo = epInfo
}
data.EpList = append(data.EpList, epInfo)
Expand Down

0 comments on commit 154292b

Please sign in to comment.