Finished up #55
This commit is contained in:
@@ -30,6 +30,9 @@ namespace Icarus.Controllers.Managers
|
|||||||
[DllImport("libicarus.so")]
|
[DllImport("libicarus.so")]
|
||||||
public static extern void delete_empty_directories(Sng song, string root_path);
|
public static extern void delete_empty_directories(Sng song, string root_path);
|
||||||
|
|
||||||
|
[DllImport("libicarus.so")]
|
||||||
|
public static extern void delete_from_filesystem(Sng song);
|
||||||
|
|
||||||
[DllImport("libicarus.so")]
|
[DllImport("libicarus.so")]
|
||||||
public static extern void delete_song_empty_directories(Sng song, string root_path);
|
public static extern void delete_song_empty_directories(Sng song, string root_path);
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -151,9 +151,8 @@ namespace Icarus.Controllers.Managers
|
|||||||
{
|
{
|
||||||
_logger.Info("Starting the process of saving the song to the filesystem");
|
_logger.Info("Starting the process of saving the song to the filesystem");
|
||||||
|
|
||||||
var fileTempPath = Path.Combine(_tempDirectoryRoot, songFile.FileName);
|
var song = await SaveSongTemp(songFile,
|
||||||
var song = await SaveSongTemp(songFile, fileTempPath);
|
Path.Combine(_tempDirectoryRoot, songFile.FileName));
|
||||||
song.SongPath = fileTempPath;
|
|
||||||
|
|
||||||
var rootPath = _config.GetValue<string>("RootMusicPath");
|
var rootPath = _config.GetValue<string>("RootMusicPath");
|
||||||
var strCount = rootPath.Length + song.Artist.Length +
|
var strCount = rootPath.Length + song.Artist.Length +
|
||||||
@@ -164,27 +163,18 @@ namespace Icarus.Controllers.Managers
|
|||||||
DirectoryManager.create_directory(ConvertSongToSng(song),
|
DirectoryManager.create_directory(ConvertSongToSng(song),
|
||||||
rootPath, filePathSB);
|
rootPath, filePathSB);
|
||||||
|
|
||||||
var filePath = filePathSB.ToString().Substring(0, strCount);
|
var tmpSongPath = song.SongPath;
|
||||||
|
|
||||||
System.IO.File.Delete(fileTempPath);
|
|
||||||
|
|
||||||
var songFilename = songFile.FileName;
|
song.SongPath = filePathSB.ToString().Substring(0, strCount);
|
||||||
|
|
||||||
if (!songFilename.EndsWith(".mp3"))
|
if (!songFile.FileName.EndsWith(".mp3"))
|
||||||
filePath += $"{songFilename}.mp3";
|
song.SongPath += $"{songFile.FileName}.mp3";
|
||||||
else
|
else
|
||||||
filePath += $"{songFilename}";
|
song.SongPath += $"{songFile.FileName}";
|
||||||
|
|
||||||
_logger.Info($"Absolute song path: {filePath}");
|
_logger.Info($"Absolute song path: {song.SongPath}");
|
||||||
|
|
||||||
|
DirectoryManager.copy_song(song.SongPath, tmpSongPath);
|
||||||
using (var fileStream = new FileStream(filePath, FileMode.Create))
|
|
||||||
{
|
|
||||||
await (songFile.CopyToAsync(fileStream));
|
|
||||||
song.SongPath = filePath;
|
|
||||||
|
|
||||||
_logger.Info("Song successfully saved to filesystem");
|
|
||||||
}
|
|
||||||
|
|
||||||
var coverMgr = new CoverArtManager(_config.GetValue<string>("CoverArtPath"));
|
var coverMgr = new CoverArtManager(_config.GetValue<string>("CoverArtPath"));
|
||||||
var coverArt = coverMgr.SaveCoverArt(song);
|
var coverArt = coverMgr.SaveCoverArt(song);
|
||||||
@@ -254,11 +244,9 @@ namespace Icarus.Controllers.Managers
|
|||||||
|
|
||||||
private async Task<SongData> RetrieveSongFromFileSystem(Song details)
|
private async Task<SongData> RetrieveSongFromFileSystem(Song details)
|
||||||
{
|
{
|
||||||
byte[] uncompressedSong = await System.IO.File.ReadAllBytesAsync(details.SongPath);
|
|
||||||
|
|
||||||
return new SongData
|
return new SongData
|
||||||
{
|
{
|
||||||
Data = uncompressedSong
|
Data = await System.IO.File.ReadAllBytesAsync(details.SongPath)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private async Task<Song> SaveSongTemp(IFormFile songFile, string filePath)
|
private async Task<Song> SaveSongTemp(IFormFile songFile, string filePath)
|
||||||
@@ -275,6 +263,7 @@ namespace Icarus.Controllers.Managers
|
|||||||
|
|
||||||
_logger.Info("Assigning song filename");
|
_logger.Info("Assigning song filename");
|
||||||
song.Filename = songFile.FileName;
|
song.Filename = songFile.FileName;
|
||||||
|
song.SongPath = filePath;
|
||||||
|
|
||||||
return song;
|
return song;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,9 +103,8 @@ namespace Icarus.Controllers.V1
|
|||||||
Console.WriteLine("Uploading song...");
|
Console.WriteLine("Uploading song...");
|
||||||
_logger.LogInformation("Uploading song...");
|
_logger.LogInformation("Uploading song...");
|
||||||
|
|
||||||
var uploads = _songTempDir;
|
Console.WriteLine($"Song Root Path {_songTempDir}");
|
||||||
Console.WriteLine($"Song Root Path {uploads}");
|
_logger.LogInformation($"Song root path {_songTempDir}");
|
||||||
_logger.LogInformation($"Song root path {uploads}");
|
|
||||||
foreach (var sng in songData)
|
foreach (var sng in songData)
|
||||||
if (sng.Length > 0) {
|
if (sng.Length > 0) {
|
||||||
Console.WriteLine($"Song filename {sng.FileName}");
|
Console.WriteLine($"Song filename {sng.FileName}");
|
||||||
|
|||||||
@@ -5,8 +5,10 @@
|
|||||||
std::string create_directory_process(Song, const char*);
|
std::string create_directory_process(Song, const char*);
|
||||||
std::string read_cover_art(const char*);
|
std::string read_cover_art(const char*);
|
||||||
|
|
||||||
|
bool delete_song(Song*);
|
||||||
|
|
||||||
void copy_stock_to_root(const char*, const std::string);
|
void copy_stock_to_root(const char*, const std::string);
|
||||||
void copy_song_to_path(const char*, const char*);
|
void copy_song_to_path(const char*, const char*);
|
||||||
void delete_cover_art_file(const std::string);
|
void delete_cover_art_file(const std::string);
|
||||||
void delete_directories(Song song, const char*);
|
void delete_directories(Song, const char*);
|
||||||
void delete_song(Song song);
|
void delete_song(Song);
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ std::string create_directory_process(Song song, const char *root_path)
|
|||||||
|
|
||||||
return alb_path.string() + "/";
|
return alb_path.string() + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string read_cover_art(const char *source)
|
std::string read_cover_art(const char *source)
|
||||||
{
|
{
|
||||||
auto source_path = fs::path(source);
|
auto source_path = fs::path(source);
|
||||||
@@ -53,6 +52,12 @@ std::string read_cover_art(const char *source)
|
|||||||
|
|
||||||
return buf.str();
|
return buf.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool delete_song(Song *song)
|
||||||
|
{
|
||||||
|
return fs::remove(song->SongPath);
|
||||||
|
}
|
||||||
|
|
||||||
void copy_stock_to_root(const char *target, const std::string buff)
|
void copy_stock_to_root(const char *target, const std::string buff)
|
||||||
{
|
{
|
||||||
std::cout<<"starting process"<<std::endl;
|
std::cout<<"starting process"<<std::endl;
|
||||||
@@ -133,6 +138,7 @@ void copy_stock_cover_art(const char*, const char*);
|
|||||||
void copy_song(const char*, const char*);
|
void copy_song(const char*, const char*);
|
||||||
void delete_cover_art(const char*, const char*);
|
void delete_cover_art(const char*, const char*);
|
||||||
void delete_empty_directories(Song, const char*);
|
void delete_empty_directories(Song, const char*);
|
||||||
|
void delete_from_filesystem(Song);
|
||||||
void delete_song_empty_directories(Song, const char*);
|
void delete_song_empty_directories(Song, const char*);
|
||||||
void print_song_details(const Song);
|
void print_song_details(const Song);
|
||||||
|
|
||||||
@@ -167,6 +173,14 @@ void delete_empty_directories(Song song, const char *root_path)
|
|||||||
{
|
{
|
||||||
delete_directories(song, root_path);
|
delete_directories(song, root_path);
|
||||||
}
|
}
|
||||||
|
void delete_from_filesystem(Song song)
|
||||||
|
{
|
||||||
|
if (delete_song(&song)) {
|
||||||
|
std::cout<<"successfully deleted song from filesystem"<<std::endl;
|
||||||
|
} else {
|
||||||
|
std::cout<<"failed to deleted song from filesystem"<<std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
void delete_song_empty_directories(Song song, const char *root_path)
|
void delete_song_empty_directories(Song song, const char *root_path)
|
||||||
{
|
{
|
||||||
delete_song(song);
|
delete_song(song);
|
||||||
|
|||||||
Reference in New Issue
Block a user