mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-05 04:56:37 +08:00
refactor: split modules and harden scraping workflows
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/ShukeBta/MediaStationGo/internal/model"
|
||||
)
|
||||
|
||||
func (s *SubscriptionService) notifySubscriptionHit(sub *model.Subscription, queued int, resources []string) {
|
||||
if s == nil || s.notify == nil || sub == nil || queued <= 0 {
|
||||
return
|
||||
}
|
||||
body := fmt.Sprintf("订阅:%s\n新增资源:%d", sub.Name, queued)
|
||||
if len(resources) > 0 {
|
||||
body += "\n资源:\n- " + strings.Join(resources, "\n- ")
|
||||
}
|
||||
go func() {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
defer cancel()
|
||||
data := map[string]interface{}{}
|
||||
if strings.TrimSpace(sub.PosterURL) != "" {
|
||||
data["poster_url"] = sub.PosterURL
|
||||
}
|
||||
if strings.TrimSpace(sub.BackdropURL) != "" {
|
||||
data["backdrop_url"] = sub.BackdropURL
|
||||
}
|
||||
if strings.TrimSpace(sub.MediaType) != "" {
|
||||
data["media_type"] = sub.MediaType
|
||||
}
|
||||
if strings.TrimSpace(sub.MediaCategory) != "" {
|
||||
data["media_category"] = sub.MediaCategory
|
||||
}
|
||||
// 补充媒体通知模板(formatTelegramMediaNotification)所需字段:片名 / 原名 /
|
||||
// 语言 / 年份 / 评分 / 类型 / 简介 / 外链 / 资源标题(供模板提取季集 + 版本)。
|
||||
// 仅填现成可用的,缺失项模板会自动略过。
|
||||
if strings.TrimSpace(sub.Name) != "" {
|
||||
data["title"] = sub.Name
|
||||
}
|
||||
if strings.TrimSpace(sub.OriginalName) != "" {
|
||||
data["original_title"] = sub.OriginalName
|
||||
}
|
||||
if strings.TrimSpace(sub.OriginalLanguage) != "" {
|
||||
data["original_language"] = sub.OriginalLanguage
|
||||
}
|
||||
if sub.Year > 0 {
|
||||
data["year"] = sub.Year
|
||||
}
|
||||
if sub.Rating > 0 {
|
||||
data["rating"] = sub.Rating
|
||||
}
|
||||
if strings.TrimSpace(sub.Genres) != "" {
|
||||
data["genres"] = sub.Genres
|
||||
}
|
||||
if strings.TrimSpace(sub.Overview) != "" {
|
||||
data["overview"] = sub.Overview
|
||||
}
|
||||
if id := strings.TrimSpace(sub.IMDBID); id != "" {
|
||||
data["imdb_url"] = "https://www.imdb.com/title/" + id + "/"
|
||||
}
|
||||
if len(resources) > 0 {
|
||||
data["resource_title"] = resources[0]
|
||||
}
|
||||
s.notify.BroadcastEvent(ctx, NotifyEvent{
|
||||
Type: EventSubscriptionHit,
|
||||
Title: "MediaStationGo 订阅命中新资源",
|
||||
Message: body,
|
||||
Data: data,
|
||||
})
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user