initial Commit

This commit is contained in:
2026-06-15 22:11:47 +02:00
commit 293756cf1f
13 changed files with 96038 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
data/
+33
View File
@@ -0,0 +1,33 @@
# Compiler settings
CXX := g++
CXXFLAGS := -std=c++23 -Wall -Wextra -Wpedantic
LDFLAGS := $(shell pkg-config --cflags --libs taglib)
# Source and object files
SRCS := main.cpp src/Tag.cpp src/File.cpp
OBJS := $(SRCS:.cpp=.o)
# Target binary
TARGET := soundServe
# Phony targets
.PHONY: all clean run
# Default target
all: $(TARGET)
# Link object files into final binary
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
# Compile .cpp files into .o files
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# Clean build artifacts
clean:
rm -f $(OBJS) $(TARGET)
# Run the program
run: $(TARGET)
./$(TARGET)
+21
View File
@@ -0,0 +1,21 @@
#pragma once
#include "Metadata.h"
#include <filesystem>
#include <vector>
#include <string>
#define MUSIC_FOLDER = {"data/"};
namespace fs = std::filesystem;
class File {
public:
void importFile( std::string fileName );
void importFolder( std::string folderPath );
std::vector<std::string> filenames_;
private:
std::string path_;
fs::path musicFolder_ MUSIC_FOLDER;
std::string fileName_;
fs::path fp_ = musicFolder_ / fileName_;
};
+19
View File
@@ -0,0 +1,19 @@
#pragma once
#include <string>
#include <taglib/tag.h>
struct Metadata {
TagLib::String artist;
TagLib::String title;
TagLib::String album;
TagLib::String albumArtist;
unsigned int year;
std::string artwork;
TagLib::String genre;
unsigned int trackNr;
double length;
std::string format;
unsigned int sampleRate;
unsigned int bitRate;
};
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include "Metadata.h"
#include <taglib/tstring.h>
#include <taglib/fileref.h>
class Tag {
public:
void readTag( TagLib::FileName fileName );
Metadata getMetadata() const;
std::string& getFilePath() const;
private:
Metadata metadata_;
std::string filePath_;
};
+95864
View File
File diff suppressed because it is too large Load Diff
+36
View File
@@ -0,0 +1,36 @@
#include "include/Tag.h"
#include "include/File.h"
//#include <filesystem>
#include <iostream>
#include <taglib/fileref.h>
//namespace fs = std::filesystem;
int main() {
File file;
Tag tag;
//fs::path folderPath{ "data" };
file.importFolder( "/home/fegger/Projects/soundServe/data/" );
for ( auto& fp : file.filenames_) {
std::cout << fp << "\n";
}
for ( auto& file : file.filenames_ ) {
const char* fp = file.c_str();
tag.readTag( fp );
Metadata meta = tag.getMetadata();
std::cout << "Artist: " << meta.artist
<< "\nTitle: " << meta.title
<< "\nAlbum: " << meta.album
<< "\nTrack: " << meta.trackNr
<< "\nYear: " << meta.year
<< "\nGenre: " << meta.genre
<< "\nSamplerate: " << meta.sampleRate
<< "\nBitrate: " << meta.bitRate
<< "\nLength: " << meta.length;
std::cout << "\n----------------------------------------------------------------------\n";
}
return 0;
}
BIN
View File
Binary file not shown.
Executable
BIN
View File
Binary file not shown.
+21
View File
@@ -0,0 +1,21 @@
#include "../include/File.h"
#include "../include/miniaudio.h"
#include <filesystem>
#include <vector>
namespace fs = std::filesystem;
void File::importFolder( std::string folderPath ) {
for ( const auto& audioFile : fs::directory_iterator{ folderPath }) {
filenames_.reserve( 20 );
filenames_.push_back( audioFile.path() );
}
}
void File::importFile( std::string fileName ) {
fileName_ = fileName;
fs::path fp = fp_;
}
BIN
View File
Binary file not shown.
+26
View File
@@ -0,0 +1,26 @@
#include "../include/Metadata.h"
#include "../include/Tag.h"
#include <taglib/tag.h>
#include <taglib/fileref.h>
void Tag::readTag( TagLib::FileName fileName ){
TagLib::FileRef f( fileName );
if ( !f.isNull() ) {
metadata_.artist = ( f.tag()->artist().isEmpty() ) ? "" : f.tag()->artist();
metadata_.title = ( f.tag()->title().isEmpty() ) ? "" : f.tag()->title();
metadata_.album = ( f.tag()->album().isEmpty() ) ? "" : f.tag()->album();
metadata_.trackNr = f.tag()->track();
metadata_.year = f.tag()->year();
metadata_.genre = f.tag()->genre();
metadata_.sampleRate = f.audioProperties()->sampleRate();
metadata_.bitRate = f.audioProperties()->bitrate();
metadata_.length = f.audioProperties()->lengthInSeconds();
// TODO
// file format
}
}
Metadata Tag::getMetadata() const {
return metadata_;
}
BIN
View File
Binary file not shown.