File indexing completed on 2024-05-19 04:48:27
0001 #pragma once 0002 0003 #include <MauiKit3/Core/fmh.h> 0004 0005 #include <QMap> 0006 #include <QVariant> 0007 0008 #include <functional> 0009 0010 namespace PULPO 0011 { 0012 enum class SERVICES : uint8_t { LastFm, Spotify, iTunes, MusicBrainz, Genius, LyricWikia, Wikipedia, WikiLyrics, Deezer, ALL, NONE }; 0013 0014 enum class ONTOLOGY : uint8_t { ARTIST, ALBUM, TRACK }; 0015 0016 enum class INFO : uint8_t { ARTWORK, WIKI, TAGS, METADATA, LYRICS, ALL, NONE }; 0017 0018 /*Generic context names. It's encouraged to use these instead of a unkown string*/ 0019 enum class PULPO_CONTEXT : uint8_t { 0020 TRACK_STAT, 0021 TRACK_NUMBER, 0022 TRACK_TITLE, 0023 TRACK_DATE, 0024 TRACK_TEAM, 0025 TRACK_AUTHOR, 0026 TRACK_LANGUAGE, 0027 TRACK_SIMILAR, 0028 0029 ALBUM_TEAM, 0030 ALBUM_STAT, 0031 ALBUM_TITLE, 0032 ALBUM_DATE, 0033 ALBUM_LANGUAGE, 0034 ALBUM_SIMILAR, 0035 ALBUM_LABEL, 0036 0037 ARTIST_STAT, 0038 ARTIST_TITLE, 0039 ARTIST_DATE, 0040 ARTIST_LANGUAGE, 0041 ARTIST_PLACE, 0042 ARTIST_SIMILAR, 0043 ARTIST_TEAM, 0044 ARTIST_ALIAS, 0045 ARTIST_GENDER, 0046 0047 GENRE, 0048 TAG, 0049 WIKI, 0050 IMAGE, 0051 LYRIC, 0052 SOURCE 0053 0054 }; 0055 0056 static const QMap<PULPO_CONTEXT, QString> CONTEXT_MAP = {{PULPO_CONTEXT::ALBUM_STAT, "album_stat"}, 0057 {PULPO_CONTEXT::ALBUM_TITLE, "album_title"}, 0058 {PULPO_CONTEXT::ALBUM_DATE, "album_date"}, 0059 {PULPO_CONTEXT::ALBUM_LANGUAGE, "album_language"}, 0060 {PULPO_CONTEXT::ALBUM_SIMILAR, "album_similar"}, 0061 {PULPO_CONTEXT::ALBUM_LABEL, "album_label"}, 0062 {PULPO_CONTEXT::ALBUM_TEAM, "album_team"}, 0063 0064 {PULPO_CONTEXT::ARTIST_STAT, "artist_stat"}, 0065 {PULPO_CONTEXT::ARTIST_TITLE, "artist_title"}, 0066 {PULPO_CONTEXT::ARTIST_DATE, "artist_date"}, 0067 {PULPO_CONTEXT::ARTIST_LANGUAGE, "artist_language"}, 0068 {PULPO_CONTEXT::ARTIST_PLACE, "artist_place"}, 0069 {PULPO_CONTEXT::ARTIST_SIMILAR, "artist_similar"}, 0070 {PULPO_CONTEXT::ARTIST_ALIAS, "artist_alias"}, 0071 {PULPO_CONTEXT::ARTIST_GENDER, "artist_gender"}, 0072 {PULPO_CONTEXT::ARTIST_TEAM, "artist_team"}, 0073 0074 {PULPO_CONTEXT::TRACK_STAT, "track_stat"}, 0075 {PULPO_CONTEXT::TRACK_DATE, "track_date"}, 0076 {PULPO_CONTEXT::TRACK_TITLE, "track_title"}, 0077 {PULPO_CONTEXT::TRACK_NUMBER, "track_number"}, 0078 {PULPO_CONTEXT::TRACK_TEAM, "track_team"}, 0079 {PULPO_CONTEXT::TRACK_AUTHOR, "track_author"}, 0080 {PULPO_CONTEXT::TRACK_LANGUAGE, "track_language"}, 0081 {PULPO_CONTEXT::TRACK_SIMILAR, "track_similar"}, 0082 0083 {PULPO_CONTEXT::GENRE, "genre"}, 0084 {PULPO_CONTEXT::TAG, "tag"}, 0085 {PULPO_CONTEXT::WIKI, "wiki"}, 0086 {PULPO_CONTEXT::IMAGE, "image"}, 0087 {PULPO_CONTEXT::LYRIC, "lyric"}, 0088 {PULPO_CONTEXT::SOURCE, "source"} 0089 0090 }; 0091 0092 enum class RECURSIVE : bool { ON = true, OFF = false }; 0093 0094 typedef QMap<PULPO_CONTEXT, QVariant> VALUE; 0095 typedef QMap<INFO, VALUE> INFO_K; 0096 // typedef QMap<ONTOLOGY, INFO_K> RESPONSE; 0097 0098 typedef QMap<ONTOLOGY, QList<INFO>> SCOPE; 0099 0100 struct RESPONSE { 0101 PULPO_CONTEXT context; 0102 QVariant value; 0103 }; 0104 typedef QList<PULPO::RESPONSE> RESPONSES; 0105 0106 struct REQUEST { 0107 FMH::MODEL track; 0108 0109 PULPO::ONTOLOGY ontology; 0110 QList<PULPO::INFO> info; 0111 QList<PULPO::SERVICES> services; 0112 0113 std::function<void(REQUEST request, RESPONSES responses)> callback = nullptr; 0114 }; 0115 } 0116