client

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 12, 2023 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Registry []*RegInfo = make([]*RegInfo, 0)
)

Functions

func ClientExists

func ClientExists(name string) bool

func GenerateNameWithMeta

func GenerateNameWithMeta(name string, meta map[string](int64)) string

func GenerateTorrentTagFromSite

func GenerateTorrentTagFromSite(site string) string

func ParseMetaFromName

func ParseMetaFromName(fullname string) (name string, meta map[string](int64))

func PrintTorrent added in v0.1.1

func PrintTorrent(torrent *Torrent)

func PrintTorrentFiles added in v0.1.1

func PrintTorrentFiles(files []TorrentContentFile)

func PrintTorrentTrackers added in v0.1.1

func PrintTorrentTrackers(trackers []TorrentTracker)

func PrintTorrents

func PrintTorrents(torrents []Torrent, filter string)

func Register

func Register(regInfo *RegInfo)

func SelectTorrents added in v0.1.1

func SelectTorrents(clientInstance Client, category string, tag string, filter string,
	hashOrStateFilters ...string) ([]string, error)

parse torrents that meet criterion. specially, return nil slice if all torrents selected

func TorrentStateIconText

func TorrentStateIconText(torrent *Torrent) string

func XseedCheckTorrentContents

func XseedCheckTorrentContents(clientTorrentContents []TorrentContentFile, torrentContents []*goTorrentParser.File) int64

return 0 if equal; 1 if clientTorrentContents contains all files of torrentContents. return -2 if the ROOT folder(file) of two torrents are different, but all innner files are SAME. return -1 if contents of two torrents are NOT same. inputed slices of filenames MUST be lexicographic ordered.

Types

type Client

type Client interface {
	GetTorrent(infoHash string) (*Torrent, error)
	// stateFilter: _all|_active|_done, or any state value (possibly with a _ prefix)
	GetTorrents(stateFilter string, category string, showAll bool) ([]Torrent, error)
	AddTorrent(torrentContent []byte, option *TorrentOption, meta map[string](int64)) error
	ModifyTorrent(infoHash string, option *TorrentOption, meta map[string](int64)) error
	DeleteTorrents(infoHashes []string, deleteFiles bool) error
	PauseTorrents(infoHashes []string) error
	ResumeTorrents(infoHashes []string) error
	RecheckTorrents(infoHashes []string) error
	ReannounceTorrents(infoHashes []string) error
	AddTagsToTorrents(infoHashes []string, tags []string) error
	RemoveTagsFromTorrents(infoHashes []string, tags []string) error
	SetTorrentsSavePath(infoHashes []string, savePath string) error
	PauseAllTorrents() error
	ResumeAllTorrents() error
	RecheckAllTorrents() error
	ReannounceAllTorrents() error
	AddTagsToAllTorrents(tags []string) error
	RemoveTagsFromAllTorrents(tags []string) error
	SetAllTorrentsSavePath(savePath string) error
	GetTags() ([]string, error)
	CreateTags(tags ...string) error
	DeleteTags(tags ...string) error
	GetCategories() ([]string, error)
	SetTorrentsCatetory(infoHashes []string, category string) error
	SetAllTorrentsCatetory(category string) error
	TorrentRootPathExists(rootFolder string) bool
	GetTorrentContents(infoHash string) ([]TorrentContentFile, error)
	PurgeCache()
	GetStatus() (*Status, error)
	GetName() string
	GetClientConfig() *config.ClientConfigStruct
	SetConfig(variable string, value string) error
	GetConfig(variable string) (string, error)
	GetTorrentTrackers(infoHash string) ([]TorrentTracker, error)
	EditTorrentTracker(infoHash string, oldTracker string, newTracker string) error
}

func CreateClient

func CreateClient(name string) (Client, error)

type ClientCreator

type ClientCreator func(*RegInfo) (Client, error)

type RegInfo

type RegInfo struct {
	Name    string
	Creator func(string, *config.ClientConfigStruct, *config.ConfigStruct) (Client, error)
}

func Find

func Find(name string) (*RegInfo, error)

type Status

type Status struct {
	FreeSpaceOnDisk    int64 // -1 means unknown
	DownloadSpeed      int64
	UploadSpeed        int64
	DownloadSpeedLimit int64 // <= 0 means no limit
	UploadSpeedLimit   int64 // <= 0 means no limit
	NoAdd              bool  // if true, brush and other tasks will NOT add any torrents to client
}

type Torrent

type Torrent struct {
	InfoHash           string
	Name               string
	TrackerDomain      string
	Tracker            string
	State              string // simplified state: seeding|downloading|completed|paused|checking|<any others>...
	LowLevelState      string // original state value returned by bt client
	Atime              int64  // timestamp torrent added
	Ctime              int64  // timestamp torrent completed. <=0 if not completed.
	Category           string
	SavePath           string
	ContentPath        string
	Tags               []string
	Downloaded         int64
	DownloadSpeed      int64
	DownloadSpeedLimit int64 // -1 means no limit
	Uploaded           int64
	UploadSpeed        int64
	UploadedSpeedLimit int64 // -1 means no limit
	Size               int64 // size of torrent files that selected for downloading
	SizeTotal          int64 // Total size of all file in the torrent (including unselected ones)
	SizeCompleted      int64
	Seeders            int64
	Leechers           int64
	Meta               map[string](int64)
}

func QueryTorrents added in v0.1.1

func QueryTorrents(clientInstance Client, category string, tag string, filter string,
	hashOrStateFilters ...string) ([]Torrent, error)

func (*Torrent) GetSiteFromTag

func (torrent *Torrent) GetSiteFromTag() string

func (*Torrent) HasTag

func (torrent *Torrent) HasTag(tag string) bool

func (*Torrent) IsComplete

func (torrent *Torrent) IsComplete() bool

func (*Torrent) IsFull

func (torrent *Torrent) IsFull() bool

func (*Torrent) IsFullComplete

func (torrent *Torrent) IsFullComplete() bool

func (*Torrent) MatchStateFilter added in v0.1.1

func (torrent *Torrent) MatchStateFilter(stateFilter string) bool

type TorrentContentFile

type TorrentContentFile struct {
	Index    int64
	Path     string // full file path
	Size     int64
	Complete bool // true if file is fullly downloaded
}

type TorrentOption

type TorrentOption struct {
	Name               string
	Category           string
	SavePath           string
	Tags               []string
	RemoveTags         []string // used only in ModifyTorrent
	DownloadSpeedLimit int64
	UploadSpeedLimit   int64
	SkipChecking       bool
	Pause              bool
	Resume             bool // use only in ModifyTorrent, to start a paused torrent
}

type TorrentTracker added in v0.1.1

type TorrentTracker struct {
	Status string //working|notcontacted|error|updating|disabled|unknown
	Url    string
	Msg    string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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