Documentation
¶
Index ¶
- Variables
- func CreateSiteHttpClient(siteConfig *config.SiteConfigStruct, globalConfig *config.ConfigStruct) (*azuretls.Session, [][]string, error)
- func DownloadTorrentByUrl(siteInstance Site, httpClient *azuretls.Session, torrentUrl string, ...) ([]byte, string, error)
- func Exit()
- func GetConfigSiteNameByDomain(domain string) (string, error)
- func GetConfigSiteNameByTypes(types ...string) (string, error)
- func GetUa(siteInstance Site) string
- func PrintDummyStatus(f io.Writer, name string, info string)
- func PrintTorrents(output io.Writer, torrents []*Torrent, filter string, now int64, noHeader bool, ...)
- func Purge(sitename string)
- func Register(regInfo *RegInfo)
- func SiteExists(name string) bool
- func UploadTorrent(siteInstance Site, httpClient *azuretls.Session, uploadUrl string, ...) (res *azuretls.Response, err error)
- type RegInfo
- type Site
- type SiteCreator
- type Status
- type Torrent
- func (torrent *Torrent) HasAnyTag(tags []string) bool
- func (torrent *Torrent) HasTag(tag string) bool
- func (torrent *Torrent) ID() string
- func (torrent *Torrent) MatchFilter(filter string) bool
- func (torrent *Torrent) MatchFiltersAndOr(filtersArray [][]string) bool
- func (torrent *Torrent) MatchFiltersOr(filters []string) bool
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // Error that indicates the feature is not implemented in current site. ErrUnimplemented = fmt.Errorf("not implemented yet") )
Functions ¶
func CreateSiteHttpClient ¶ added in v0.1.1
func CreateSiteHttpClient(siteConfig *config.SiteConfigStruct, globalConfig *config.ConfigStruct) ( *azuretls.Session, [][]string, error)
func DownloadTorrentByUrl ¶ added in v0.1.1
func DownloadTorrentByUrl(siteInstance Site, httpClient *azuretls.Session, torrentUrl string, torrentId string) ( []byte, string, error)
General download torrent func. Return torrentContent, filename, err
func GetConfigSiteNameByDomain ¶ added in v0.1.1
func GetConfigSiteNameByTypes ¶ added in v0.1.1
func PrintDummyStatus ¶ added in v0.1.10
func PrintTorrents ¶
func SiteExists ¶ added in v0.1.6
func UploadTorrent ¶ added in v0.1.10
func UploadTorrent(siteInstance Site, httpClient *azuretls.Session, uploadUrl string, contents []byte, metadata url.Values, fallbackPayloadTemplate map[string]string) (res *azuretls.Response, err error)
Do a multipart/form type post request to upload torrent to site, return site response. metadata is used as context when rendering payloadTemplate, the rendered payload be posted to site. All values in payload will be TrimSpaced. Some metadata names are specially handled:
_cover : cover image file path, got uploaded to site image server then replaced with uploaded img url. _images (array) : images other than cover, processed similar with _cover but rendered as slice. _raw_* : direct raw data that will be rendered and added to payload. _site_<sitename>_* : site specific raw data. _array_keys : variable of these keys are rendered as array.
Types ¶
type RegInfo ¶
type RegInfo struct {
Name string
Aliases []string
Creator func(string, *config.SiteConfigStruct, *config.ConfigStruct) (Site, error)
}
func GetConfigSiteReginfo ¶
type Site ¶
type Site interface {
GetName() string
// default sent http request headers
GetDefaultHttpHeaders() [][]string
GetSiteConfig() *config.SiteConfigStruct
// download torrent by id (e.g. 12345), sitename.id (e.g. mteam.12345),
// or absolute download url (e.g. https://kp.m-team.cc/download.php?id=12345).
DownloadTorrent(url string) (content []byte, filename string, id string, err error)
// download torrent by torrent id (e.g. "12345")
DownloadTorrentById(id string) (content []byte, filename string, err error)
GetLatestTorrents(full bool) ([]*Torrent, error)
// sort: size|name|none(or "")
GetAllTorrents(sort string, desc bool, pageMarker string, baseUrl string) (
torrents []*Torrent, nextPageMarker string, err error)
// can use "%s" as keyword placeholder in baseUrl
SearchTorrents(keyword string, baseUrl string) ([]*Torrent, error)
// Publish (upload) new torrent to site, return uploaded torrent id
// Some keys in metadata should be handled specially:
// If metadata contains "_dryrun", use dry run mode;
PublishTorrent(contents []byte, metadata url.Values) (id string, err error)
GetStatus() (*Status, error)
PurgeCache()
}
func CreateSite ¶
func CreateSiteInternal ¶
func CreateSiteInternal(name string, siteConfig *config.SiteConfigStruct, config *config.ConfigStruct) (Site, error)
type SiteCreator ¶
type Status ¶
type Status struct {
UserName string
UserDownloaded int64
UserUploaded int64
TorrentsSeedingCnt int64
TorrentsLeechingCnt int64
}
type Torrent ¶
type Torrent struct {
Name string
Description string
Id string // optional torrent id in the site
InfoHash string
DownloadUrl string
DownloadMultiplier float64
UploadMultiplier float64
DiscountEndTime int64
Time int64 // torrent timestamp
Size int64
IsSizeAccurate bool
Seeders int64
Leechers int64
Snatched int64
HasHnR bool // true if has any type of HR
IsActive bool // true if torrent is or had ever been downloaded / seeding
IsCurrentActive bool // true if torrent is currently downloading / seeding. If true, so will be IsActive
Paid bool // "付费"种子: (第一次)下载或汇报种子时扣除魔力/积分
Bought bool // 适用于付费种子:已购买
Neutral bool // 中性种子:不计算上传、下载、做种魔力
Tags []string // labels, e.g. category and other meta infos.
}
@todo: considering changing it to interface
func (*Torrent) MatchFilter ¶ added in v0.1.4
func (*Torrent) MatchFiltersAndOr ¶ added in v0.1.9
Matches if every list of filtersArray is successed with MatchFiltersOr(). If filtersArray is empty, return true.
func (*Torrent) MatchFiltersOr ¶ added in v0.1.7
Matches if any filter in list matches
Click to show internal directories.
Click to hide internal directories.