manganelo

package
v0.0.0-...-7641ad8 Latest Latest
Warning

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

Go to latest
Published: Nov 2, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Config = &generic.Configuration{
	Name:            "Manganelo",
	Delay:           50 * time.Millisecond,
	Parallelism:     50,
	ReverseChapters: true,
	BaseURL:         "https://ww6.manganelo.tv",
	GenerateSearchURL: func(baseUrl string, query string) string {
		query = strings.TrimSpace(query)
		query = strings.ToLower(query)
		query = url.QueryEscape(query)
		template := baseUrl + "/search/%s"
		return fmt.Sprintf(template, query)
	},
	MangaExtractor: &generic.MangaExtractor{
		Selector: ".search-story-item",
		Name: func(selection *goquery.Selection) string {
			return selection.Find("a.item-title").Text()
		},
		URL: func(selection *goquery.Selection) string {
			return selection.Find("a.item-title").AttrOr("href", "")
		},
		Cover: func(selection *goquery.Selection) string {
			return selection.Find(".item-img img").AttrOr("src", "")
		},
	},
	ChapterExtractor: &generic.ChapterExtractor{
		Selector: "li.a-h",
		Name: func(selection *goquery.Selection) string {
			name := selection.Find(".chapter-name").Text()
			if strings.HasPrefix(name, "Vol.") {
				splitted := strings.Split(name, " ")
				name = strings.Join(splitted[1:], " ")
			}
			return name
		},
		URL: func(selection *goquery.Selection) string {
			return selection.Find(".chapter-name").AttrOr("href", "")
		},
		Volume: func(selection *goquery.Selection) string {
			name := selection.Find(".chapter-name").Text()
			if strings.HasPrefix(name, "Vol.") {
				splitted := strings.Split(name, " ")
				return splitted[0]
			}
			return ""
		},
		Date: func(selection *goquery.Selection) *time.Time {
			layout := "Jan 02,06"
			publishedDate := strings.TrimSpace(selection.Find(".chapter-time").Text())
			date, err := time.Parse(layout, publishedDate)
			if err != nil {
				dateMatch := util.ReGroups(timeAgoRegex, publishedDate)
				if len(dateMatch) == 0 {
					return nil
				}
				var timeUnit time.Duration
				var timeToParse string

				if dateMatch["hours"] != "" {
					timeUnit = time.Hour
					timeToParse = dateMatch["hours"]
				} else if dateMatch["mins"] != "" {
					timeUnit = time.Minute
					timeToParse = dateMatch["mins"]
				} else {
					return nil
				}

				timeAgo, err := strconv.ParseInt(timeToParse, 10, 8)
				if err != nil {
					return nil
				}
				date = time.Now().Add(time.Duration(-timeAgo) * timeUnit)
			}
			return &date
		},
	},
	PageExtractor: &generic.PageExtractor{
		Selector: ".container-chapter-reader img",
		Name:     nil,
		URL: func(selection *goquery.Selection) string {
			return selection.AttrOr("data-src", "")
		},
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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