Documentation
¶
Index ¶
- Variables
- func ClientExists(name string) bool
- func DeleteTorrentsAuto(clientInstance Client, infoHashes []string) (err error)
- func Exit()
- func GenerateNameWithMeta(name string, meta map[string]int64) string
- func GenerateTorrentTagFromCategory(category string) string
- func GenerateTorrentTagFromMetadata(name string, value int64) string
- func GenerateTorrentTagFromSite(site string) string
- func IsSubstituteTag(tag string) bool
- func IsValidInfoHash(infoHash string) bool
- func IsValidInfoHashOrStateFilter(stateFilter string) bool
- func IsValidStateFilter(stateFilter string) bool
- func ParseMetaFromName(fullname string) (name string, meta map[string]int64)
- func PrintDummyStatus(f io.Writer, name string, info string)
- func PrintTorrentFiles(files []*TorrentContentFile, showRaw bool)
- func PrintTorrentTrackers(trackers TorrentTrackers)
- func PrintTorrents(output io.Writer, torrents []*Torrent, filter string, showSum int64, ...)
- func Purge(clientName string)
- func Register(regInfo *RegInfo)
- func SelectTorrents(clientInstance Client, category string, tag string, filter string, ...) ([]string, error)
- type Client
- type ClientCreator
- type RegInfo
- type Status
- type Torrent
- func (torrent *Torrent) GetCategoryFromTag() string
- func (torrent *Torrent) GetMetaFromTag(meta string) string
- func (torrent *Torrent) GetMetadataFromTags() map[string]int64
- func (torrent *Torrent) GetSiteFromTag() string
- func (torrent *Torrent) HasAnyTag(tags string) bool
- func (torrent *Torrent) HasTag(tag string) bool
- func (torrent *Torrent) IsComplete() bool
- func (torrent *Torrent) IsFull() bool
- func (torrent *Torrent) IsFullComplete() bool
- func (torrent *Torrent) MatchFilter(filter string) bool
- func (torrent *Torrent) MatchFiltersOr(filters []string) bool
- func (torrent *Torrent) MatchStateFilter(stateFilter string) bool
- func (torrent *Torrent) MatchTracker(tracker string) bool
- func (torrent *Torrent) Print()
- func (torrent *Torrent) RemoveSubstituteTags()
- func (torrent *Torrent) StateIconText() string
- type TorrentCategory
- type TorrentContentFile
- type TorrentOption
- type TorrentTracker
- type TorrentTrackers
- type TrackerValidity
- type TrackerValidityInfoStruct
Constants ¶
This section is empty.
Variables ¶
var ( STATES = []string{"seeding", "downloading", "completed", "paused", "checking", "error", "unknown"} STATE_FILTERS = []string{"_all", "_active", "_done", "_undone"} Registry = []*RegInfo{} )
var TrackerValidityInfos = []*TrackerValidityInfoStruct{ {TRACKER_VALIDITY_OK, "ok", ""}, {TRACKER_VALIDITY_VIOLATE_RULE, "violate_rule", "Torrent is currently exceeding the simultaneous downloading / seeding clients number limit"}, {TRACKER_VALIDITY_INVALID_AUTH, "invalid_auth", "Tracker url passkey or authkey is required or invalid"}, {TRACKER_VALIDITY_NOT_EXIST, "not_exist", "Torrent is not registered in the tracker(s)"}, }
all tracker validity status infos. the array index is also the status value.
Functions ¶
func ClientExists ¶
func DeleteTorrentsAuto ¶ added in v0.1.10
Delete torrents from client. If torrent has no other xseed torrent (with same content path), delete files; Otherwise preserve files.
func GenerateTorrentTagFromCategory ¶ added in v0.1.2
func GenerateTorrentTagFromMetadata ¶ added in v0.1.5
func IsSubstituteTag ¶ added in v0.1.5
func IsValidInfoHash ¶ added in v0.1.2
func IsValidInfoHashOrStateFilter ¶ added in v0.1.2
func IsValidStateFilter ¶ added in v0.1.10
func ParseMetaFromName ¶
func PrintDummyStatus ¶ added in v0.1.10
func PrintTorrentFiles ¶ added in v0.1.1
func PrintTorrentFiles(files []*TorrentContentFile, showRaw bool)
func PrintTorrentTrackers ¶ added in v0.1.1
func PrintTorrentTrackers(trackers TorrentTrackers)
func PrintTorrents ¶
showSum: 0 - no; 1 - yes; 2 - sum only
func SelectTorrents ¶ added in v0.1.1
func SelectTorrents(clientInstance Client, category string, tag string, filter string, hashOrStateFilters ...string) ([]string, error)
Query torrents that meet criterion and return infoHashes. Specially, return nil slice if all torrents selected. If all hashOrStateFilters is plain info-hash and all other conditions empty, just return hashOrStateFilters,nil. category: "none" is a special value to select uncategoried torrents. tag: comma-separated list, a torrent matches if it has any tag that in the list; specially, "none" means untagged torrents.
Types ¶
type Client ¶
type Client interface { // download / export .torrent file for a torrent in client ExportTorrentFile(infoHash string) ([]byte, error) GetTorrent(infoHash string) (*Torrent, error) // category: "none" is a special value to select uncategoried torrents. // stateFilter: _all|_active|_done|_undone, or any state value (possibly with a _ prefix) GetTorrents(stateFilter string, category string, showAll bool) ([]*Torrent, error) GetTorrentsByContentPath(contentPath string) ([]*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 // create category if not existed, edit category if already exists MakeCategory(category string, savePath string) error DeleteCategories(categories []string) error GetCategories() ([]*TorrentCategory, 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) (TorrentTrackers, error) EditTorrentTracker(infoHash string, oldTracker string, newTracker string, replaceHost bool) error AddTorrentTrackers(infoHash string, trackers []string, oldTracker string, removeExisting bool) error RemoveTorrentTrackers(infoHash string, trackers []string) error // QB only, priority: 0 Do not download; 1 Normal priority; 6 High priority; 7 Maximal priority SetFilePriority(infoHash string, fileIndexes []int64, priority int64) error Cached() bool Close() }
func CreateClient ¶
type ClientCreator ¶
type RegInfo ¶
type RegInfo struct { Name string Creator func(string, *config.ClientConfigStruct, *config.ConfigStruct) (Client, error) }
type Status ¶
type Status struct { FreeSpaceOnDisk int64 // -1 means unknown UnfinishedSize int64 UnfinishedDownloadingSize int64 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 torrent to client NoDel bool // if true, brush and other tasks will NOT delete any torrent from client }
type Torrent ¶
type Torrent struct { InfoHash string Name string TrackerDomain string // e.g. tracker.m-team.cc TrackerBaseDomain string // e.g. m-team.cc Tracker string State string // simplified state: seeding|downloading|completed|paused|checking|error|unknown LowLevelState string // original state value returned by bt client Atime int64 // timestamp torrent added Ctime int64 // timestamp torrent completed. <=0 if not completed. ActivityTime int64 // timestamp of torrent latest activity (a chunk being downloaded / uploaded) 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 // Cnt of seeders (including self client, if it's seeding), returned by tracker Leechers int64 Meta map[string]int64 }
@todo: considering changing it to interface
func FilterTorrentsXseed ¶ added in v0.1.10
func FilterTorrentsXseed(clientInstance Client, torrents []*Torrent) ( torrentsNoXseed, torrentsXseed []*Torrent, err error)
Separate client torrents into 2 groups: torrentsNoXseed and torrentsXseed. The first ones does NOT have any other xseed torrent of same content path, or all xseed torrents themselves are also in the group. The second ones has other xseed torrent of same content path.
func QueryTorrents ¶ added in v0.1.1
func QueryTorrents(clientInstance Client, category string, tag string, filter string, hashOrStateFilters ...string) ([]*Torrent, error)
Parse and return torrents that meet criterion. tag: comma-separated list, a torrent matches if it has any tag that in the list; specially, "none" means untagged torrents.
func (*Torrent) GetCategoryFromTag ¶ added in v0.1.2
func (*Torrent) GetMetaFromTag ¶ added in v0.1.2
func (*Torrent) GetMetadataFromTags ¶ added in v0.1.5
func (*Torrent) GetSiteFromTag ¶
func (*Torrent) HasAnyTag ¶ added in v0.1.10
Return true if torrent has any tag in the tags. tags: comma-separated tag list.
func (*Torrent) IsComplete ¶
func (*Torrent) IsFullComplete ¶
func (*Torrent) MatchFilter ¶ added in v0.1.10
func (*Torrent) MatchFiltersOr ¶ added in v0.1.10
func (*Torrent) MatchStateFilter ¶ added in v0.1.1
func (*Torrent) MatchTracker ¶ added in v0.1.10
Matches if torrent tracker's url or domain == tracker. Specially, if tracker is "none", matches if torrent does NOT have a (working) tracker.
func (*Torrent) RemoveSubstituteTags ¶ added in v0.1.5
func (torrent *Torrent) RemoveSubstituteTags()
func (*Torrent) StateIconText ¶ added in v0.1.5
type TorrentCategory ¶ added in v0.1.5
type TorrentContentFile ¶
type TorrentOption ¶
type TorrentOption struct { Name string // if not empty, set name of torrent in client to this value Category string SavePath string Tags []string RemoveTags []string // used only in ModifyTorrent DownloadSpeedLimit int64 UploadSpeedLimit int64 RatioLimit float64 // If > 0, will stop seeding after ratio (up/dl) exceeds this value SeedingTimeLimit int64 // If > 0, will stop seeding after be seeded for this time (seconds) SkipChecking bool Pause bool Resume bool // use only in ModifyTorrent, to start a paused torrent SequentialDownload bool // qb only }
type TorrentTracker ¶ added in v0.1.1
type TorrentTracker struct { Status string //working|notcontacted|error|updating|disabled|unknown Url string Msg string }
func (*TorrentTracker) SpeculateTrackerValidity ¶ added in v0.1.10
func (tracker *TorrentTracker) SpeculateTrackerValidity() TrackerValidity
type TorrentTrackers ¶ added in v0.1.5
type TorrentTrackers []TorrentTracker
func (TorrentTrackers) FindIndex ¶ added in v0.1.5
func (trackers TorrentTrackers) FindIndex(hostOrUrl string) int
return index or -1
func (TorrentTrackers) SpeculateTrackerValidity ¶ added in v0.1.10
func (trackers TorrentTrackers) SpeculateTrackerValidity() TrackerValidity
type TrackerValidity ¶ added in v0.1.10
type TrackerValidity int64
种子 tracker 合法性(validity)状态. > 0 值 表示已知类型的异常状态。 数字越大,异常状态严重程度越高。0 值表示正常(未识别出已知的异常)。
const ( TRACKER_VALIDITY_OK TrackerValidity = iota // 正常(未识别出已知的异常状态) TRACKER_VALIDITY_VIOLATE_RULE // 不符合做种规则(例如超过同时做种设备数量限制) TRACKER_VALIDITY_INVALID_AUTH // authkey / passkey 不正确 TRACKER_VALIDITY_NOT_EXIST // 种子在站点里不存在或已被删除 )
type TrackerValidityInfoStruct ¶ added in v0.1.10
type TrackerValidityInfoStruct = struct { Value TrackerValidity Name string Desc string }