refactor: basic implementation of favorites

Signed-off-by: soxx <soxx@fenpa.ws>
This commit is contained in:
SoXX 2023-11-27 22:37:36 +01:00
parent be44a669d9
commit 322bb41a97
3 changed files with 33 additions and 30 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621"
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621/model"
_ "github.com/joho/godotenv/autoload"
"log"
"os"
@ -10,44 +11,50 @@ import (
func main() {
client := e621.NewClient(os.Getenv("API_USER"), os.Getenv("API_KEY"))
{
favorites, err := client.GetFavoritesForUser("selloo")
username := "selloo"
favoritesBuilder := client.NewFavoritesBuilder().FromUsername(username)
posts, err := favoritesBuilder.Execute()
if err != nil {
log.Panic(err)
}
posts, err := favorites.Execute()
if err != nil {
log.Panic(err)
}
log.Printf("URL of favorite post 0 is: %s", posts[0].File.URL)
log.Printf("URL of favorite post 0 for user with name %s is: %s", username, posts[0].File.URL)
}
{
favoritesBuilder, _ := client.GetFavoritesForUser("selloo")
favorites, err := client.GetNFavoritesForUser(10, favoritesBuilder)
userID := 123456
favoritesBuilder := client.NewFavoritesBuilder().FromUserID(model.UserID(userID))
posts, err := favoritesBuilder.Execute()
if err != nil {
log.Panic(err)
}
log.Println(len(favorites))
log.Printf("URL of favorite post 0 for user with id %d is: %s", userID, posts[0].File.URL)
}
{
favoritesBuilder, _ := client.GetFavoritesForUser("selloo")
favorites, err := client.GetAllFavoritesForUser(favoritesBuilder)
username := "selloo"
tags := []string{"fennec", "male", "solo"}
favoritesBuilder := client.NewFavoritesBuilder().FromUsername(username).WithTags(tags)
posts, err := favoritesBuilder.Execute()
if err != nil {
log.Panic(err)
}
log.Println(len(favorites))
log.Printf("Found %d favorites in %s users favorites", len(posts), username)
}
{
favoritesWithTags := client.GetFavoritesForUserWithTags("selloo", "fennec male solo")
posts, err := favoritesWithTags.Execute()
userID := 123456
tags := []string{"fennec", "male", "solo"}
limit := 5
favoritesBuilder := client.NewFavoritesBuilder().FromUserID(model.UserID(userID)).WithTags(tags).Limit(limit)
posts, err := favoritesBuilder.Execute()
if err != nil {
log.Panic(err)
}
log.Printf("URL of favorite post 0 with tags is: %s", posts[0].File.URL)
log.Printf("returning %d posts with tags %s for user with id %d", len(posts), tags, userID)
}
}

View File

@ -82,6 +82,8 @@ func (g getFavorites) Execute() ([]model.Post, error) {
if g.tags != "" {
// TODO: implement with tags (channels)
} else {
return basicFavoritesBuilder.Execute()
}
return userFavorites, err

View File

@ -1,23 +1,12 @@
package e621
import (
"bytes"
"compress/gzip"
"encoding/csv"
"fmt"
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621/builder/basic"
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621/builder"
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621/model"
"git.dragse.it/anthrove/e621-sdk-go/pkg/e621/utils"
"github.com/gocarina/gocsv"
_ "github.com/joho/godotenv/autoload"
"golang.org/x/time/rate"
"log"
"math"
"net/http"
"regexp"
"strconv"
"strings"
"time"
)
// Client is the main client for interacting with the e621 API.
@ -40,7 +29,11 @@ func NewClient(username string, apiKey string) Client {
}
}
// GetUserBuilder returns a UserBuilder instance for creating and executing requests to retrieve user information from the e621 API.
func (c *Client) NewFavoritesBuilder() builder.FavoritesBuilder {
return builder.NewGetFavoritesBuilder(c.RequestContext)
}
/*// GetUserBuilder returns a UserBuilder instance for creating and executing requests to retrieve user information from the e621 API.
//
// Returns:
// - builder.UserBuilder: An instance of the UserBuilder.
@ -376,3 +369,4 @@ func (c *Client) GetLatestPostsDBExportDataAsStruct() ([]*model.Post, error) {
return post, nil
}
*/