74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef UTIL_H
 | 
						|
#define UTIL_H
 | 
						|
 | 
						|
#include <filesystem>
 | 
						|
#include <algorithm>
 | 
						|
#include <string>
 | 
						|
#include <array>
 | 
						|
#include <cstring>
 | 
						|
#include <string_view>
 | 
						|
enum class FileType {
 | 
						|
	MUSIC,
 | 
						|
	VIDEO,
 | 
						|
	IMG,
 | 
						|
	ERRORTYPE
 | 
						|
};
 | 
						|
 | 
						|
const std::array<std::string_view, 1> MusicFileExtensive = {
 | 
						|
	"mp3"
 | 
						|
};
 | 
						|
 | 
						|
const std::array<std::string_view, 1> VideoFileExtensive = {
 | 
						|
	"mp4"
 | 
						|
};
 | 
						|
 | 
						|
const std::array<std::string_view, 3> ImgFileExtensive = {
 | 
						|
	"jpeg",
 | 
						|
	"jpg",
 | 
						|
	"png",
 | 
						|
};
 | 
						|
 | 
						|
using namespace std::filesystem;
 | 
						|
class Util {
 | 
						|
private:
 | 
						|
	static std::string_view GetFileExtensive(const path& filepath) {
 | 
						|
		static std::string ext = filepath.extension().string();
 | 
						|
		ext.erase(std::ranges::remove_if(ext, [](char c) {return c == '.'; }).begin(), ext.end());
 | 
						|
		return std::string_view{ ext.c_str() };
 | 
						|
	}
 | 
						|
	static bool IsMusic(const path& filepath) {
 | 
						|
		const auto ext = GetFileExtensive(filepath);
 | 
						|
		for (const auto& it : MusicFileExtensive) {
 | 
						|
			if (it == ext)
 | 
						|
				return true;
 | 
						|
		}
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	static bool IsVideo(const path& filepath) {
 | 
						|
		const auto ext = GetFileExtensive(filepath);
 | 
						|
		for (const auto& it : VideoFileExtensive) {
 | 
						|
			if (it == ext)
 | 
						|
				return true;
 | 
						|
		}
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	static bool IsImg(const path& filepath) {
 | 
						|
		const auto ext = GetFileExtensive(filepath);
 | 
						|
		for (const auto& it : ImgFileExtensive) {
 | 
						|
			if (it == ext)
 | 
						|
				return true;
 | 
						|
		}
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
public:
 | 
						|
	static FileType GetFileType(const path& filepath) {
 | 
						|
		if (IsMusic(filepath)) return FileType::MUSIC;
 | 
						|
		if (IsVideo(filepath)) return FileType::VIDEO;
 | 
						|
		if (IsImg(filepath))   return FileType::IMG;
 | 
						|
		return FileType::ERRORTYPE;
 | 
						|
	}
 | 
						|
};
 | 
						|
 | 
						|
#endif |