mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-21 05:53:33 -07:00
Only detect the .cue file encoding for the manual import service.
(cherry picked from commit a3ccf87b01f071e2bf9db89e4248c730226d059c) (cherry picked from commit e1ab63906ac4761e0ae2ebfe040854f335f46476)
This commit is contained in:
parent
a7ab35fa14
commit
a581e64cd3
4 changed files with 21 additions and 10 deletions
|
@ -107,7 +107,7 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
var cueSheetInfos = new List<CueSheetInfo>();
|
var cueSheetInfos = new List<CueSheetInfo>();
|
||||||
foreach (var cueFile in cueFiles)
|
foreach (var cueFile in cueFiles)
|
||||||
{
|
{
|
||||||
var cueSheetInfo = GetCueSheetInfo(cueFile, mediaFileList);
|
var cueSheetInfo = GetCueSheetInfo(cueFile, mediaFileList, itemInfo.DetectCueFileEncoding);
|
||||||
if (idOverrides != null)
|
if (idOverrides != null)
|
||||||
{
|
{
|
||||||
cueSheetInfo.IdOverrides = idOverrides;
|
cueSheetInfo.IdOverrides = idOverrides;
|
||||||
|
@ -246,19 +246,26 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CueSheet LoadCueSheet(IFileInfo fileInfo)
|
private CueSheet LoadCueSheet(IFileInfo fileInfo, bool detectCueFileEncoding)
|
||||||
{
|
{
|
||||||
using (var fs = fileInfo.OpenRead())
|
using (var fs = fileInfo.OpenRead())
|
||||||
{
|
{
|
||||||
var bytes = new byte[fileInfo.Length];
|
var bytes = new byte[fileInfo.Length];
|
||||||
|
while (fs.Read(bytes, 0, bytes.Length) > 0)
|
||||||
|
{
|
||||||
|
string content;
|
||||||
|
if (detectCueFileEncoding)
|
||||||
|
{
|
||||||
var result = CharsetDetector.DetectFromFile(fileInfo.FullName); // or pass FileInfo
|
var result = CharsetDetector.DetectFromFile(fileInfo.FullName); // or pass FileInfo
|
||||||
var encoding = result.Detected.Encoding;
|
var encoding = result.Detected.Encoding;
|
||||||
_logger.Debug("Detected encoding {0} for {1}", encoding.WebName, fileInfo.FullName);
|
_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);
|
content = encoding.GetString(bytes);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
content = Encoding.UTF8.GetString(bytes);
|
||||||
|
}
|
||||||
|
|
||||||
var lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
|
var lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
|
||||||
var cueSheet = ParseLines(lines);
|
var cueSheet = ParseLines(lines);
|
||||||
|
|
||||||
|
@ -425,10 +432,10 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
return null;
|
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 cueSheetInfo = new CueSheetInfo();
|
||||||
var cueSheet = LoadCueSheet(cueFile);
|
var cueSheet = LoadCueSheet(cueFile, detectCueFileEncoding);
|
||||||
if (cueSheet == null)
|
if (cueSheet == null)
|
||||||
{
|
{
|
||||||
return cueSheetInfo;
|
return cueSheetInfo;
|
||||||
|
|
|
@ -102,6 +102,7 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
|
|
||||||
var decisions = new List<ImportDecision<LocalTrack>>();
|
var decisions = new List<ImportDecision<LocalTrack>>();
|
||||||
|
|
||||||
|
itemInfo.DetectCueFileEncoding = false;
|
||||||
decisions.AddRange(_cueSheetService.GetImportDecisions(ref mediaFileList, null, itemInfo, config));
|
decisions.AddRange(_cueSheetService.GetImportDecisions(ref mediaFileList, null, itemInfo, config));
|
||||||
decisions.AddRange(_importDecisionMaker.GetImportDecisions(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 DownloadClientItem DownloadClientItem { get; set; }
|
||||||
public ParsedAlbumInfo ParsedAlbumInfo { get; set; }
|
public ParsedAlbumInfo ParsedAlbumInfo { get; set; }
|
||||||
public List<CueSheetInfo> CueSheetInfos { get; set; } = new List<CueSheetInfo>();
|
public List<CueSheetInfo> CueSheetInfos { get; set; } = new List<CueSheetInfo>();
|
||||||
|
public bool DetectCueFileEncoding { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ImportDecisionMakerConfig
|
public class ImportDecisionMakerConfig
|
||||||
|
|
|
@ -174,6 +174,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
|
||||||
{
|
{
|
||||||
DownloadClientItem = downloadClientItem,
|
DownloadClientItem = downloadClientItem,
|
||||||
ParsedAlbumInfo = Parser.Parser.ParseAlbumTitle(albumTitle),
|
ParsedAlbumInfo = Parser.Parser.ParseAlbumTitle(albumTitle),
|
||||||
|
DetectCueFileEncoding = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
var config = new ImportDecisionMakerConfig
|
var config = new ImportDecisionMakerConfig
|
||||||
|
@ -251,6 +252,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
|
||||||
AlbumRelease = group.First().Release
|
AlbumRelease = group.First().Release
|
||||||
};
|
};
|
||||||
|
|
||||||
|
itemInfo.DetectCueFileEncoding = true;
|
||||||
var decisions = _cueSheetService.GetImportDecisions(ref audioFiles, idOverride, itemInfo, config);
|
var decisions = _cueSheetService.GetImportDecisions(ref audioFiles, idOverride, itemInfo, config);
|
||||||
if (audioFiles.Count > 0)
|
if (audioFiles.Count > 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue