Compare commits
No commits in common. '4c167c5ba76ceb3fa71887d2eeee0c8408195657' and '48fe506f8d143a409cd7ce8d24f6673015444754' have entirely different histories.
4c167c5ba7
...
48fe506f8d
5 changed files with 171 additions and 210 deletions
@ -1,100 +0,0 @@
@@ -1,100 +0,0 @@
|
||||
package db |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"log" |
||||
"ssender/internal/models" |
||||
|
||||
"github.com/boltdb/bolt" |
||||
) |
||||
|
||||
func InitDb(rss models.Rss2, dbpath string) error { |
||||
log.Println("Initialize DB") |
||||
db, err := bolt.Open(dbpath, 0600, nil) |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
defer db.Close() |
||||
|
||||
err = db.Update(func(tx *bolt.Tx) error { |
||||
b, err := tx.CreateBucketIfNotExists([]byte("rss")) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
for _, v := range rss.ItemList { |
||||
encoded, err := json.Marshal(v) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
err = b.Put([]byte(v.Link), encoded) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
} |
||||
return nil |
||||
}) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func FindItems(rss models.Rss2, dbpath string) (*models.SendItems, error) { |
||||
var sendItems models.SendItems |
||||
db, err := bolt.Open(dbpath, 0600, nil) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
defer db.Close() |
||||
|
||||
for _, v := range rss.ItemList { |
||||
err = db.View(func(tx *bolt.Tx) error { |
||||
// Assume bucket exists and has keys
|
||||
b := tx.Bucket([]byte("rss")) |
||||
c := b.Cursor() |
||||
flag := false |
||||
for key, _ := c.First(); key != nil; key, _ = c.Next() { |
||||
if v.Link == string(key) { |
||||
flag = true |
||||
break |
||||
} |
||||
} |
||||
if flag { |
||||
sendItems.ItemList = append(sendItems.ItemList, v) |
||||
} |
||||
return nil |
||||
}) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
} |
||||
return &sendItems, nil |
||||
} |
||||
|
||||
func UpdateDb(dbpath string, senditems *models.SendItems) error { |
||||
log.Println("Update DB") |
||||
db, err := bolt.Open(dbpath, 0600, nil) |
||||
if err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
defer db.Close() |
||||
|
||||
err = db.Update(func(tx *bolt.Tx) error { |
||||
b := tx.Bucket([]byte("rss")) |
||||
for _, v := range senditems.ItemList { |
||||
encoded, err := json.Marshal(v) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
err = b.Put([]byte(v.Link), encoded) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
} |
||||
return nil |
||||
}) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
return nil |
||||
} |
||||
@ -1,27 +0,0 @@
@@ -1,27 +0,0 @@
|
||||
package rss |
||||
|
||||
import ( |
||||
"encoding/xml" |
||||
"os" |
||||
"ssender/internal/models" |
||||
) |
||||
|
||||
func NewRSS(rssPath string) (*models.Rss2, error) { |
||||
rss := &models.Rss2{} |
||||
|
||||
// Open rss2 file
|
||||
file, err := os.Open(rssPath) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
defer file.Close() |
||||
|
||||
d := xml.NewDecoder(file) |
||||
|
||||
// Start RSS decoding from file
|
||||
if err := d.Decode(&rss); err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
return rss, nil |
||||
} |
||||
@ -1,48 +0,0 @@
@@ -1,48 +0,0 @@
|
||||
package send |
||||
|
||||
import ( |
||||
"log" |
||||
"ssender/internal/models" |
||||
|
||||
"github.com/SevereCloud/vksdk/v2/api" |
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" |
||||
) |
||||
|
||||
func RunSend(senditems *models.SendItems, config models.Config) error { |
||||
for _, v := range senditems.ItemList { |
||||
if config.Telegram.Send { |
||||
log.Println("Send to telegram") |
||||
bot, err := tgbotapi.NewBotAPI(config.Telegram.Token) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
bot.Debug = config.Telegram.SendDebug |
||||
|
||||
// s := "<b>" + string(v.Title) + "</b>\n" + html.UnescapeString(string(v.Description)) +
|
||||
// "\nhttps://t.me/iv?url=" + v.Link + "&rhash=da76512d0ff2a2" +
|
||||
// "\n\nСсылка на пост: " + v.Link
|
||||
msg := tgbotapi.NewMessage(config.Telegram.ChatId, v.Link) |
||||
msg.ParseMode = "Html" |
||||
_, err = bot.Send(msg) |
||||
if err != nil { |
||||
return err |
||||
|
||||
} |
||||
log.Println("Sended to telegram") |
||||
} |
||||
if config.VK.Send { |
||||
log.Println("Send to VK") |
||||
vk := api.NewVK(config.VK.Token) |
||||
_, err := vk.WallPost(api.Params{ |
||||
"owner_id": config.VK.OwnerId, |
||||
"attachments": v.Link, |
||||
}) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
log.Println("Sended to VK") |
||||
} |
||||
|
||||
} |
||||
return nil |
||||
} |
||||
Loading…
Reference in new issue