more LibationFileManager rename. and bug fix
This commit is contained in:
parent
c43e03b228
commit
6a81b9b02d
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
<Version>6.2.6.1</Version>
|
<Version>6.2.6.4</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -45,10 +45,20 @@ namespace FileLiberator
|
|||||||
if (libraryBook.Book.Audio_Exists)
|
if (libraryBook.Book.Audio_Exists)
|
||||||
return new StatusHandler { "Cannot find decrypt. Final audio file already exists" };
|
return new StatusHandler { "Cannot find decrypt. Final audio file already exists" };
|
||||||
|
|
||||||
|
bool success = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
FilePathCache.Inserted += FilePathCache_Inserted;
|
FilePathCache.Inserted += FilePathCache_Inserted;
|
||||||
FilePathCache.Removed += FilePathCache_Removed;
|
FilePathCache.Removed += FilePathCache_Removed;
|
||||||
|
|
||||||
var success = await downloadAudiobookAsync(libraryBook);
|
success = await downloadAudiobookAsync(libraryBook);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
FilePathCache.Inserted -= FilePathCache_Inserted;
|
||||||
|
FilePathCache.Removed -= FilePathCache_Removed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// decrypt failed
|
// decrypt failed
|
||||||
if (!success)
|
if (!success)
|
||||||
@ -67,9 +77,6 @@ namespace FileLiberator
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
FilePathCache.Inserted -= FilePathCache_Inserted;
|
|
||||||
FilePathCache.Removed -= FilePathCache_Removed;
|
|
||||||
|
|
||||||
OnCompleted(libraryBook);
|
OnCompleted(libraryBook);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,7 +116,7 @@ namespace FileLiberator
|
|||||||
audiobookDlLic.ChapterInfo.AddChapter(chap.Title, TimeSpan.FromMilliseconds(chap.LengthMs));
|
audiobookDlLic.ChapterInfo.AddChapter(chap.Title, TimeSpan.FromMilliseconds(chap.LengthMs));
|
||||||
}
|
}
|
||||||
|
|
||||||
var outFileName = Path.Combine(AudibleFileStorage.DecryptInProgressDirectory, $"{PathLib.ToPathSafeString(libraryBook.Book.Title)} [{libraryBook.Book.AudibleProductId}].{outputFormat.ToString().ToLower()}");
|
var outFileName = FileUtility.GetValidFilename(AudibleFileStorage.DecryptInProgressDirectory, libraryBook.Book.Title, outputFormat.ToString().ToLower(), libraryBook.Book.AudibleProductId);
|
||||||
|
|
||||||
var cacheDir = AudibleFileStorage.DownloadsInProgressDirectory;
|
var cacheDir = AudibleFileStorage.DownloadsInProgressDirectory;
|
||||||
|
|
||||||
@ -170,10 +177,16 @@ namespace FileLiberator
|
|||||||
/// <returns>True if audiobook file(s) were successfully created and can be located on disk. Else false.</returns>
|
/// <returns>True if audiobook file(s) were successfully created and can be located on disk. Else false.</returns>
|
||||||
private static bool moveFilesToBooksDir(Book book, List<FilePathCache.CacheEntry> entries)
|
private static bool moveFilesToBooksDir(Book book, List<FilePathCache.CacheEntry> entries)
|
||||||
{
|
{
|
||||||
// create final directory. move each file into it. MOVE AUDIO FILE LAST
|
// create final directory. move each file into it
|
||||||
// new dir: safetitle_limit50char + " [" + productId + "]"
|
var title = book.Title;
|
||||||
// TODO make this method handle multiple audio files or a single audio file.
|
var asin = book.AudibleProductId;
|
||||||
var destinationDir = AudibleFileStorage.Audio.GetDestDir(book.Title, book.AudibleProductId);
|
// to prevent the paths from getting too long, we don't need after the 1st ":" for the folder
|
||||||
|
var underscoreIndex = title.IndexOf(':');
|
||||||
|
var titleDir
|
||||||
|
= underscoreIndex < 4
|
||||||
|
? title
|
||||||
|
: title.Substring(0, underscoreIndex);
|
||||||
|
var destinationDir = FileUtility.GetValidFilename(AudibleFileStorage.BooksDirectory, titleDir, null, asin);
|
||||||
Directory.CreateDirectory(destinationDir);
|
Directory.CreateDirectory(destinationDir);
|
||||||
|
|
||||||
var music = entries.FirstOrDefault(f => f.FileType == FileType.Audio);
|
var music = entries.FirstOrDefault(f => f.FileType == FileType.Audio);
|
||||||
@ -183,18 +196,15 @@ namespace FileLiberator
|
|||||||
|
|
||||||
var musicFileExt = Path.GetExtension(music.Path).Trim('.');
|
var musicFileExt = Path.GetExtension(music.Path).Trim('.');
|
||||||
|
|
||||||
// audio filename: safetitle_limit50char + " [" + productId + "]." + audio_ext
|
|
||||||
var audioFileName = FileUtility.GetValidFilename(destinationDir, book.Title, musicFileExt, book.AudibleProductId);
|
var audioFileName = FileUtility.GetValidFilename(destinationDir, book.Title, musicFileExt, book.AudibleProductId);
|
||||||
|
|
||||||
foreach (var entry in entries)
|
foreach (var entry in entries)
|
||||||
{
|
{
|
||||||
var fileInfo = new FileInfo(entry.Path);
|
var fileInfo = new FileInfo(entry.Path);
|
||||||
|
|
||||||
var isAudio = entry.FileType == FileType.Audio;
|
|
||||||
var dest
|
var dest
|
||||||
= isAudio
|
= entry.FileType == FileType.Audio
|
||||||
? Path.Join(destinationDir, fileInfo.Name)
|
? Path.Join(destinationDir, fileInfo.Name)
|
||||||
// non-audio filename: safetitle_limit50char + " [" + productId + "][" + audio_ext + "]." + non_audio_ext
|
|
||||||
: FileUtility.GetValidFilename(destinationDir, book.Title, fileInfo.Extension, book.AudibleProductId, musicFileExt);
|
: FileUtility.GetValidFilename(destinationDir, book.Title, fileInfo.Extension, book.AudibleProductId, musicFileExt);
|
||||||
|
|
||||||
if (Path.GetExtension(dest).Trim('.').ToLower() == "cue")
|
if (Path.GetExtension(dest).Trim('.').ToLower() == "cue")
|
||||||
|
|||||||
20
FileManager.Tests/FileManager.Tests.csproj
Normal file
20
FileManager.Tests/FileManager.Tests.csproj
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
|
||||||
|
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
|
||||||
|
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
|
||||||
|
<PackageReference Include="coverlet.collector" Version="3.0.2" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\FileManager\FileManager.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
13
FileManager.Tests/FileUtilityTests.cs
Normal file
13
FileManager.Tests/FileUtilityTests.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace FileUtilityTests
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class GetValidFilename
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public void TestMethod1()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,10 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace FileManager
|
namespace FileManager
|
||||||
{
|
{
|
||||||
public static class FileUtility
|
public static class FileUtility
|
||||||
{
|
{
|
||||||
|
//public static string GetValidFilename(string template, Dictionary<string, object> parameters) { }
|
||||||
public static string GetValidFilename(string dirFullPath, string filename, string extension, params string[] metadataSuffixes)
|
public static string GetValidFilename(string dirFullPath, string filename, string extension, params string[] metadataSuffixes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(dirFullPath))
|
if (string.IsNullOrWhiteSpace(dirFullPath))
|
||||||
@ -26,7 +29,7 @@ namespace FileManager
|
|||||||
if (metadataSuffixes != null && metadataSuffixes.Length > 0)
|
if (metadataSuffixes != null && metadataSuffixes.Length > 0)
|
||||||
filename += " [" + string.Join("][", metadataSuffixes) + "]";
|
filename += " [" + string.Join("][", metadataSuffixes) + "]";
|
||||||
|
|
||||||
// this method may also be used for directory names, so no guarantee of extension
|
// extension is null when this method is used for directory names
|
||||||
if (!string.IsNullOrWhiteSpace(extension))
|
if (!string.IsNullOrWhiteSpace(extension))
|
||||||
extension = '.' + extension.Trim('.');
|
extension = '.' + extension.Trim('.');
|
||||||
|
|
||||||
|
|||||||
@ -58,6 +58,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppScaffolding", "AppScaffo
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileManager", "FileManager\FileManager.csproj", "{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileManager", "FileManager\FileManager.csproj", "{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileManager.Tests", "FileManager.Tests\FileManager.Tests.csproj", "{3B58450C-FBDA-4D48-8418-A3C750596D7D}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -124,6 +126,10 @@ Global
|
|||||||
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.Build.0 = Release|Any CPU
|
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3B58450C-FBDA-4D48-8418-A3C750596D7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3B58450C-FBDA-4D48-8418-A3C750596D7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3B58450C-FBDA-4D48-8418-A3C750596D7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3B58450C-FBDA-4D48-8418-A3C750596D7D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -144,6 +150,7 @@ Global
|
|||||||
{428163C3-D558-4914-B570-A92069521877} = {8679CAC8-9164-4007-BDD2-F004810EDA14}
|
{428163C3-D558-4914-B570-A92069521877} = {8679CAC8-9164-4007-BDD2-F004810EDA14}
|
||||||
{595E7C4D-506D-486D-98B7-5FDDF398D033} = {8679CAC8-9164-4007-BDD2-F004810EDA14}
|
{595E7C4D-506D-486D-98B7-5FDDF398D033} = {8679CAC8-9164-4007-BDD2-F004810EDA14}
|
||||||
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1}
|
{E86014F9-E4B3-4CD4-A210-2B3DB571DD86} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1}
|
||||||
|
{3B58450C-FBDA-4D48-8418-A3C750596D7D} = {67E66E82-5532-4440-AFB3-9FB1DF9DEF53}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {615E00ED-BAEF-4E8E-A92A-9B82D87942A9}
|
SolutionGuid = {615E00ED-BAEF-4E8E-A92A-9B82D87942A9}
|
||||||
|
|||||||
@ -87,18 +87,6 @@ namespace LibationFileManager
|
|||||||
|
|
||||||
public void Refresh() => BookDirectoryFiles.RefreshFiles();
|
public void Refresh() => BookDirectoryFiles.RefreshFiles();
|
||||||
|
|
||||||
public string GetDestDir(string title, string asin)
|
|
||||||
{
|
|
||||||
// to prevent the paths from getting too long, we don't need after the 1st ":" for the folder
|
|
||||||
var underscoreIndex = title.IndexOf(':');
|
|
||||||
var titleDir
|
|
||||||
= underscoreIndex < 4
|
|
||||||
? title
|
|
||||||
: title.Substring(0, underscoreIndex);
|
|
||||||
var finalDir = FileUtility.GetValidFilename(BooksDirectory, titleDir, null, asin);
|
|
||||||
return finalDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetPath(string productId) => GetFilePath(productId);
|
public string GetPath(string productId) => GetFilePath(productId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ namespace LibationFileManager
|
|||||||
|
|
||||||
public static string GetFirstPath(string id, FileType type)
|
public static string GetFirstPath(string id, FileType type)
|
||||||
=> getEntries(entry => entry.Id == id && entry.FileType == type)
|
=> getEntries(entry => entry.Id == id && entry.FileType == type)
|
||||||
.FirstOrDefault()
|
?.FirstOrDefault()
|
||||||
?.Path;
|
?.Path;
|
||||||
|
|
||||||
private static List<CacheEntry> getEntries(Func<CacheEntry, bool> predicate)
|
private static List<CacheEntry> getEntries(Func<CacheEntry, bool> predicate)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
using DataLayer;
|
using System;
|
||||||
using FileManager;
|
using DataLayer;
|
||||||
using System;
|
using LibationFileManager;
|
||||||
|
|
||||||
namespace LibationWinForms.BookLiberation
|
namespace LibationWinForms.BookLiberation
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using DataLayer;
|
using DataLayer;
|
||||||
using Dinah.Core.Net.Http;
|
using Dinah.Core.Net.Http;
|
||||||
using Dinah.Core.Threading;
|
using Dinah.Core.Threading;
|
||||||
|
using LibationFileManager;
|
||||||
using LibationWinForms.BookLiberation.BaseForms;
|
using LibationWinForms.BookLiberation.BaseForms;
|
||||||
|
|
||||||
namespace LibationWinForms.BookLiberation
|
namespace LibationWinForms.BookLiberation
|
||||||
@ -23,20 +24,20 @@ namespace LibationWinForms.BookLiberation
|
|||||||
{
|
{
|
||||||
base.Processable_Begin(sender, libraryBook);
|
base.Processable_Begin(sender, libraryBook);
|
||||||
|
|
||||||
GetCoverArtDelegate = () => FileManager.PictureStorage.GetPictureSynchronously(
|
GetCoverArtDelegate = () => PictureStorage.GetPictureSynchronously(
|
||||||
new FileManager.PictureDefinition(
|
new PictureDefinition(
|
||||||
libraryBook.Book.PictureId,
|
libraryBook.Book.PictureId,
|
||||||
FileManager.PictureSize._500x500));
|
PictureSize._500x500));
|
||||||
|
|
||||||
//Set default values from library
|
//Set default values from library
|
||||||
AudioDecodable_TitleDiscovered(sender, libraryBook.Book.Title);
|
AudioDecodable_TitleDiscovered(sender, libraryBook.Book.Title);
|
||||||
AudioDecodable_AuthorsDiscovered(sender, string.Join(", ", libraryBook.Book.Authors));
|
AudioDecodable_AuthorsDiscovered(sender, string.Join(", ", libraryBook.Book.Authors));
|
||||||
AudioDecodable_NarratorsDiscovered(sender, string.Join(", ", libraryBook.Book.NarratorNames));
|
AudioDecodable_NarratorsDiscovered(sender, string.Join(", ", libraryBook.Book.NarratorNames));
|
||||||
AudioDecodable_CoverImageDiscovered(sender,
|
AudioDecodable_CoverImageDiscovered(sender,
|
||||||
FileManager.PictureStorage.GetPicture(
|
PictureStorage.GetPicture(
|
||||||
new FileManager.PictureDefinition(
|
new PictureDefinition(
|
||||||
libraryBook.Book.PictureId,
|
libraryBook.Book.PictureId,
|
||||||
FileManager.PictureSize._80x80)).bytes);
|
PictureSize._80x80)).bytes);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
using DataLayer;
|
using System;
|
||||||
using FileManager;
|
using DataLayer;
|
||||||
using System;
|
using LibationFileManager;
|
||||||
|
|
||||||
namespace LibationWinForms.BookLiberation
|
namespace LibationWinForms.BookLiberation
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
using DataLayer;
|
using System;
|
||||||
using Dinah.Core;
|
|
||||||
using FileLiberator;
|
|
||||||
using LibationWinForms.BookLiberation.BaseForms;
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using DataLayer;
|
||||||
|
using Dinah.Core;
|
||||||
|
using FileLiberator;
|
||||||
|
using LibationFileManager;
|
||||||
|
using LibationWinForms.BookLiberation.BaseForms;
|
||||||
|
|
||||||
namespace LibationWinForms.BookLiberation
|
namespace LibationWinForms.BookLiberation
|
||||||
{
|
{
|
||||||
@ -218,12 +218,12 @@ namespace LibationWinForms.BookLiberation
|
|||||||
{
|
{
|
||||||
LogMe.Error("ERROR. All books have not been processed. Most recent book: processing failed");
|
LogMe.Error("ERROR. All books have not been processed. Most recent book: processing failed");
|
||||||
|
|
||||||
DialogResult? dialogResult = FileManager.Configuration.Instance.BadBook switch
|
DialogResult? dialogResult = Configuration.Instance.BadBook switch
|
||||||
{
|
{
|
||||||
FileManager.Configuration.BadBookAction.Abort => DialogResult.Abort,
|
Configuration.BadBookAction.Abort => DialogResult.Abort,
|
||||||
FileManager.Configuration.BadBookAction.Retry => DialogResult.Retry,
|
Configuration.BadBookAction.Retry => DialogResult.Retry,
|
||||||
FileManager.Configuration.BadBookAction.Ignore => DialogResult.Ignore,
|
Configuration.BadBookAction.Ignore => DialogResult.Ignore,
|
||||||
FileManager.Configuration.BadBookAction.Ask => null,
|
Configuration.BadBookAction.Ask => null,
|
||||||
_ => null
|
_ => null
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using DataLayer;
|
using DataLayer;
|
||||||
using Dinah.Core;
|
using Dinah.Core;
|
||||||
|
using LibationFileManager;
|
||||||
|
|
||||||
namespace LibationWinForms.Dialogs
|
namespace LibationWinForms.Dialogs
|
||||||
{
|
{
|
||||||
@ -39,7 +40,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
{
|
{
|
||||||
this.Text = Book.Title;
|
this.Text = Book.Title;
|
||||||
|
|
||||||
(var isDefault, var picture) = FileManager.PictureStorage.GetPicture(new FileManager.PictureDefinition(Book.PictureId, FileManager.PictureSize._80x80));
|
(_, var picture) = PictureStorage.GetPicture(new PictureDefinition(Book.PictureId, PictureSize._80x80));
|
||||||
this.coverPb.Image = Dinah.Core.Drawing.ImageReader.ToImage(picture);
|
this.coverPb.Image = Dinah.Core.Drawing.ImageReader.ToImage(picture);
|
||||||
|
|
||||||
var t = @$"
|
var t = @$"
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
using FileManager;
|
using System;
|
||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using LibationFileManager;
|
||||||
|
|
||||||
namespace LibationWinForms.Dialogs
|
namespace LibationWinForms.Dialogs
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
using FileManager;
|
using System;
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using LibationFileManager;
|
||||||
|
|
||||||
namespace LibationWinForms.Dialogs
|
namespace LibationWinForms.Dialogs
|
||||||
{
|
{
|
||||||
|
|||||||
@ -50,7 +50,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
string dir = "";
|
string dir = "";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dir = FileManager.Configuration.Instance.LibationFiles;
|
dir = LibationFileManager.Configuration.Instance.LibationFiles;
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
using ApplicationServices;
|
using ApplicationServices;
|
||||||
using DataLayer;
|
using DataLayer;
|
||||||
using Dinah.Core.DataBinding;
|
using Dinah.Core.DataBinding;
|
||||||
using FileManager;
|
|
||||||
using InternalUtilities;
|
using InternalUtilities;
|
||||||
|
using LibationFileManager;
|
||||||
using LibationWinForms.Login;
|
using LibationWinForms.Login;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
|||||||
@ -6,8 +6,8 @@ using ApplicationServices;
|
|||||||
using Dinah.Core;
|
using Dinah.Core;
|
||||||
using Dinah.Core.Drawing;
|
using Dinah.Core.Drawing;
|
||||||
using Dinah.Core.Threading;
|
using Dinah.Core.Threading;
|
||||||
using FileManager;
|
|
||||||
using InternalUtilities;
|
using InternalUtilities;
|
||||||
|
using LibationFileManager;
|
||||||
using LibationWinForms.Dialogs;
|
using LibationWinForms.Dialogs;
|
||||||
|
|
||||||
namespace LibationWinForms
|
namespace LibationWinForms
|
||||||
|
|||||||
@ -78,7 +78,7 @@ namespace LibationWinForms
|
|||||||
// liberated: open explorer to file
|
// liberated: open explorer to file
|
||||||
if (libraryBook.Book.Audio_Exists)
|
if (libraryBook.Book.Audio_Exists)
|
||||||
{
|
{
|
||||||
var filePath = FileManager.AudibleFileStorage.Audio.GetPath(libraryBook.Book.AudibleProductId);
|
var filePath = LibationFileManager.AudibleFileStorage.Audio.GetPath(libraryBook.Book.AudibleProductId);
|
||||||
if (!Go.To.File(filePath))
|
if (!Go.To.File(filePath))
|
||||||
{
|
{
|
||||||
var suffix = string.IsNullOrWhiteSpace(filePath) ? "" : $":\r\n{filePath}";
|
var suffix = string.IsNullOrWhiteSpace(filePath) ? "" : $":\r\n{filePath}";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user