Skip to content

Commit 7b1a4b3

Browse files
committed
move regex under util
1 parent b4cd38b commit 7b1a4b3

File tree

3 files changed

+25
-15
lines changed

3 files changed

+25
-15
lines changed

src/downloader/downloader.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"os"
88
"path"
99
"path/filepath"
10-
"regexp"
1110
"strings"
1211

1312
"golang.org/x/sync/errgroup"
@@ -128,19 +127,12 @@ func filterLocalTracks(tracks *[]*models.Track, preDownload bool) { // filter lo
128127
*tracks = filteredTracks
129128
}
130129

131-
132-
func sanitizeName(s string) string { // return string with only letters and digits
133-
var sanitizer = regexp.MustCompile(`[^\p{L}\d]+`)
134-
return sanitizer.ReplaceAllString(s, "")
135-
}
136-
137130
func getFilename(title, artist string) string {
138131
const maxBytes = 240
139132

140133
// Remove illegal characters for file naming
141-
re := regexp.MustCompile(`[^\p{L}\d._,\-]+`)
142-
t := re.ReplaceAllString(title, "_")
143-
a := re.ReplaceAllString(artist, "_")
134+
t := util.FilenameSafe(title)
135+
a :=util.FilenameSafe(artist)
144136

145137
// truncate long filename
146138
runes := []rune(fmt.Sprintf("%s-%s", t, a))

src/downloader/slskd.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,9 @@ func (c Slskd) deleteSearch(ID string) error {
239239
}
240240

241241
func (c Slskd) CollectFiles(track models.Track, searchResults SearchResults) ([]File, error) { // Collect all files in response that match criteria
242-
sanitizedArtist := sanitizeName(track.MainArtist)
243-
sanitizedAlbum := sanitizeName(track.Album)
244-
sanitizedTitle := sanitizeName(track.CleanTitle)
242+
sanitizedArtist := util.AlnumOnly(track.MainArtist)
243+
sanitizedAlbum := util.AlnumOnly(track.Album)
244+
sanitizedTitle := util.AlnumOnly(track.CleanTitle)
245245

246246
files := slices.Collect(func(yield func(File) bool) {
247247
for _, result := range searchResults {
@@ -250,7 +250,7 @@ func (c Slskd) CollectFiles(track models.Track, searchResults SearchResults) ([]
250250
file.Extension = strings.TrimPrefix(strings.ToLower(file.Extension), ".")
251251
if file.Extension == "" {
252252
extension := strings.TrimPrefix(strings.ToLower(filepath.Ext(string(file.Name))), ".")
253-
file.Extension = sanitizeName(extension) // sanitize extension incase of bad chars
253+
file.Extension = util.AlnumOnly(extension) // sanitize extension incase of bad chars
254254
}
255255

256256
if !slices.Contains(c.Cfg.Filters.Extensions, file.Extension) && ContainsKeyword(track, file.Name, c.Cfg.Filters.FilterList) {
@@ -261,7 +261,7 @@ func (c Slskd) CollectFiles(track models.Track, searchResults SearchResults) ([]
261261
continue
262262
}
263263

264-
sanitizedFilename := sanitizeName(string(file.Name))
264+
sanitizedFilename := util.AlnumOnly(string(file.Name))
265265
if (containsLower(sanitizedFilename, sanitizedArtist) || containsLower(sanitizedFilename, sanitizedAlbum)) && containsLower(sanitizedFilename, sanitizedTitle) {
266266
file.Username = result.Username
267267
if !yield(file) {

src/util/sanitize.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package util
2+
3+
import "regexp"
4+
5+
var (
6+
filenameRe = regexp.MustCompile(`[^\p{L}\d._,\-]+`)
7+
alnumRe = regexp.MustCompile(`[^\p{L}\d]+`)
8+
)
9+
10+
// FilenameSafe replaces characters unsafe for filenames with '_'
11+
func FilenameSafe(s string) string {
12+
return filenameRe.ReplaceAllString(s, "_")
13+
}
14+
15+
// AlnumOnly removes everything except letters and digits
16+
func AlnumOnly(s string) string {
17+
return alnumRe.ReplaceAllString(s, "")
18+
}

0 commit comments

Comments
 (0)