Skip to content

Commit 544b566

Browse files
authored
Merge pull request #583 from oceanplexian/feat/flac-cue-splitting
Add split_flac toggle for Lidarr CUE+FLAC splitting
2 parents 1c31d81 + ddfda5d commit 544b566

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,4 @@ require (
8181
golift.io/udf v0.0.1 // indirect
8282
google.golang.org/protobuf v1.36.11 // indirect
8383
)
84+

pkg/unpackerr/handlers.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
// Extract holds data for files being extracted.
1717
type Extract struct {
1818
Syncthing bool
19+
SplitFlac bool
1920
Retries uint
2021
Path string
2122
App starr.App
@@ -122,15 +123,18 @@ func (u *Unpackerr) extractCompletedDownload(name string, now time.Time, item *E
122123
item.Status = QUEUED
123124
item.Updated = now
124125
// This queues the extraction. Which may start right away.
126+
archiveTypes := []string{".rar", ".r00", ".zip", ".7z", ".7z.001", ".gz", ".tgz", ".tar", ".tar.gz", ".bz2", ".tbz2"}
127+
if item.SplitFlac {
128+
archiveTypes = append(archiveTypes, ".cue")
129+
}
130+
125131
queueSize, _ := u.Extract(&xtractr.Xtract{
126132
Password: u.getPasswordFromPath(item.Path),
127133
Passwords: u.Passwords,
128134
Name: name,
129135
Filter: xtractr.Filter{
130-
Path: item.Path,
131-
ExcludeSuffix: xtractr.AllExcept(
132-
".rar", ".r00", ".zip", ".7z", ".7z.001", ".gz", ".tgz", ".tar", ".tar.gz", ".bz2", ".tbz2",
133-
),
136+
Path: item.Path,
137+
ExcludeSuffix: xtractr.AllExcept(archiveTypes...),
134138
},
135139
TempFolder: false,
136140
DeleteOrig: false,

pkg/unpackerr/lidarr.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
// LidarrConfig represents the input data for a Lidarr server.
1212
type LidarrConfig struct {
1313
StarrConfig
14+
SplitFlac bool `json:"split_flac" toml:"split_flac" xml:"split_flac" yaml:"split_flac"`
1415
Queue *lidarr.Queue `json:"-" toml:"-" xml:"-" yaml:"-"`
1516
*lidarr.Lidarr `json:"-" toml:"-" xml:"-" yaml:"-"`
1617
}
@@ -38,17 +39,19 @@ func (u *Unpackerr) validateLidarr() error {
3839

3940
func (u *Unpackerr) logLidarr() {
4041
if count := len(u.Lidarr); count == 1 {
41-
u.Printf(" => Lidarr Config: 1 server: "+starrLogLine,
42+
u.Printf(" => Lidarr Config: 1 server: "+starrLogLine+", split_flac:%v",
4243
u.Lidarr[0].URL, u.Lidarr[0].APIKey != "", u.Lidarr[0].Timeout,
4344
u.Lidarr[0].ValidSSL, u.Lidarr[0].Protocols, u.Lidarr[0].Syncthing,
44-
u.Lidarr[0].DeleteOrig, u.Lidarr[0].DeleteDelay.Duration, u.Lidarr[0].Paths)
45+
u.Lidarr[0].DeleteOrig, u.Lidarr[0].DeleteDelay.Duration, u.Lidarr[0].Paths,
46+
u.Lidarr[0].SplitFlac)
4547
} else {
4648
u.Printf(" => Lidarr Config: %d servers", count)
4749

4850
for _, f := range u.Lidarr {
49-
u.Printf(starrLogPfx+starrLogLine,
51+
u.Printf(starrLogPfx+starrLogLine+", split_flac:%v",
5052
f.URL, f.APIKey != "", f.Timeout, f.ValidSSL, f.Protocols,
51-
f.Syncthing, f.DeleteOrig, f.DeleteDelay.Duration, f.Paths)
53+
f.Syncthing, f.DeleteOrig, f.DeleteDelay.Duration, f.Paths,
54+
f.SplitFlac)
5255
}
5356
}
5457
}
@@ -95,6 +98,7 @@ func (u *Unpackerr) checkLidarrQueue(now time.Time) {
9598
DeleteOrig: server.DeleteOrig,
9699
DeleteDelay: server.DeleteDelay.Duration,
97100
Syncthing: server.Syncthing,
101+
SplitFlac: server.SplitFlac,
98102
Path: u.getDownloadPath(record.OutputPath, starr.Lidarr, record.Title, server.Paths),
99103
IDs: map[string]any{
100104
"title": record.Title,

0 commit comments

Comments
 (0)