func (t *Torrent) GetDetails() error {
	if t.detailed {
		t.Site.Logger.Println("Torrent already had details")
		return nil
	}
	data, err := t.Site.makeRequest(t.Site.RootURI + fmt.Sprintf(t.Site.InfoURI, t.ID))
	if err != nil {
		return err
	}
	t.parseDetails(data)
	return nil
}
GetDetails updates the Torrent data with additional information
available only by scraping of the Torrent's details page.
package piratebay
import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"os"
	"regexp"
	"time"
)
const (
	VERSION = "0.0.2"  
)
type Category struct {
	Group string
	Title string
	ID    string
}
type Ordering struct {
	Title string
	ID    string
}
type Torrent struct {
	Site
	Category
	ID       string
	Title    string
	Magnet   string
	Uploaded time.Time
	User     string
	VIPUser  bool
	SizeStr  string
	SizeInt  int64
	Seeders  int
	Leechers int
	Files    []*File
	detailed bool
}
type File struct {
	Path    string
	SizeStr string
	SizeInt int64
}
type Site struct {
	RootURI        string
	InfraURI       string
	SearchURI      string
	InfoURI        string
	FilesURI       string
	CategoryREGEXP *regexp.Regexp
	OrderingREGEXP *regexp.Regexp
	SearchREGEXP   *regexp.Regexp
	InfoREGEXP     *regexp.Regexp
	FilesREGEXP    *regexp.Regexp
	Categories     map[string]map[string]string
	Orderings      map[string]string
	Client         *http.Client
	Logger         *log.Logger
	infraData string
}
func (c *Category) String() string {
	return fmt.Sprintf("%s/%s", c.Group, c.Title)
}
func (o *Ordering) String() string {
	return fmt.Sprintf("%s", o.Title)
}
func (t *Torrent) String() string {
	return fmt.Sprintf("%s (%s)", t.Title, t.ID)
}
func (f *File) String() string {
	return fmt.Sprintf("%s", f.Path)
}
func (s *Site) String() string {
	return fmt.Sprintf("%s", s.RootURI)
}
func (t *Torrent) InfoURI() string {
	return t.Site.RootURI + fmt.Sprintf(t.Site.InfoURI, t.ID)
}