Files
MeBox/internal/service/adult_scraper_config.go
T
truewhile 65d1ad5ae5 优化番号处理逻辑,添加对MetaTube的支持
优化番号处理逻辑,添加对MetaTube的支持
2026-08-21 00:06:49 +08:00

87 lines
1.9 KiB
Go

package service
import (
"context"
"net/url"
"strings"
)
func adultConfiguredBases(value string) []string {
parts := strings.FieldsFunc(value, func(r rune) bool {
switch r {
case ',', ';', '\n', '\r', '\t', ' ':
return true
default:
return false
}
})
out := make([]string, 0, len(parts))
for _, part := range parts {
part = strings.TrimSpace(part)
if part == "" {
continue
}
if !strings.HasPrefix(part, "http://") && !strings.HasPrefix(part, "https://") {
part = "https://" + part
}
out = append(out, strings.TrimRight(part, "/"))
}
return out
}
func adultSourceKind(base string) string {
u, err := url.Parse(strings.TrimSpace(base))
host := ""
if err == nil {
host = strings.ToLower(u.Hostname())
}
if host == "" {
host = strings.ToLower(base)
}
if strings.Contains(host, "javdb") {
return "javdb"
}
for _, needle := range []string{"javbus", "cdnbus", "javsee", "busjav"} {
if strings.Contains(host, needle) {
return "javbus"
}
}
return "javdb"
}
func dedupeStrings(values []string) []string {
seen := map[string]struct{}{}
out := make([]string, 0, len(values))
for _, value := range values {
value = strings.TrimSpace(value)
if value == "" {
continue
}
key := strings.ToLower(value)
if _, ok := seen[key]; ok {
continue
}
seen[key] = struct{}{}
out = append(out, value)
}
return out
}
func (p *AdultProvider) getSetting(ctx context.Context, key, fallback string) string {
if p != nil && p.repo != nil && p.repo.Setting != nil {
if val, err := p.repo.Setting.Get(ctx, key); err == nil && strings.TrimSpace(val) != "" {
return strings.TrimSpace(val)
}
}
return fallback
}
func (p *AdultProvider) getSettingBool(ctx context.Context, key string, fallback bool) bool {
val := p.getSetting(ctx, key, "")
if val == "" {
return fallback
}
val = strings.ToLower(val)
return val == "true" || val == "1" || val == "yes" || val == "on"
}