-
Notifications
You must be signed in to change notification settings - Fork 47
/
mangadex.go
67 lines (50 loc) · 1.34 KB
/
mangadex.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package sites
import (
"fmt"
"github.com/Girbons/comics-downloader/pkg/core"
"github.com/Girbons/comics-downloader/pkg/util"
"github.com/bake/mangadex"
)
type Mangadex struct {
Client *mangadex.Client
}
// NewMangadex returns a Mangadex instance
func NewMangadex() *Mangadex {
return &Mangadex{
Client: mangadex.New(),
}
}
func (m *Mangadex) getLinks(url string) ([]string, error) {
var links []string
parts := util.TrimAndSplitURL(url)
chapterID := parts[4]
res, err := m.Client.Chapter(chapterID)
if err != nil {
return links, err
}
links = res.Images()
return links, nil
}
func (m *Mangadex) RetrieveIssueLinks(url string, all, last bool) ([]string, error) {
return []string{url}, nil
}
func (m *Mangadex) GetInfo(url string) (string, string) {
parts := util.TrimAndSplitURL(url)
chapterID := parts[4]
chapterInfo, err := m.Client.Chapter(chapterID)
if err != nil {
return "", ""
}
mangaInfo, _, err := m.Client.Manga(string(chapterInfo.MangaID))
if err != nil {
return "", ""
}
issueNumber := fmt.Sprintf("Vol %s Chapter %s, %s", chapterInfo.Volume, chapterInfo.Chapter, chapterInfo.Title)
return mangaInfo.Title, issueNumber
}
// Initialize loads links and metadata from mangadex
func (m *Mangadex) Initialize(comic *core.Comic) error {
links, err := m.getLinks(comic.URLSource)
comic.Links = links
return err
}