Skip to content

Commit

Permalink
feat: parse multi episode like S01E01-S01E21
Browse files Browse the repository at this point in the history
  • Loading branch information
simon-ding committed Nov 15, 2024
1 parent 53cbca3 commit 45cd94f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 29 deletions.
44 changes: 17 additions & 27 deletions pkg/metadata/tv.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,38 +125,28 @@ func findEpisodes(s string) (start int, end int) {
r := rr[i]
if r == 'e' {
n, l := adjacentNumber(s, i+1)
end := i + l

if n > 0 {

if len(rr) > end+1 && rr[end+1] == '-' { //multi episodes
if len(rr) > end+2 {
if rr[end+2] == 'e' {
n1, _ := adjacentNumber(s, end+3)
if n1 > 0 {
return n, n1
}
} else {
n1, _ := adjacentNumber(s, end+2)
for j := i + l + 1; j < len(rr); j++ {
r1 := rr[j]
if r1 == ' ' || r1 == '-' {
continue
}
if r1 == 'e' {
continue
}
if r1 == 's' {
s1, l1 := adjacentNumber(s, j+1)
if s1 > 0 { //S01E01-S01E21
n1, _ := adjacentNumber(s, j+l1+2)
if n1 > 0 {
return n, n1
}
}
}
} else if len(rr) > end+2 && rr[end+1] == ' ' && rr[end+2] == '-' {
start := 0
for j := end + 3; j < len(rr); j++ {
if rr[j] == ' ' || rr[j] == 'e' {
continue
}
start = j
break
}
if start != 0 {
n1, _ := adjacentNumber(s, start)
if n1 > 0 {
return n, n1
}
n1, _ := adjacentNumber(s, j)
if n1 > 0 {
return n, n1
}
}
return n, n
Expand Down Expand Up @@ -401,7 +391,7 @@ func parseName(name string) *Info {
if !utils.IsASCII(name) {
season = 1
}
p = len(name) -1
p = len(name) - 1
}
meta.Season = season

Expand All @@ -421,7 +411,7 @@ func parseName(name string) *Info {
//}

//tv name
if utils.IsASCII(name) && p < len(name){
if utils.IsASCII(name) && p < len(name) {
meta.NameEn = name[:p]
meta.NameCn = meta.NameEn
} else {
Expand Down
4 changes: 2 additions & 2 deletions server/core/torrent.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ lo:
//log.Infof("torrent resource: %+v", r)
meta := metadata.ParseTv(r.Name)

if meta.IsSeasonPack {//try to parse episode number with description
if meta.IsSeasonPack { //try to parse episode number with description
mm := metadata.ParseTv(r.Description)
if mm.StartEpisode > 0 { //sometimes they put episode info in desc text
meta.IsSeasonPack = false
Expand Down Expand Up @@ -70,7 +70,7 @@ lo:
}

if len(param.Episodes) > 0 { //not season pack, but episode number not equal
for i := meta.StartEpisode; i < meta.EndEpisode; i++ {
for i := meta.StartEpisode; i <= meta.EndEpisode; i++ {
if !slices.Contains(param.Episodes, i) {
continue lo
}
Expand Down

0 comments on commit 45cd94f

Please sign in to comment.