Documentation
¶
Index ¶
- func DefaultBuilders(opts BuilderOptions) []fetcher.Builder
- func NewAiccFetcher(client *reqx.Client) fetcher.Fetcher
- func NewCharacterTavernFetcher(client *reqx.Client) fetcher.Fetcher
- func NewChubAIFetcher(client *reqx.Client) fetcher.Fetcher
- func NewJannyAIFetcher(client *reqx.Client, opts JannyAIOpts) fetcher.Fetcher
- func NewMockFetcher(config MockConfig, mockData MockData) fetcher.Fetcher
- func NewNyaiMeFetcher(client *reqx.Client) fetcher.Fetcher
- func NewPephopFetcher(client *reqx.Client) fetcher.Fetcher
- func NewPygmalionFetcher(client *reqx.Client, opts PygmalionOpts) fetcher.Fetcher
- func NewWyvernChatFetcher(client *reqx.Client) fetcher.Fetcher
- type AiccBuilder
- type BaseFetcher
- func (f *BaseFetcher) BaseURLs() []fetcher.BaseURL
- func (f *BaseFetcher) CharacterID(rawCharacterID string) string
- func (f *BaseFetcher) Close()
- func (f *BaseFetcher) CreateBinder(characterID string, response string) (*fetcher.MetadataBinder, error)
- func (f *BaseFetcher) CreateBinderFromJSON(characterID string, response string, pathCharacterID ...any) (*fetcher.MetadataBinder, error)
- func (f *BaseFetcher) DirectURL(characterID string) string
- func (f *BaseFetcher) Extends(top fetcher.Fetcher)
- func (f *BaseFetcher) FetchBookResponses(metadataBinder *fetcher.MetadataBinder) (*fetcher.BookBinder, error)
- func (f *BaseFetcher) IsSourceUp() error
- func (f *BaseFetcher) MainURL() string
- func (f *BaseFetcher) NormalizeURL(characterID string) string
- func (f *BaseFetcher) SourceID() source.ID
- func (f *BaseFetcher) SourceURL() string
- type BuilderOptions
- type CharacterTavernBuilder
- type ChubAIBuilder
- type JannyAIBuilder
- type JannyAIInterceptor
- type JannyAIOpts
- type MockBuilder
- type MockConfig
- type MockData
- type NyaiMeBuilder
- type PephopBuilder
- type PygmalionBuilder
- type PygmalionOpts
- type WyvernChatBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultBuilders ¶
func DefaultBuilders(opts BuilderOptions) []fetcher.Builder
DefaultBuilders returns a list of default fetchers using the provided options
func NewAiccFetcher ¶
NewAiccFetcher create a new AICC fetcher
func NewCharacterTavernFetcher ¶
NewCharacterTavernFetcher creates a new CharacterTavern fetcher
func NewChubAIFetcher ¶
NewChubAIFetcher creates a new ChubAI fetcher
func NewJannyAIFetcher ¶
func NewJannyAIFetcher(client *reqx.Client, opts JannyAIOpts) fetcher.Fetcher
NewJannyAIFetcher creates a new JannyAI fetcher
func NewMockFetcher ¶
func NewMockFetcher(config MockConfig, mockData MockData) fetcher.Fetcher
NewMockFetcher creates a new mock fetcher
func NewNyaiMeFetcher ¶
NewNyaiMeFetcher create a new NyaiMe fetcher
func NewPephopFetcher ¶
NewPephopFetcher create a new PepHop fetcher
func NewPygmalionFetcher ¶
func NewPygmalionFetcher(client *reqx.Client, opts PygmalionOpts) fetcher.Fetcher
NewPygmalionFetcher create a new Pygmalion fetcher
Types ¶
type BaseFetcher ¶
BaseFetcher embeddable struct for creating a new fetcher
func (*BaseFetcher) BaseURLs ¶
func (f *BaseFetcher) BaseURLs() []fetcher.BaseURL
BaseURLs returns the base URLs of the fetcher
func (*BaseFetcher) CharacterID ¶
func (f *BaseFetcher) CharacterID(rawCharacterID string) string
CharacterID hook for overriding the character ID NO-OP by default
func (*BaseFetcher) Close ¶
func (f *BaseFetcher) Close()
Close closes the fetcher (no-op for convenience, override if needed)
func (*BaseFetcher) CreateBinder ¶
func (f *BaseFetcher) CreateBinder(characterID string, response string) (*fetcher.MetadataBinder, error)
CreateBinder creates a MetadataBinder from the metadata response
func (*BaseFetcher) CreateBinderFromJSON ¶
func (f *BaseFetcher) CreateBinderFromJSON(characterID string, response string, pathCharacterID ...any) (*fetcher.MetadataBinder, error)
CreateBinderFromJSON parses the JSON metadata response from the source, and creates a MetadataBinder Optionally, the path to the character ID can be specified, for overriding the character ID
func (*BaseFetcher) DirectURL ¶
func (f *BaseFetcher) DirectURL(characterID string) string
DirectURL returns the direct URL for a character
func (*BaseFetcher) Extends ¶
func (f *BaseFetcher) Extends(top fetcher.Fetcher)
Extends extends the fetcher with the given fetcher
func (*BaseFetcher) FetchBookResponses ¶
func (f *BaseFetcher) FetchBookResponses(metadataBinder *fetcher.MetadataBinder) (*fetcher.BookBinder, error)
FetchBookResponses fetches the book responses from the source (no-op for convenience, override if needed)
func (*BaseFetcher) IsSourceUp ¶
func (f *BaseFetcher) IsSourceUp() error
IsSourceUp checks if the source is up
func (*BaseFetcher) MainURL ¶
func (f *BaseFetcher) MainURL() string
MainURL returns the main URL of the fetcher
func (*BaseFetcher) NormalizeURL ¶
func (f *BaseFetcher) NormalizeURL(characterID string) string
NormalizeURL returns the normalized URL for a character
func (*BaseFetcher) SourceID ¶
func (f *BaseFetcher) SourceID() source.ID
SourceID returns the source ID of the fetcher
func (*BaseFetcher) SourceURL ¶
func (f *BaseFetcher) SourceURL() string
SourceURL returns the source URL of the fetcher
type BuilderOptions ¶
type BuilderOptions struct {
PygmalionIdentityReader cred.IdentityReader
ChromePath func() string
}
BuilderOptions options for builders
type CharacterTavernBuilder ¶
type CharacterTavernBuilder struct{}
CharacterTavernBuilder builder for CharacterTavern fetcher
type JannyAIInterceptor ¶
type JannyAIInterceptor struct {
// contains filtered or unexported fields
}
JannyAIInterceptor handles cookie extraction using chromedp for JannyAI.
func NewJannyAIInterceptor ¶
func NewJannyAIInterceptor(chromePath func() string) *JannyAIInterceptor
NewJannyAIInterceptor creates a new JannyAI interceptor.
func (*JannyAIInterceptor) Apply ¶
func (i *JannyAIInterceptor) Apply(r *req.Request) *req.Request
Apply sets the cookies and user agent on the request.
func (*JannyAIInterceptor) MaxRetries ¶
func (i *JannyAIInterceptor) MaxRetries() int
MaxRetries returns the maximum number of recovery attempts.
func (*JannyAIInterceptor) Recover ¶
Recover uses chromedp to pass the Cloudflare challenge and extract cookies.
func (*JannyAIInterceptor) ShouldIntercept ¶
func (i *JannyAIInterceptor) ShouldIntercept(resp *req.Response, _ error) bool
ShouldIntercept returns true if the response indicates a Cloudflare challenge.
type JannyAIOpts ¶
type JannyAIOpts struct {
ChromePath func() string
}
JannyAIOpts JannyAI fetcher options
type MockBuilder ¶
type MockBuilder struct {
MockConfig
MockData
}
MockBuilder builder for mock fetchers
type MockConfig ¶
type MockConfig struct {
MockSourceID source.ID
MockDomain string
MockPath string
MockDirectURL string
MockAdditionalBaseURLs []fetcher.BaseURL
IsUp bool
}
MockConfig contains the configuration for the mock fetcher
type MockData ¶
type MockData struct {
Response *req.Response
ResponseError error
CardInfo *models.CardInfo
CardInfoErr error
CreatorInfo *models.CreatorInfo
CreatorErr error
CharacterCard *png.CharacterCard
CharacterCardErr error
}
MockData contains the mock data to be returned by the fetcher
type PygmalionBuilder ¶
type PygmalionBuilder PygmalionOpts
PygmalionBuilder builder for Pygmalion fetcher
type PygmalionOpts ¶
type PygmalionOpts struct {
IdentityReader cred.IdentityReader
}
PygmalionOpts options for PygmalionBuilder
type WyvernChatBuilder ¶
type WyvernChatBuilder struct{}
WyvernChatBuilder builder for WyvernChat fetcher