58 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|