Add retain_rd_torrent_name setting

This commit is contained in:
Ben Sarmiento
2023-11-23 01:40:08 +01:00
parent 77b16791ef
commit addac3cc9f
2 changed files with 24 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ type ConfigInterface interface {
GetNetworkBufferSize() int GetNetworkBufferSize() int
GetMountPoint() string GetMountPoint() string
EnableRetainFolderNameExtension() bool EnableRetainFolderNameExtension() bool
EnableRetainRDTorrentName() bool
GetRandomPreferredHost() string GetRandomPreferredHost() string
} }
@@ -31,6 +32,7 @@ type ZurgConfig struct {
NetworkBufferSize int `yaml:"network_buffer_size"` NetworkBufferSize int `yaml:"network_buffer_size"`
MountPoint string `yaml:"mount_point"` MountPoint string `yaml:"mount_point"`
RetainFolderNameExtension bool `yaml:"retain_folder_name_extension"` RetainFolderNameExtension bool `yaml:"retain_folder_name_extension"`
RetainRDTorrentName bool `yaml:"retain_rd_torrent_name"`
PreferredHosts []string `yaml:"preferred_hosts"` PreferredHosts []string `yaml:"preferred_hosts"`
} }
@@ -92,6 +94,10 @@ func (z *ZurgConfig) EnableRetainFolderNameExtension() bool {
return z.RetainFolderNameExtension return z.RetainFolderNameExtension
} }
func (z *ZurgConfig) EnableRetainRDTorrentName() bool {
return z.RetainRDTorrentName
}
func (z *ZurgConfig) GetRandomPreferredHost() string { func (z *ZurgConfig) GetRandomPreferredHost() string {
if len(z.PreferredHosts) == 0 { if len(z.PreferredHosts) == 0 {
return "" return ""

View File

@@ -404,6 +404,9 @@ func hashStringToFh(s string) (fh uint64) {
} }
func (t *TorrentManager) getName(name, originalName string) string { func (t *TorrentManager) getName(name, originalName string) string {
if t.cfg.EnableRetainRDTorrentName() {
return name
}
// drop the extension from the name // drop the extension from the name
if t.cfg.EnableRetainFolderNameExtension() && strings.Contains(name, originalName) { if t.cfg.EnableRetainFolderNameExtension() && strings.Contains(name, originalName) {
return name return name
@@ -655,6 +658,19 @@ func (t *TorrentManager) Repair(accessKey string) {
missingFiles = append(missingFiles, *file) missingFiles = append(missingFiles, *file)
} }
}) })
// if we download a single file, it will be named differently
// so we need to download 1 extra file to preserve the name
// this is only relevant if we enable retain_rd_torrent_name
if t.cfg.EnableRetainRDTorrentName() && len(missingFiles) == 1 && streamableCount > 1 {
// add the first file link encountered with a prefix of http
for _, file := range torrent.SelectedFiles.Items() {
if strings.HasPrefix(file.Link, "http") {
missingFiles = append(missingFiles, *file)
break
}
}
}
if len(missingFiles) > 0 { if len(missingFiles) > 0 {
t.log.Infof("Redownloading in multiple batches the %d missing files for torrent %s", len(missingFiles), torrent.AccessKey) t.log.Infof("Redownloading in multiple batches the %d missing files for torrent %s", len(missingFiles), torrent.AccessKey)
// if not, last resort: add only the missing files but do it in 2 batches // if not, last resort: add only the missing files but do it in 2 batches
@@ -667,6 +683,8 @@ func (t *TorrentManager) Repair(accessKey string) {
if missingFiles2 != "" { if missingFiles2 != "" {
t.reinsertTorrent(torrent, missingFiles2) t.reinsertTorrent(torrent, missingFiles2)
} }
} else {
t.log.Warnf("Torrent %s has no missing files to repair", torrent.AccessKey)
} }
} }