Got functionality working
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
#include"Syncers/Download.h"
|
||||
#include"Syncers/RetrieveRecords.h"
|
||||
#include"Syncers/Upload.h"
|
||||
#include"Utilities/Checks.h"
|
||||
|
||||
#include"Managers/TokenManager.h"
|
||||
#include"Managers/UserManager.h"
|
||||
@@ -282,50 +281,25 @@ namespace Managers
|
||||
|
||||
auto album = retrieveMetadata(metaPath);
|
||||
album.printInfo();
|
||||
for (auto sng : album.songs)
|
||||
{
|
||||
// sng.printInfo();
|
||||
}
|
||||
|
||||
Song song;
|
||||
song.track = 1;
|
||||
song.disc = 1;
|
||||
|
||||
auto disc = 1;
|
||||
auto track = 1;
|
||||
cout<<"TrackID: "<<trackID<<"\n";
|
||||
|
||||
auto separator = std::find_if(trackID.begin(), trackID.end(), [&](char c)
|
||||
{
|
||||
return c == ':';
|
||||
});
|
||||
parseDiscAndTrack<Song, std::string>(song, trackID);
|
||||
|
||||
if (separator != trackID.end())
|
||||
{
|
||||
cout<<"Found colon\n";
|
||||
auto dStr = string(trackID.begin(), separator);
|
||||
auto tStr = string(++separator, trackID.end());
|
||||
|
||||
cout<<"disc "<<dStr<<" track "<<tStr<<"\n";
|
||||
disc = std::atoi(dStr.c_str());
|
||||
track = std::atoi(tStr.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
auto isNumber = Utilities::Checks::isNumber(trackID);
|
||||
if (isNumber)
|
||||
{
|
||||
track = std::atoi(trackID.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
auto sng = std::find_if(album.songs.begin(), album.songs.end(), [&](Song s)
|
||||
{
|
||||
return s.track == track && s.disc == disc;
|
||||
});
|
||||
auto c = [](const Song &songA, const Song &songB) { return songA.track == songB.track && songA.disc == songB.disc; };
|
||||
auto sng = Utilities::Checks::itemIterInContainer<Song, std::vector<Song>>(album.songs, song, c);
|
||||
|
||||
if (sng == album.songs.end())
|
||||
{
|
||||
cout<<"Not found with disc "<<disc<<" track "<<track<<"\n";
|
||||
cout<<"Not found with disc "<<song.disc<<" track "<<song.track<<"\n";
|
||||
std::exit(-1);
|
||||
}
|
||||
|
||||
auto song = *sng;
|
||||
song = *sng;
|
||||
song.songPath = songPath;
|
||||
|
||||
Models::CoverArt cover;
|
||||
@@ -341,6 +315,53 @@ namespace Managers
|
||||
APIParser apiPrs(icaAction);
|
||||
auto api = apiPrs.retrieveAPI();
|
||||
const auto token = parseToken(api);
|
||||
|
||||
if (!fs::is_directory(sourcePath))
|
||||
{
|
||||
cout<<sourcePath<<" is not a directory\n";
|
||||
std::exit(-1);
|
||||
}
|
||||
|
||||
std::vector<Song> songs;
|
||||
Models::CoverArt cover;
|
||||
string metadataPath;
|
||||
|
||||
for (auto &p: fs::directory_iterator(sourcePath))
|
||||
{
|
||||
const auto &pp = p.path();
|
||||
const auto stem = pp.stem();
|
||||
const auto file = pp.filename();
|
||||
const auto extension = pp.extension();
|
||||
|
||||
cout<<"Stem "<<stem<<" Extension "<<extension<<"\n";
|
||||
|
||||
if (extension.compare(".mp3") == 0)
|
||||
{
|
||||
Song song;
|
||||
song.songPath = pp.string();
|
||||
|
||||
initializeDiscAndTrack<Song, std::string>(song);
|
||||
|
||||
songs.emplace_back(std::move(song));
|
||||
}
|
||||
else if (extension.compare(".jpg") == 0 || extension.compare(".png") == 0)
|
||||
{
|
||||
cover.path.assign(pp.string());
|
||||
}
|
||||
else if (extension.compare(".json") == 0)
|
||||
{
|
||||
metadataPath.assign(pp.string());
|
||||
}
|
||||
}
|
||||
|
||||
auto album = retrieveMetadata(metadataPath);
|
||||
|
||||
Upload up(api, token);
|
||||
|
||||
for (auto &song : songs)
|
||||
{
|
||||
up.uploadSongWithMetadata(album, song, cover);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma region private
|
||||
|
||||
@@ -10,6 +10,12 @@ namespace Models
|
||||
{
|
||||
nlohmann::json s;
|
||||
s["title"] = this->title;
|
||||
s["artist"] = this->artist;
|
||||
s["album"] = this->album;
|
||||
s["genre"] = this->genre;
|
||||
s["year"] = this->year;
|
||||
s["track"] = this->track;
|
||||
s["disc"] = this->disc;
|
||||
|
||||
return s.dump();
|
||||
}
|
||||
|
||||
@@ -43,9 +43,6 @@ namespace Parsers
|
||||
|
||||
}
|
||||
|
||||
// TODO: For now I will hard code
|
||||
// the api version since I am only
|
||||
// on version 1
|
||||
api.version = "v1";
|
||||
}
|
||||
#pragma functions
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace Syncers
|
||||
|
||||
void Upload::uploadSongWithMetadata(Managers::CommitManager::Album &album, Models::Song& song, Models::CoverArt &cover)
|
||||
{
|
||||
this->api.endpoint.append("/upload/with/data");
|
||||
this->api.endpoint.assign("song/data/upload/with/data");
|
||||
|
||||
try
|
||||
{
|
||||
@@ -133,8 +133,9 @@ namespace Syncers
|
||||
|
||||
const auto meta = s.dump();
|
||||
|
||||
// cout<<"\n\nMeta:\n"<<meta<<"\n";
|
||||
cout<<"\n\nMeta:\n"<<meta<<"\n";
|
||||
|
||||
/**
|
||||
auto multipart = cpr::Multipart{{"cover", cpr::File{cover.path}},
|
||||
{"metadata", meta},
|
||||
{"file", cpr::File{song.songPath}}};
|
||||
@@ -145,6 +146,7 @@ namespace Syncers
|
||||
|
||||
cout << "status code: " << r.status_code<< std::endl;
|
||||
cout << r.text << endl;
|
||||
*/
|
||||
}
|
||||
catch (exception &e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user