Mercurial > minori
annotate src/track/types.cc @ 134:54c9d36207db
settings/recognition: implement real media player stuff
| author | Paper <mrpapersonic@gmail.com> | 
|---|---|
| date | Thu, 09 Nov 2023 13:53:04 -0500 | 
| parents | 39521c47c7a3 | 
| children | 0a458cb26ff4 | 
| rev | line source | 
|---|---|
| 118 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 1 #include "track/types.h" | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 2 #include "core/filesystem.h" | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 3 #include "core/json.h" | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 4 #include <fstream> | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 5 #include <vector> | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 6 #include <string> | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 7 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 8 using namespace nlohmann::literals::json_literals; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 9 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 10 namespace Track { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 11 namespace Types { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 12 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 13 static nlohmann::json default_players = { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 14 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 15 {"name", "VLC"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 16 #ifdef MACOSX | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 17 {"executable", "VLC"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 18 #elif defined(WIN32) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 19 {"executable", "vlc.exe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 20 #else | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 21 {"executable", "vlc"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 22 #endif | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 23 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 24 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 25 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 26 {"name", "mpv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 27 #ifdef WIN32 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 28 {"executable", "mpv.exe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 29 #else | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 30 {"executable", "mpv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 31 #endif | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 32 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 33 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 34 #ifdef WIN32 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 35 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 36 {"name", "MPC-HC x64"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 37 {"executable", "mpc-hc64.exe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 38 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 39 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 40 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 41 {"name", "MPC-HC"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 42 {"executable", "mpc-hc.exe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 43 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 44 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 45 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 46 {"name", "Windows Media Player"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 47 {"executable", "wmplayer.exe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 48 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 49 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 50 #elif defined(MACOSX) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 51 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 52 {"name", "IINA"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 53 {"executable", "IINA"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 54 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 55 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 56 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 57 {"name", "QuickTime Player"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 58 {"executable", "QuickTime Player"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 59 {"enabled", false} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 60 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 61 #else | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 62 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 63 {"name", "MPC-Qt"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 64 {"executable", "mpc-qt"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 65 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 66 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 67 #endif | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 68 }; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 69 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 70 static nlohmann::json default_extensions = { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 71 /* These are the four most common file extensions | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 72 according to... me. */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 73 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 74 {"extension", "mkv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 75 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 76 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 77 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 78 {"extension", "mp4"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 79 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 80 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 81 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 82 {"extension", "m4v"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 83 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 84 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 85 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 86 {"extension", "avi"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 87 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 88 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 89 /* Matroska's retarded inbred cousin */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 90 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 91 {"extension", "webm"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 92 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 93 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 94 /* QuickTime */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 95 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 96 {"extension", "mov"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 97 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 98 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 99 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 100 {"extension", "qt"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 101 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 102 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 103 /* MPEG transport stream */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 104 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 105 {"extension", "mts"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 106 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 107 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 108 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 109 {"extension", "m2ts"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 110 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 111 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 112 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 113 {"extension", "ts"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 114 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 115 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 116 /* MPEG-1 */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 117 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 118 {"extension", "mpg"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 119 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 120 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 121 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 122 {"extension", "mpeg"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 123 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 124 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 125 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 126 {"extension", "mpe"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 127 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 128 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 129 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 130 {"extension", "mpv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 131 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 132 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 133 /* MPEG-2 */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 134 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 135 {"extension", "m2v"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 136 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 137 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 138 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 139 {"extension", "mp2"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 140 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 141 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 142 /* 3GPP */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 143 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 144 {"extension", "3gp"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 145 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 146 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 147 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 148 {"extension", "3g2"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 149 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 150 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 151 /* Windows Media */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 152 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 153 {"extension", "asf"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 154 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 155 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 156 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 157 {"extension", "wmv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 158 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 159 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 160 /* Adobe Flash */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 161 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 162 {"extension", "flv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 163 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 164 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 165 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 166 {"extension", "swf"}, // lol | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 167 {"enabled", false} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 168 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 169 /* Ogg Video */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 170 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 171 {"extension", "ogv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 172 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 173 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 174 /* RealPlayer... LOL */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 175 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 176 {"extension", "rm"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 177 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 178 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 179 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 180 {"extension", "rmvb"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 181 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 182 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 183 /* Nullsoft Streaming Video (Winamp) */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 184 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 185 {"extension", "nsv"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 186 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 187 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 188 /* Material Exchange Format (Sony) */ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 189 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 190 {"extension", "mxf"}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 191 {"enabled", true} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 192 }, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 193 }; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 194 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 195 void LoadPlayers(std::vector<MediaPlayer>& players) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 196 nlohmann::json json; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 197 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 198 std::ifstream is(Filesystem::GetPlayersPath().GetPath()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 199 if (!is.is_open()) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 200 json = default_players; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 201 else | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 202 is >> json; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 203 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 204 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 205 players.reserve(json.size()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 206 for (const auto& item : json) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 207 MediaPlayer player; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 208 player.SetName(JSON::GetString(item, "/name"_json_pointer)); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 209 player.SetExecutable(JSON::GetString(item, "/executable"_json_pointer)); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 210 player.SetEnabled(JSON::GetBoolean(item, "/enabled"_json_pointer)); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 211 players.push_back(player); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 212 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 213 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 214 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 215 void LoadExtensions(std::vector<MediaExtension>& extensions) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 216 nlohmann::json json; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 217 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 218 std::ifstream is(Filesystem::GetExtensionsPath().GetPath()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 219 if (!is.is_open()) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 220 json = default_extensions; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 221 else | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 222 is >> json; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 223 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 224 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 225 extensions.reserve(json.size()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 226 for (const auto& item : json) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 227 MediaExtension extension; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 228 extension.SetExtension(JSON::GetString(item, "/extension"_json_pointer)); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 229 extension.SetEnabled(JSON::GetBoolean(item, "/enabled"_json_pointer)); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 230 extensions.push_back(extension); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 231 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 232 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 233 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 234 void SavePlayers(const std::vector<MediaPlayer>& players) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 235 nlohmann::json json = {}; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 236 for (const auto& player : players) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 237 json.push_back({ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 238 {"name", player.GetName()}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 239 {"executable", player.GetExecutable()}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 240 {"enabled", player.GetEnabled()} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 241 }); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 242 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 243 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 244 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 245 std::ofstream os(Filesystem::GetPlayersPath().GetPath()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 246 if (!os.is_open()) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 247 return; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 248 os << std::setw(4) << json << std::endl; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 249 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 250 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 251 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 252 void SaveExtensions(const std::vector<MediaExtension>& extensions) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 253 nlohmann::json json = {}; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 254 for (const auto& extension : extensions) { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 255 json.push_back({ | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 256 {"extension", extension.GetExtension()}, | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 257 {"enabled", extension.GetEnabled()} | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 258 }); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 259 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 260 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 261 { | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 262 std::ofstream os(Filesystem::GetExtensionsPath().GetPath()); | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 263 if (!os.is_open()) | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 264 return; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 265 os << std::setw(4) << json << std::endl; | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 266 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 267 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 268 | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 269 } | 
| 
39521c47c7a3
*: another huge megacommit, SORRY
 Paper <mrpapersonic@gmail.com> parents: diff
changeset | 270 } | 
