imdb2torrent

package
v0.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2021 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultIbitClientOpts = IbitClientOptions{
	BaseURL:  "https://ibit.am",
	Timeout:  5 * time.Second,
	CacheAge: 24 * time.Hour,
}
View Source
var DefaultLeetxClientOpts = LeetxClientOptions{
	BaseURL:  "https://1337x.to",
	Timeout:  5 * time.Second,
	CacheAge: 24 * time.Hour,
}
View Source
var DefaultRARBGclientOpts = RARBGclientOptions{
	BaseURL:  "https://torrentapi.org",
	Timeout:  5 * time.Second,
	CacheAge: 24 * time.Hour,
}
View Source
var DefaultTPBclientOpts = TPBclientOptions{
	BaseURL:  "https://apibay.org",
	Timeout:  5 * time.Second,
	CacheAge: 24 * time.Hour,
}
View Source
var DefaultYTSclientOpts = YTSclientOptions{
	BaseURL:  "https://yts.mx",
	Timeout:  5 * time.Second,
	CacheAge: 24 * time.Hour,
}

Functions

func NewIbitClient added in v0.7.0

func NewIbitClient(opts IbitClientOptions, cache Cache, logger *zap.Logger, logFoundTorrents bool) *ibitClient

func NewLeetxClient added in v0.7.0

func NewLeetxClient(opts LeetxClientOptions, cache Cache, metaGetter MetaGetter, logger *zap.Logger, logFoundTorrents bool) *leetxClient

func NewRARBGclient added in v0.9.0

func NewRARBGclient(opts RARBGclientOptions, cache Cache, logger *zap.Logger, logFoundTorrents bool) *rarbgClient

func NewTPBclient added in v0.7.0

func NewTPBclient(opts TPBclientOptions, cache Cache, metaGetter MetaGetter, logger *zap.Logger, logFoundTorrents bool) (*tpbClient, error)

func NewYTSclient added in v0.7.0

func NewYTSclient(opts YTSclientOptions, cache Cache, logger *zap.Logger, logFoundTorrents bool) *ytsClient

Types

type Cache added in v0.7.0

type Cache interface {
	Set(key string, results []Result) error
	Get(key string) ([]Result, time.Time, bool, error)
}

Cache is the interface that the imdb2torrent clients use for caching results. A package user must pass an implementation of this interface. Usually you create a simple wrapper around an existing cache package. An example implementation is the InMemoryCache in this package.

type CacheItem added in v0.7.0

type CacheItem struct {
	Results []Result
	Created time.Time
}

CacheItem combines Result objects and a creation time in a single struct. This can be useful for implementing the Cache interface, but is not necessarily required. See the InMemoryCache example implementation of the Cache interface for its usage.

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(siteClients map[string]MagnetSearcher, timeout time.Duration, logger *zap.Logger) *Client

func (*Client) FindMovie added in v0.11.0

func (c *Client) FindMovie(ctx context.Context, imdbID string) ([]Result, error)

FindMovie tries to find magnet URLs for the movie identified by the given IMDb ID. It only returns 720p, 1080p, 1080p 10bit, 2160p and 2160p 10bit videos. It caches results once they're found. It can return an empty slice and no error if no actual error occurred (for example if torrents where found but no >=720p videos).

func (*Client) FindTVShow added in v0.11.0

func (c *Client) FindTVShow(ctx context.Context, imdbID string, season, episode int) ([]Result, error)

FindTVShow tries to find magnet URLs for the TV show identified by the given IMDb ID + season + episode. It only returns 720p, 1080p, 1080p 10bit, 2160p and 2160p 10bit videos. It caches results once they're found. It can return an empty slice and no error if no actual error occurred (for example if torrents where found but no >=720p videos).

func (*Client) GetMagnetSearchers added in v0.7.0

func (c *Client) GetMagnetSearchers() map[string]MagnetSearcher

type IbitClientOptions added in v0.7.0

type IbitClientOptions struct {
	BaseURL  string
	Timeout  time.Duration
	CacheAge time.Duration
}

func NewIbitClientOpts added in v0.7.0

func NewIbitClientOpts(baseURL string, timeout, cacheAge time.Duration) IbitClientOptions

type InMemoryCache added in v0.7.0

type InMemoryCache struct {
	// contains filtered or unexported fields
}

InMemoryCache is an example implementation of the Cache interface. It doesn't persist its data, so it's not suited for production use of the imdb2torrent package.

func NewInMemoryCache added in v0.8.0

func NewInMemoryCache() *InMemoryCache

NewInMemoryCache creates a new InMemoryCache.

func (*InMemoryCache) Get added in v0.7.0

func (c *InMemoryCache) Get(key string) ([]Result, time.Time, bool, error)

Get returns Result objects and the time they were cached from the cache. The boolean return value signals if the value was found in the cache.

func (*InMemoryCache) Set added in v0.7.0

func (c *InMemoryCache) Set(key string, results []Result) error

Set stores Result objects and the current time in the cache.

type LeetxClientOptions added in v0.7.0

type LeetxClientOptions struct {
	BaseURL  string
	Timeout  time.Duration
	CacheAge time.Duration
}

func NewLeetxClientOpts added in v0.7.0

func NewLeetxClientOpts(baseURL string, timeout, cacheAge time.Duration) LeetxClientOptions

type MagnetSearcher added in v0.7.0

type MagnetSearcher interface {
	FindMovie(ctx context.Context, imdbID string) ([]Result, error)
	FindTVShow(ctx context.Context, imdbID string, season, episode int) ([]Result, error)
	IsSlow() bool
}

type Meta added in v0.11.0

type Meta struct {
	Title string
	Year  int
}

type MetaGetter added in v0.11.0

type MetaGetter interface {
	GetMovieSimple(ctx context.Context, imdbID string) (Meta, error)
	GetTVShowSimple(ctx context.Context, imdbID string, season, episode int) (Meta, error)
}

type RARBGclientOptions added in v0.9.0

type RARBGclientOptions struct {
	BaseURL  string
	Timeout  time.Duration
	CacheAge time.Duration
}

func NewRARBGclientOpts added in v0.9.0

func NewRARBGclientOpts(baseURL string, timeout, cacheAge time.Duration) RARBGclientOptions

type Result

type Result struct {
	// Movie title, e.g. "Big Buck Bunny"
	Title string
	// Video resolution and source, e.g. "720p" or "720p (web)"
	Quality string
	// Torrent info_hash
	InfoHash string
	// MagnetURL, usually containing the info_hash, torrent name and a list of torrent trackers
	MagnetURL string
}

type TPBclientOptions added in v0.7.0

type TPBclientOptions struct {
	BaseURL        string
	SocksProxyAddr string
	Timeout        time.Duration
	CacheAge       time.Duration
}

func NewTPBclientOpts added in v0.7.0

func NewTPBclientOpts(baseURL, socksProxyAddr string, timeout, cacheAge time.Duration) TPBclientOptions

type YTSclientOptions added in v0.7.0

type YTSclientOptions struct {
	BaseURL  string
	Timeout  time.Duration
	CacheAge time.Duration
}

func NewYTSclientOpts added in v0.7.0

func NewYTSclientOpts(baseURL string, timeout, cacheAge time.Duration) YTSclientOptions

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL