func (btp *BTPlayer) addTorrent() error { btp.log.Info("Adding torrent") if btp.bts.config.DownloadPath == "." { xbmc.Notify("Quasar", "LOCALIZE[30113]", config.AddonIcon()) return fmt.Errorf("Download path empty") } if status, err := diskusage.DiskUsage(btp.bts.config.DownloadPath); err != nil { btp.bts.log.Warningf("Unable to retrieve the free space for %s, continuing anyway...", btp.bts.config.DownloadPath) } else { btp.diskStatus = status } torrentParams := libtorrent.NewAddTorrentParams() defer libtorrent.DeleteAddTorrentParams(torrentParams) torrentParams.SetUrl(btp.uri) btp.log.Infof("Setting save path to %s", btp.bts.config.DownloadPath) torrentParams.SetSavePath(btp.bts.config.DownloadPath) btp.log.Infof("Checking for fast resume data in %s.fastresume", btp.infoHash) fastResumeFile := filepath.Join(btp.bts.config.TorrentsPath, fmt.Sprintf("%s.fastresume", btp.infoHash)) if _, err := os.Stat(fastResumeFile); err == nil { btp.log.Info("Found fast resume data...") btp.fastResumeFile = fastResumeFile fastResumeData, err := ioutil.ReadFile(fastResumeFile) if err != nil { return err } fastResumeVector := libtorrent.NewStdVectorChar() for _, c := range fastResumeData { fastResumeVector.PushBack(c) } torrentParams.SetResumeData(fastResumeVector) } btp.torrentHandle = btp.bts.Session.AddTorrent(torrentParams) go btp.consumeAlerts() if btp.torrentHandle == nil { return fmt.Errorf("Unable to add torrent with URI %s", btp.uri) } btp.log.Info("Enabling sequential download") btp.torrentHandle.SetSequentialDownload(true) status := btp.torrentHandle.Status(uint(libtorrent.TorrentHandleQueryName)) btp.torrentName = status.GetName() btp.log.Infof("Downloading %s", btp.torrentName) if status.GetHasMetadata() == true { btp.onMetadataReceived() } return nil }
func (btp *BTPlayer) addTorrent() error { btp.log.Info("Adding torrent") if status, err := diskusage.DiskUsage(btp.bts.config.DownloadPath); err != nil { btp.bts.log.Info("Unable to retrieve the free space for %s, continuing anyway...", btp.bts.config.DownloadPath) } else { btp.diskStatus = status } torrentParams := libtorrent.NewAddTorrentParams() defer libtorrent.DeleteAddTorrentParams(torrentParams) torrentParams.SetUrl(btp.uri) btp.log.Info("Setting save path to %s\n", btp.bts.config.DownloadPath) torrentParams.SetSavePath(btp.bts.config.DownloadPath) btp.torrentHandle = btp.bts.Session.AddTorrent(torrentParams) go btp.consumeAlerts() status := btp.torrentHandle.Status(uint(libtorrent.TorrentHandleQueryName)) btp.torrentName = status.GetName() if btp.torrentHandle == nil { return fmt.Errorf("unable to add torrent with uri %s", btp.uri) } btp.log.Info("Enabling sequential download") btp.torrentHandle.SetSequentialDownload(true) btp.log.Info("Downloading %s\n", btp.torrentName) if status.GetHasMetadata() == true { btp.onMetadataReceived() } return nil }