SocialDragon/snapchat/main.go
2020-01-15 23:10:20 +01:00

66 lines
1.6 KiB
Go

package snapchat
import (
"log"
"git.1750studios.com/AniNite/SocialDragon/database"
)
var jobRunning bool
// LoadNewSnaps loads all new snaps from snapchat
func LoadNewSnaps() {
if jobRunning {
return
}
jobRunning = true
log.Print("Loading new Snaps...")
cons, err := GetConversations()
if err != nil {
log.Printf("Can't load snaps: %+v", err)
return
}
for _, con := range cons.ConversationsResponse {
for _, snap := range con.PendingReceivedSnaps {
var count int
if database.Db.Model(database.Item{}).Where("original_id = ?", snap.ID).Count(&count); count > 0 {
break
}
var US database.User
if database.Db.Model(database.User{}).Where("name = ? AND service = ?", snap.Username, database.Snapchat).First(&US).Count(&count); count == 0 {
US.DisplayName = snap.Username
US.Name = snap.Username
US.Service = database.Snapchat
US.Blocked = false
database.Db.Create(&US)
}
log.Printf("Found new Snap %s from %s", snap.ID, snap.Username)
uname, err := GetBlob(snap)
if err != nil {
log.Printf("Can't load snap %s: %+v", snap.ID, err)
return
}
log.Printf("Loaded snap %s, location %s!", snap.ID, uname)
var IT database.Item
IT.UserID = US.ID
IT.IsVideo = snap.Movie != 0
IT.OriginalID = snap.ID
IT.Path = uname
IT.Service = database.Snapchat
if US.Blocked {
IT.State = database.Rejected
} else {
IT.State = database.Inbox
}
database.Db.Create(&IT)
err = MarkAsSeen(snap, false)
if err != nil {
log.Printf("Could not mark snap %s as seen: %+v", snap.ID, err)
return
}
}
}
log.Printf("Finished looking for new snaps.")
jobRunning = false
}