mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 11:16:37 +08:00
65d1ad5ae5
优化番号处理逻辑,添加对MetaTube的支持
87 lines
1.9 KiB
Go
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"
|
|
}
|