Files
rss-to-feishu-next/main.go
2026-01-19 02:10:24 -06:00

58 lines
1.2 KiB
Go

package main
import (
"context"
"fmt"
"log"
"rss-to-feishu-next/internal/config"
"rss-to-feishu-next/internal/feishu"
"rss-to-feishu-next/internal/net"
"rss-to-feishu-next/internal/rss"
"rss-to-feishu-next/internal/silicon"
"strings"
lark "github.com/larksuite/oapi-sdk-go/v3"
)
func main() {
cfg, err := config.LoadConfig()
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
netCli := net.NewClient()
rssCli := rss.NewClient(netCli)
siliconCli := silicon.NewClient(netCli)
larkCli := lark.NewClient(cfg.Feishu.AppID, cfg.Feishu.AppSecret)
feishuCli := feishu.NewClient(larkCli)
messages, err := rssCli.FetchAllRss(ctx)
if err != nil {
panic(err)
}
for i := 0; i < len(messages); i++ {
prompt := cfg.Subscribes[i].Prompt + "\n" + messages[i].Content
model := cfg.Subscribes[i].Model
resp, err := siliconCli.FetchModelResponse(ctx, prompt, model)
if err != nil {
panic(err)
}
var parts []string
for _, item := range resp.Content {
parts = append(parts, item.Text)
}
allContent := strings.Join(parts, "\n")
message := fmt.Sprintf("%s\n%s\n%s", messages[i].Name, messages[i].Url, allContent)
if err := feishuCli.SendMessageToChat(ctx, message, cfg.Feishu.ChatID); err != nil {
panic(err)
}
}
}