Files

53 lines
1.1 KiB
Go

package main
import (
"errors"
"os"
"regexp"
"strings"
"path/filepath"
)
func (a *App) fail(t *Task, err error) {
if t.LocalPath != "" {
_ = os.Remove(t.LocalPath + ".part")
}
a.releaseAsset(t)
if err == nil {
err = errors.New("unknown download error")
}
t.Status, t.Error = "error", err.Error()
a.db.Save(t)
if refundErr := a.refundCredit(t); refundErr != nil {
t.Error += "; credit refund failed: " + refundErr.Error()
a.db.Save(t)
}
}
func (a *App) failUpload(t *Task, err error) {
if err == nil {
err = errors.New("unknown WebDAV upload error")
}
t.RemotePath = ""
t.Status = "upload_pending"
t.Error = "WebDAV 上传失败,等待自动重试: " + err.Error()
a.db.Save(t)
}
var bad = regexp.MustCompile(`[/\\:*?"<>|]+`)
func safe(s string) string {
s = strings.TrimSpace(s)
s = bad.ReplaceAllString(s, "_")
s = strings.Trim(s, ". ")
if s == "" {
return "Unknown"
}
return s
}
func audioPath(dir, artist, title, format string) string {
return filepath.Join(dir, safe(artist)+" - "+safe(title)+"."+normalizedFormat(format))
}