Skip to content
This repository has been archived by the owner on Jun 15, 2023. It is now read-only.

Commit

Permalink
save torrent after GotInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
boypt committed Sep 6, 2019
1 parent 13fb394 commit 1efa748
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 21 deletions.
35 changes: 16 additions & 19 deletions engine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,28 +110,25 @@ func (e *Engine) newTorrent(tt *torrent.Torrent) error {
<-t.t.GotInfo()
if e.config.AutoStart {
e.StartTorrent(t.InfoHash)
}
}()

if w, err := os.Stat(e.cacheDir); err == nil {
if w.IsDir() {
cacheFilePath := filepath.Join(e.cacheDir, fmt.Sprintf("%s%s.torrent",
cacheSavedPrefix,
tt.InfoHash().HexString()))
// only create the cache file if not exists
// avoid recreating a cache file during booting import
if _, err := os.Stat(cacheFilePath); os.IsNotExist(err) {
cf, err := os.Create(cacheFilePath)
if err == nil {
meta := tt.Metainfo()
meta.Write(cf)
cf.Close()
} else {
log.Println("[CacheTorrent] failed to create torrent file ", err)
if w, err := os.Stat(e.cacheDir); err == nil && w.IsDir() {
cacheFilePath := filepath.Join(e.cacheDir,
fmt.Sprintf("%s%s.torrent", cacheSavedPrefix, t.InfoHash))
// only create the cache file if not exists
// avoid recreating a cache file during booting import
if _, err := os.Stat(cacheFilePath); os.IsNotExist(err) {
cf, err := os.Create(cacheFilePath)
if err == nil {
meta := t.t.Metainfo()
meta.Write(cf)
cf.Close()
} else {
log.Println("[CacheTorrent] failed to create torrent file ", err)
}
}
}
}
}
}()

return nil
}

Expand Down
8 changes: 6 additions & 2 deletions server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,12 @@ func (s *Server) Run(version string) error {
tors, _ := filepath.Glob(filepath.Join(c.WatchDirectory, "*.torrent"))
for _, t := range tors {
if err := s.engine.NewFileTorrent(t); err == nil {
log.Printf("Inital Task: added %s, file removed\n", t)
os.Remove(t)
if strings.HasPrefix(filepath.Base(t), cacheSavedPrefix) {
log.Printf("Inital Task Restored: %s \n", t)
} else {
log.Printf("Inital Task: added %s, file removed\n", t)
os.Remove(t)
}
} else {
log.Printf("Inital Task: fail to add %s, ERR:%#v\n", t, err)
}
Expand Down

0 comments on commit 1efa748

Please sign in to comment.