Only detect the .cue file encoding for the manual import service.

(cherry picked from commit a3ccf87b01f071e2bf9db89e4248c730226d059c)
(cherry picked from commit e1ab63906ac4761e0ae2ebfe040854f335f46476)
pull/4200/head
zhangdoa 4 months ago
parent a7ab35fa14
commit a581e64cd3

@ -107,7 +107,7 @@ namespace NzbDrone.Core.MediaFiles
var cueSheetInfos = new List<CueSheetInfo>();
foreach (var cueFile in cueFiles)
{
var cueSheetInfo = GetCueSheetInfo(cueFile, mediaFileList);
var cueSheetInfo = GetCueSheetInfo(cueFile, mediaFileList, itemInfo.DetectCueFileEncoding);
if (idOverrides != null)
{
cueSheetInfo.IdOverrides = idOverrides;
@ -246,19 +246,26 @@ namespace NzbDrone.Core.MediaFiles
return title;
}
private CueSheet LoadCueSheet(IFileInfo fileInfo)
private CueSheet LoadCueSheet(IFileInfo fileInfo, bool detectCueFileEncoding)
{
using (var fs = fileInfo.OpenRead())
{
var bytes = new byte[fileInfo.Length];
var result = CharsetDetector.DetectFromFile(fileInfo.FullName); // or pass FileInfo
var encoding = result.Detected.Encoding;
_logger.Debug("Detected encoding {0} for {1}", encoding.WebName, fileInfo.FullName);
string content;
while (fs.Read(bytes, 0, bytes.Length) > 0)
{
content = encoding.GetString(bytes);
string content;
if (detectCueFileEncoding)
{
var result = CharsetDetector.DetectFromFile(fileInfo.FullName); // or pass FileInfo
var encoding = result.Detected.Encoding;
_logger.Debug("Detected encoding {0} for {1}", encoding.WebName, fileInfo.FullName);
content = encoding.GetString(bytes);
}
else
{
content = Encoding.UTF8.GetString(bytes);
}
var lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
var cueSheet = ParseLines(lines);
@ -425,10 +432,10 @@ namespace NzbDrone.Core.MediaFiles
return null;
}
private CueSheetInfo GetCueSheetInfo(IFileInfo cueFile, List<IFileInfo> musicFiles)
private CueSheetInfo GetCueSheetInfo(IFileInfo cueFile, List<IFileInfo> musicFiles, bool detectCueFileEncoding)
{
var cueSheetInfo = new CueSheetInfo();
var cueSheet = LoadCueSheet(cueFile);
var cueSheet = LoadCueSheet(cueFile, detectCueFileEncoding);
if (cueSheet == null)
{
return cueSheetInfo;

@ -102,6 +102,7 @@ namespace NzbDrone.Core.MediaFiles
var decisions = new List<ImportDecision<LocalTrack>>();
itemInfo.DetectCueFileEncoding = false;
decisions.AddRange(_cueSheetService.GetImportDecisions(ref mediaFileList, null, itemInfo, config));
decisions.AddRange(_importDecisionMaker.GetImportDecisions(mediaFileList, null, itemInfo, config));

@ -35,6 +35,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
public DownloadClientItem DownloadClientItem { get; set; }
public ParsedAlbumInfo ParsedAlbumInfo { get; set; }
public List<CueSheetInfo> CueSheetInfos { get; set; } = new List<CueSheetInfo>();
public bool DetectCueFileEncoding { get; set; }
}
public class ImportDecisionMakerConfig

@ -174,6 +174,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
{
DownloadClientItem = downloadClientItem,
ParsedAlbumInfo = Parser.Parser.ParseAlbumTitle(albumTitle),
DetectCueFileEncoding = true,
};
var config = new ImportDecisionMakerConfig
@ -251,6 +252,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
AlbumRelease = group.First().Release
};
itemInfo.DetectCueFileEncoding = true;
var decisions = _cueSheetService.GetImportDecisions(ref audioFiles, idOverride, itemInfo, config);
if (audioFiles.Count > 0)
{

Loading…
Cancel
Save