metainfo

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2019 License: MPL-2.0 Imports: 16 Imported by: 3,542

README

A library for manipulating ".torrent" files.

Documentation

Index

Constants

View Source
const HashSize = 20

Variables

This section is empty.

Functions

This section is empty.

Types

type AnnounceList

type AnnounceList [][]string

func (AnnounceList) DistinctValues

func (al AnnounceList) DistinctValues() (ret map[string]struct{})

func (AnnounceList) OverridesAnnounce

func (al AnnounceList) OverridesAnnounce(announce string) bool

Whether the AnnounceList should be preferred over a single URL announce.

type FileInfo

type FileInfo struct {
	Length int64    `bencode:"length"`
	Path   []string `bencode:"path"`
}

Information specific to a single file inside the MetaInfo structure.

func (*FileInfo) DisplayPath

func (fi *FileInfo) DisplayPath(info *Info) string

func (FileInfo) Offset

func (me FileInfo) Offset(info *Info) (ret int64)

type Hash

type Hash [HashSize]byte

20-byte SHA1 hash used for info and pieces.

func HashBytes

func HashBytes(b []byte) (ret Hash)

func NewHashFromHex

func NewHashFromHex(s string) (h Hash)

func (Hash) AsString

func (h Hash) AsString() string

func (Hash) Bytes

func (h Hash) Bytes() []byte

func (*Hash) FromHexString

func (h *Hash) FromHexString(s string) (err error)

func (Hash) HexString

func (h Hash) HexString() string

func (Hash) String

func (h Hash) String() string

type Info

type Info struct {
	PieceLength int64  `bencode:"piece length"`
	Pieces      []byte `bencode:"pieces"`
	Name        string `bencode:"name"`
	Length      int64  `bencode:"length,omitempty"`
	Private     *bool  `bencode:"private,omitempty"`
	// TODO: Document this field.
	Source string     `bencode:"source,omitempty"`
	Files  []FileInfo `bencode:"files,omitempty"`
}

The info dictionary.

func (*Info) BuildFromFilePath

func (info *Info) BuildFromFilePath(root string) (err error)

This is a helper that sets Files and Pieces from a root path and its children.

func (*Info) GeneratePieces

func (info *Info) GeneratePieces(open func(fi FileInfo) (io.ReadCloser, error)) error

Sets Pieces (the block of piece hashes in the Info) by using the passed function to get at the torrent data.

func (*Info) IsDir

func (info *Info) IsDir() bool

func (*Info) NumPieces

func (info *Info) NumPieces() int

func (*Info) Piece

func (info *Info) Piece(index int) Piece

func (*Info) TotalLength

func (info *Info) TotalLength() (ret int64)

func (*Info) UpvertedFiles

func (info *Info) UpvertedFiles() []FileInfo

The files field, converted up from the old single-file in the parent info dict if necessary. This is a helper to avoid having to conditionally handle single and multi-file torrent infos.

type Magnet

type Magnet struct {
	InfoHash    Hash
	Trackers    []string
	DisplayName string
}

Magnet link components.

func ParseMagnetURI

func ParseMagnetURI(uri string) (m Magnet, err error)

ParseMagnetURI parses Magnet-formatted URIs into a Magnet instance

func (Magnet) String

func (m Magnet) String() string

type MetaInfo

type MetaInfo struct {
	InfoBytes    bencode.Bytes `bencode:"info,omitempty"`
	Announce     string        `bencode:"announce,omitempty"`
	AnnounceList AnnounceList  `bencode:"announce-list,omitempty"`
	Nodes        []Node        `bencode:"nodes,omitempty"`
	CreationDate int64         `bencode:"creation date,omitempty,ignore_unmarshal_type_error"`
	Comment      string        `bencode:"comment,omitempty"`
	CreatedBy    string        `bencode:"created by,omitempty"`
	Encoding     string        `bencode:"encoding,omitempty"`
	UrlList      UrlList       `bencode:"url-list,omitempty"`
}

func Load

func Load(r io.Reader) (*MetaInfo, error)

Load a MetaInfo from an io.Reader. Returns a non-nil error in case of failure.

func LoadFromFile

func LoadFromFile(filename string) (*MetaInfo, error)

Convenience function for loading a MetaInfo from a file.

func (MetaInfo) HashInfoBytes

func (mi MetaInfo) HashInfoBytes() (infoHash Hash)

func (*MetaInfo) Magnet

func (mi *MetaInfo) Magnet(displayName string, infoHash Hash) (m Magnet)

Creates a Magnet from a MetaInfo.

func (*MetaInfo) SetDefaults

func (mi *MetaInfo) SetDefaults()

Set good default values in preparation for creating a new MetaInfo file.

func (MetaInfo) UnmarshalInfo

func (mi MetaInfo) UnmarshalInfo() (info Info, err error)

func (*MetaInfo) UpvertedAnnounceList

func (mi *MetaInfo) UpvertedAnnounceList() AnnounceList

Returns the announce list converted from the old single announce field if necessary.

func (MetaInfo) Write

func (mi MetaInfo) Write(w io.Writer) error

Encode to bencoded form.

type Node

type Node string

func (*Node) UnmarshalBencode

func (n *Node) UnmarshalBencode(b []byte) (err error)

type Piece

type Piece struct {
	Info *Info
	// contains filtered or unexported fields
}

func (Piece) Hash

func (p Piece) Hash() (ret Hash)

func (Piece) Index

func (p Piece) Index() pieceIndex

func (Piece) Length

func (p Piece) Length() int64

func (Piece) Offset

func (p Piece) Offset() int64

type PieceKey

type PieceKey struct {
	InfoHash Hash
	Index    pieceIndex
}

Uniquely identifies a piece.

type UrlList

type UrlList []string

func (*UrlList) UnmarshalBencode

func (me *UrlList) UnmarshalBencode(b []byte) error

Jump to

Keyboard shortcuts

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