index.html 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>deemix</title>
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  6. <link rel="stylesheet" type="text/css" href="css/material-icons.css"/>
  7. <link rel="stylesheet" type="text/css" href="css/materialize.min.css"/>
  8. <link rel="stylesheet" type="text/css" href="css/animate.css">
  9. <link rel="stylesheet" type="text/css" href="css/style.css"/>
  10. <link rel="stylesheet" type="text/css" href="css/darkMode.css" name="darkMode" disabled/>
  11. <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png"/>
  12. <link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png"/>
  13. <link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png"/>
  14. <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#5bbad5"/>
  15. <link rel="shortcut icon" href="/favicons/favicon.ico"/>
  16. <meta name="msapplication-TileColor" content="#23232c"/>
  17. <link rel="manifest" href="/manifest.json"/>
  18. <meta name="msapplication-config" content="/favicons/browserconfig.xml"/>
  19. <meta name="theme-color" content="#23232c"/>
  20. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=0">
  21. <script type='text/javascript'>
  22. if (eval(localStorage.selectedTheme == "dark")){
  23. document.getElementsByName("darkMode")[0].removeAttribute("disabled");
  24. }
  25. </script>
  26. <meta charset="utf-8"/>
  27. </head>
  28. <body>
  29. <!--#############################################MODAL_SETTINGS############################################-->
  30. <div id="modal_settings" class="modal modal-fixed-footer">
  31. <div class="modal-content">
  32. <h4 class="col s12">Settings</h4>
  33. <h6 class="col s12 secondary-text"><i class="material-icons left">person</i>Login</h6><hr>
  34. <div class="row">
  35. <div class="col s12 hide" id="logged_in_info">
  36. <img id="modal_settings_picture" src="" alt="Profile Picture" class="circle left" style="height:125px; margin-right: 12px;"/>
  37. <p>You are logged in as <b id="modal_settings_username"></b></p>
  38. <button class="waves-effect waves-light btn" id="modal_settings_btn_logout">Logout</button>
  39. </div>
  40. <p class="col s12" id="login_email_btn_container">
  41. <a href="#modal_login" class="modal-trigger waves-effect waves-light btn" id="login_email_btn" style="width:100%;">Login with e-mail</a>
  42. </p>
  43. <h6 class="red-text" id="login-res-text"></h6>
  44. <div class="inline-input-group col s12">
  45. <input autocomplete="off" type="password" id="modal_login_input_arl" placeholder="ARL"/>
  46. <label for="modal_login_input_arl"></label>
  47. <button class="btn btn-input btn-flat deezloader-primary white-text" id="modal_settings_btn_copyArl"><i class="material-icons">assignment</i></button>
  48. </div>
  49. <p class="col s12"><a href="https://codeberg.org/RemixDev/deemix/wiki/Getting-your-own-ARL" target="_blank">How do I get my arl?</a></p>
  50. <p class="col s12"><button class="deezloader-secondary waves-effect waves-light btn" style="width:100%;" id="modal_settings_btn_updateArl">Update ARL</button></p>
  51. </div>
  52. <h6 class="col s12 secondary-text"><i class="material-icons left">folder</i>Download Path</h6><hr>
  53. <div class="row">
  54. <div class="input-field col s12">
  55. <input autocomplete="off" type="text" id="modal_settings_input_downloadLocation"/>
  56. <label for="modal_settings_input_downloadLocation">Download folder path</label>
  57. </div>
  58. </div>
  59. <h6 class="col s12 secondary-text"><i class="material-icons left">font_download</i>Templates</h6><hr>
  60. <div class="row">
  61. <div class="input-field col s12">
  62. <input autocomplete="off" type="text" id="modal_settings_input_tracknameTemplate"/>
  63. <label for="modal_settings_input_tracknameTemplate">Tracknames template</label>
  64. </div>
  65. </div>
  66. <div class="row">
  67. <div class="input-field col s12">
  68. <input autocomplete="off" type="text" id="modal_settings_input_albumTracknameTemplate"/>
  69. <label for="modal_settings_input_albumTracknameTemplate">Album tracknames template</label>
  70. </div>
  71. </div>
  72. <div class="row">
  73. <div class="input-field col s12">
  74. <input autocomplete="off" type="text" id="modal_settings_input_playlistTracknameTemplate"/>
  75. <label for="modal_settings_input_playlistTracknameTemplate">Playlist tracknames template</label>
  76. </div>
  77. </div>
  78. <h6 class="col s12 secondary-text"><i class="material-icons left">create_new_folder</i>Folders</h6><hr>
  79. <div class="row">
  80. <div class="col s12 m4">
  81. <div class="switch settings_switch">
  82. <span>Create folders for Playlists</span>
  83. <label>
  84. <input type="checkbox" id="modal_settings_cbox_createPlaylistFolder" class="filled-in"/>
  85. <span class="lever"></span>
  86. </label>
  87. </div>
  88. <div class="input-field">
  89. <input autocomplete="off" type="text" id="modal_settings_input_playlistNameTemplate"/>
  90. <label for="modal_settings_input_playlistNameTemplate">Playlist names template</label>
  91. </div>
  92. </div>
  93. <div class="col s12 m4">
  94. <div class="switch settings_switch">
  95. <span>Create folders for Artists</span>
  96. <label>
  97. <input type="checkbox" id="modal_settings_cbox_createArtistFolder"/>
  98. <span class="lever"></span>
  99. </label>
  100. </div>
  101. <div class="input-field">
  102. <input autocomplete="off" type="text" id="modal_settings_input_artistNameTemplate"/>
  103. <label for="modal_settings_input_artistNameTemplate">Artist names template</label>
  104. </div>
  105. </div>
  106. <div class="col s12 m4">
  107. <div class="switch settings_switch">
  108. <span>Create folders for Albums</span>
  109. <label>
  110. <input type="checkbox" id="modal_settings_cbox_createAlbumFolder"/>
  111. <span class="lever"></span>
  112. </label>
  113. </div>
  114. <div class="input-field">
  115. <input autocomplete="off" type="text" id="modal_settings_input_albumNameTemplate"/>
  116. <label for="modal_settings_input_albumNameTemplate">Album names template</label>
  117. </div>
  118. </div>
  119. <div class="col s12 switch settings_switch">
  120. <span>Create folders for CDs</span>
  121. <label>
  122. <input type="checkbox" id="modal_settings_cbox_createCDFolder" class="filled-in"/>
  123. <span class="lever"></span>
  124. </label>
  125. </div>
  126. <div class="col s12 switch settings_switch">
  127. <span>Create Artist, Albums and CDs folders for Playlists too</span>
  128. <label>
  129. <input type="checkbox" id="modal_settings_cbox_createStructurePlaylist" class="filled-in"/>
  130. <span class="lever"></span>
  131. </label>
  132. </div>
  133. <div class="col s12 switch settings_switch">
  134. <span>Create album folders for single tracks</span>
  135. <label>
  136. <input type="checkbox" id="modal_settings_cbox_createSingleFolder" class="filled-in"/>
  137. <span class="lever"></span>
  138. </label>
  139. </div>
  140. </div>
  141. <h6 class="col s12 secondary-text"><i class="material-icons left">title</i>Track titles</h6><hr>
  142. <div class="row">
  143. <div class="col s12 m4 switch settings_switch">
  144. <span class="tooltipped" data-position="top" data-delay="500"
  145. data-tooltip="Adds 0s before %number% to have the same character length">Add padding to track numbers</span>
  146. <label>
  147. <input type="checkbox" id="modal_settings_cbox_padTracks" class="filled-in"/>
  148. <span class="lever"></span>
  149. </label>
  150. </div>
  151. <div class="input-field col s12 m4">
  152. <input autocomplete="off" type="number" id="modal_settings_number_paddingSize" min="0"/>
  153. <label for="modal_settings_number_paddingSize">Overwrite padding size</label>
  154. </div>
  155. <div class="input-field col s12 m4">
  156. <input autocomplete="off" type="text" id="modal_settings_input_illegalCharacterReplacer" min="0"/>
  157. <label for="modal_settings_input_illegalCharacterReplacer">Illegal character replacer</label>
  158. </div>
  159. </div>
  160. <h6 class="col s12 secondary-text"><i class="material-icons left">get_app</i>Downloads</h6><hr>
  161. <div class="row">
  162. <div class="input-field col s12 m6">
  163. <input autocomplete="off" type="number" id="modal_settings_number_queueConcurrency" min="1"/>
  164. <label for="modal_settings_number_queueConcurrency">Concurrent download limit</label>
  165. </div>
  166. <div class="input-field col s12 m6">
  167. <select name="maxBitrate" id="modal_settings_select_maxBitrate">
  168. <option value="9">FLAC 1411kbps</option>
  169. <option value="3">MP3 320kbps</option>
  170. <option value="1">MP3 128kbps</option>
  171. </select>
  172. <label for="modal_settings_select_maxBitrate">Preferred bitrate</label>
  173. </div>
  174. <div class="input-field col s12">
  175. <select name="overwriteFile" id="modal_settings_select_overwriteFile">
  176. <option value="y">Yes, overwrite the files</option>
  177. <option value="n">No, don't overwrite the files</option>
  178. <option value="e">No, and don't look at the extension</option>
  179. <option value="b">No, keep both files and add a number to the duplicate</option>
  180. <option value="t">Overwrite only the tags</option>
  181. </select>
  182. <label for="modal_settings_select_overwriteFile">Should I overwrite the files?</label>
  183. </div>
  184. <div class="col s12 switch settings_switch">
  185. <span>Fallback to lower bitrates if preferred is not available</span>
  186. <label>
  187. <input type="checkbox" id="modal_settings_cbox_fallbackBitrate" class="filled-in"/>
  188. <span class="lever"></span>
  189. </label>
  190. </div>
  191. <div class="col s12 switch settings_switch">
  192. <span>Fallback to search if song is not available</span>
  193. <label>
  194. <input type="checkbox" id="modal_settings_cbox_fallbackSearch" class="filled-in"/>
  195. <span class="lever"></span>
  196. </label>
  197. </div>
  198. <div class="col s12 switch settings_switch">
  199. <span>Create log file for Errors inside download folder</span>
  200. <label>
  201. <input type="checkbox" id="modal_settings_cbox_logErrors" class="filled-in"/>
  202. <span class="lever"></span>
  203. </label>
  204. </div>
  205. <div class="col s12 switch settings_switch">
  206. <span>Create log file for Alternatives inside download folder</span>
  207. <label>
  208. <input type="checkbox" id="modal_settings_cbox_logSearched" class="filled-in"/>
  209. <span class="lever"></span>
  210. </label>
  211. </div>
  212. <div class="col s12 switch settings_switch">
  213. <span>Download Synced Lyrics File (.lrc)</span>
  214. <label>
  215. <input type="checkbox" id="modal_settings_cbox_syncedlyrics" class="filled-in"/>
  216. <span class="lever"></span>
  217. </label>
  218. </div>
  219. <div class="col s12 switch settings_switch">
  220. <span>Create M3U8 (Playlist) File</span>
  221. <label>
  222. <input type="checkbox" id="modal_settings_cbox_createM3U8File" class="filled-in"/>
  223. <span class="lever"></span>
  224. </label>
  225. </div>
  226. <div class="input-field col s12">
  227. <input autocomplete="off" type="text" id="modal_settings_input_playlistFilenameTemplate"/>
  228. <label for="modal_settings_input_playlistFilenameTemplate">Playlist filename template</label>
  229. </div>
  230. <div class="col s12 switch settings_switch">
  231. <span>Save download queue on app closing</span>
  232. <label>
  233. <input type="checkbox" id="modal_settings_cbox_saveDownloadQueue" class="filled-in"/>
  234. <span class="lever"></span>
  235. </label>
  236. </div>
  237. </div>
  238. <h6 class="col s12 secondary-text"><i class="material-icons left">album</i>Album Covers</h6><hr>
  239. <div class="row">
  240. <div class="col s12 m6">
  241. <div class="switch settings_switch">
  242. <span>Save Album Artwork</span>
  243. <label>
  244. <input type="checkbox" id="modal_settings_cbox_saveArtwork" class="filled-in"/>
  245. <span class="lever"></span>
  246. </label>
  247. </div>
  248. <div class="input-field">
  249. <input autocomplete="off" type="text" id="modal_settings_input_coverImageTemplate"/>
  250. <label for="modal_settings_input_coverImageTemplate">Album Artwork Name Template</label>
  251. </div>
  252. </div>
  253. <div class="col s12 m6 ">
  254. <div class="switch settings_switch">
  255. <span>Save Artist Artwork</span>
  256. <label>
  257. <input type="checkbox" id="modal_settings_cbox_saveArtworkArtist" class="filled-in"/>
  258. <span class="lever"></span>
  259. </label>
  260. </div>
  261. <div class="input-field">
  262. <input autocomplete="off" type="text" id="modal_settings_input_artistImageTemplate"/>
  263. <label for="modal_settings_input_artistImageTemplate">Artist Artwork Name Template</label>
  264. </div>
  265. </div>
  266. </div>
  267. <div class="row">
  268. <div class="input-field col s12 m6">
  269. <select name="embeddedArtworkSize" id="modal_settings_select_embeddedArtworkSize">
  270. <option value="1800">1800x1800</option>
  271. <option value="1400">1400x1400</option>
  272. <option value="1200">1200x1200</option>
  273. <option value="1000">1000x1000</option>
  274. <option value="800">800x800</option>
  275. <option value="500">500x500</option>
  276. <option value="250">250x250</option>
  277. </select>
  278. <label for="modal_settings_select_embeddedArtworkSize">Embedded Artwork Size</label>
  279. </div>
  280. <div class="input-field col s12 m6">
  281. <select name="localArtworkSize" id="modal_settings_select_localArtworkSize">
  282. <option value="1800">1800x1800</option>
  283. <option value="1400">1400x1400</option>
  284. <option value="1200">1200x1200</option>
  285. <option value="1000">1000x1000</option>
  286. <option value="800">800x800</option>
  287. <option value="500">500x500</option>
  288. <option value="250">250x250</option>
  289. </select>
  290. <label for="modal_settings_select_localArtworkSize">Local Artwork Size</label>
  291. </div>
  292. <div class="input-field col s12 m6">
  293. <select name="localArtworkFormat" id="modal_settings_select_localArtworkFormat">
  294. <option value="jpg">jpg</option>
  295. <option value="png">png</option>
  296. <option value="jpg,png">both</option>
  297. </select>
  298. <label for="modal_settings_select_localArtworkFormat">Local Artwork Format</label>
  299. </div>
  300. <div class="input-field col s12 m6">
  301. <input autocomplete="off" type="number" id="modal_settings_number_jpegImageQuality" min="1"/>
  302. <label for="modal_settings_number_jpegImageQuality">JPEG image quality</label>
  303. </div>
  304. <div class="col s12 switch settings_switch">
  305. <span>Save embedded artwork as as PNGs</span>
  306. <label>
  307. <input type="checkbox" id="modal_settings_cbox_embeddedArtworkPNG" class="filled-in"/>
  308. <span class="lever"></span>
  309. </label>
  310. </div>
  311. </div>
  312. <h6 class="col s12 secondary-text"><i class="material-icons left">list</i>Other</h6><hr>
  313. <div class="row">
  314. <div class="col s12 switch settings_switch">
  315. <span class="tooltipped" data-position="top" data-delay="500"
  316. data-tooltip="Replaces albums tags with the playlist ones">Save Playlist as Compilation</span>
  317. <label>
  318. <input type="checkbox" id="modal_settings_cbox_savePlaylistAsCompilation" class="filled-in"/>
  319. <span class="lever"></span>
  320. </label>
  321. </div>
  322. <div class="col s12 switch settings_switch">
  323. <span>Use Null Separator in MP3s</span>
  324. <label>
  325. <input type="checkbox" id="modal_settings_cbox_useNullSeparator" class="filled-in"/>
  326. <span class="lever"></span>
  327. </label>
  328. </div>
  329. <div class="col s12 switch settings_switch">
  330. <span>Save ID3v1 tags as well</span>
  331. <label>
  332. <input type="checkbox" id="modal_settings_cbox_saveID3v1" class="filled-in"/>
  333. <span class="lever"></span>
  334. </label>
  335. </div>
  336. <div class="input-field col s12">
  337. <select name="multiArtistSeparator" id="modal_settings_select_multiArtistSeparator">
  338. <option value="nothing">Save only the main artist</option>
  339. <option value="default">Default</option>
  340. <option value="andFeat">& and feat.</option>
  341. <option value=" & ">& with space</option>
  342. <option value=",">,</option>
  343. <option value=", ">, with space</option>
  344. <option value="/">/</option>
  345. <option value=" / ">/ with space</option>
  346. <option value=";">;</option>
  347. <option value="; ">; with space</option>
  348. </select>
  349. <label for="modal_settings_select_multiArtistSeparator">Artist Tag Format</label>
  350. </div>
  351. <div class="col s12 switch settings_switch">
  352. <span>Save only the main album artist</span>
  353. <label>
  354. <input type="checkbox" id="modal_settings_cbox_singleAlbumArtist" class="filled-in"/>
  355. <span class="lever"></span>
  356. </label>
  357. </div>
  358. <div class="col s12 switch settings_switch">
  359. <span>Keep "Various Artists" in the Album Artists</span>
  360. <label>
  361. <input type="checkbox" id="modal_settings_cbox_albumVariousArtists" class="filled-in"/>
  362. <span class="lever"></span>
  363. </label>
  364. </div>
  365. <div class="col s12 switch settings_switch">
  366. <span>Remove "(Album Version)" from tracknames</span>
  367. <label>
  368. <input type="checkbox" id="modal_settings_cbox_removeAlbumVersion" class="filled-in"/>
  369. <span class="lever"></span>
  370. </label>
  371. </div>
  372. <div class="col s12 switch settings_switch">
  373. <span>Remove combinations of artists</span>
  374. <label>
  375. <input type="checkbox" id="modal_settings_cbox_removeDuplicateArtists" class="filled-in"/>
  376. <span class="lever"></span>
  377. </label>
  378. </div>
  379. <div class="input-field col s12 m6">
  380. <select name="dateFormat" id="modal_settings_select_dateFormat">
  381. <option value="Y-M-D">YY/MM/DD</option>
  382. <option value="D-M-Y">DD/MM/YY</option>
  383. <option value="M-D-Y">MM/DD/YY</option>
  384. <option value="Y-D-M">YY/DD/MM</option>
  385. </select>
  386. <label for="modal_settings_select_dateFormat">Date Format for FLAC files</label>
  387. </div>
  388. <div class="input-field col s12 m6">
  389. <select name="featuredToTitle" id="modal_settings_select_featuredToTitle">
  390. <option value="0">Keep unchanged</option>
  391. <option value="1">Remove it from the title</option>
  392. <option value="3">Remove it from the title and the album title</option>
  393. <option value="2">Move it to the title</option>
  394. </select>
  395. <label for="modal_settings_select_featuredToTitle">What should I do with featured artists?</label>
  396. </div>
  397. <div class="input-field col s12 m6">
  398. <select name="titleCasing" id="modal_settings_select_titleCasing">
  399. <option value="nothing">Do not change</option>
  400. <option value="lower">UPPER CASE</option>
  401. <option value="upper">lower case</option>
  402. <option value="start">Start Case</option>
  403. <option value="sentence">Sentence case</option>
  404. </select>
  405. <label for="modal_settings_select_titleCasing">Case for Title</label>
  406. </div>
  407. <div class="input-field col s12 m6">
  408. <select name="artistCasing" id="modal_settings_select_artistCasing">
  409. <option value="nothing">Do not change</option>
  410. <option value="lower">UPPER CASE</option>
  411. <option value="upper">lower case</option>
  412. <option value="start">Start Case</option>
  413. <option value="sentence">Sentence case</option>
  414. </select>
  415. <label for="modal_settings_select_artistCasing">Case for Artist</label>
  416. </div>
  417. <div class="range-field col s12 m6">
  418. <label for="modal_settings_range_previewVolume">Preview Volume</label>
  419. <input type="range" min="0" max="100" id="modal_settings_range_previewVolume"/>
  420. </div>
  421. <div class="input-field col s12 m6">
  422. <input autocomplete="off" type="text" id="modal_settings_input_executeCommand"/>
  423. <label for="modal_settings_input_executeCommand">Command to execute after download</label>
  424. </div>
  425. </div>
  426. <div class="row">
  427. <div class="col s12">
  428. <a href="#modal_tags" class="modal-trigger waves-effect waves-light btn btn-large" style="width:100%;">Choose Which Tags To Save</a>
  429. </div>
  430. </div>
  431. <h6 class="col s12 secondary-text">Spotify Features</h6><hr>
  432. <p class="secondary-text">"Spotify Features" will <b>NOT</b> download music from Spotify.<br>This just enables a practical in app metadata converter. If a song is not on Deezer it can't be downloaded<br>You can see how to get the Client and Secret IDs <a href="https://codeberg.org/RemixDev/deemix/wiki/Enabling-Spotify-Features">here</a></p>
  433. <div class="row">
  434. <div class="input-field col s12 m6">
  435. <input autocomplete="off" type="text" id="modal_settings_input_spotifyClientID"/>
  436. <label for="modal_settings_input_spotifyClientID">Client ID</label>
  437. </div>
  438. <div class="input-field col s12 m6">
  439. <input autocomplete="off" type="password" id="modal_settings_input_spotifyClientSecret"/>
  440. <label for="modal_settings_input_spotifyClientSecret">Client Secret</label>
  441. </div>
  442. <div class="input-field col s12 m6">
  443. <input autocomplete="off" type="text" id="modal_settings_input_spotifyUser"/>
  444. <label for="modal_settings_input_spotifyUser">Spotify Username (for the Playlists Tab)</label>
  445. </div>
  446. </div>
  447. </div>
  448. <div class="modal-footer">
  449. <button class="modal-close waves-effect waves-light deezloader-primary btn" id="modal_settings_btn_saveSettings"><i class="material-icons right">save</i>Save</button>
  450. <button class="waves-effect btn-flat" id="modal_settings_btn_defaultSettings"><i class="material-icons right">settings_backup_restore</i><span class="hide-on-small-only">Default Settings</span></button>
  451. <button class="modal-close waves-effect btn-flat">Close</button>
  452. </div>
  453. </div>
  454. <!--#############################################MODAL_TAGS############################################-->
  455. <div id="modal_tags" class="modal modal-fixed-footer">
  456. <div class="modal-content">
  457. <div class="row">
  458. <h4 class="col s12">Saved Tags</h4>
  459. </div>
  460. <div class="row">
  461. <p class="col s12 m4">
  462. <label>
  463. <input type="checkbox" id="modal_tags_title" class="filled-in"/>
  464. <span>Title</span>
  465. </label>
  466. </p>
  467. <p class="col s12 m4">
  468. <label>
  469. <input type="checkbox" id="modal_tags_artist" class="filled-in"/>
  470. <span>Artist</span>
  471. </label>
  472. </p>
  473. <p class="col s12 m4">
  474. <label>
  475. <input type="checkbox" id="modal_tags_album" class="filled-in"/>
  476. <span>Album</span>
  477. </label>
  478. </p>
  479. <p class="col s12 m4">
  480. <label>
  481. <input type="checkbox" id="modal_tags_cover" class="filled-in"/>
  482. <span>Cover</span>
  483. </label>
  484. </p>
  485. <p class="col s12 m4">
  486. <label>
  487. <input type="checkbox" id="modal_tags_trackNumber" class="filled-in"/>
  488. <span>Track Number</span>
  489. </label>
  490. </p>
  491. <p class="col s12 m4">
  492. <label>
  493. <input type="checkbox" id="modal_tags_trackTotal" class="filled-in"/>
  494. <span>Track Total</span>
  495. </label>
  496. </p>
  497. <p class="col s12 m4">
  498. <label>
  499. <input type="checkbox" id="modal_tags_discNumber" class="filled-in"/>
  500. <span>Disc Number</span>
  501. </label>
  502. </p>
  503. <p class="col s12 m4">
  504. <label>
  505. <input type="checkbox" id="modal_tags_discTotal" class="filled-in"/>
  506. <span>Disc Total</span>
  507. </label>
  508. </p>
  509. <p class="col s12 m4">
  510. <label>
  511. <input type="checkbox" id="modal_tags_albumArtist" class="filled-in"/>
  512. <span>Album Artist</span>
  513. </label>
  514. </p>
  515. <p class="col s12 m4">
  516. <label>
  517. <input type="checkbox" id="modal_tags_genre" class="filled-in"/>
  518. <span>Genre</span>
  519. </label>
  520. </p>
  521. <p class="col s12 m4">
  522. <label>
  523. <input type="checkbox" id="modal_tags_year" class="filled-in"/>
  524. <span>Year</span>
  525. </label>
  526. </p>
  527. <p class="col s12 m4">
  528. <label>
  529. <input type="checkbox" id="modal_tags_date" class="filled-in"/>
  530. <span>Date</span>
  531. </label>
  532. </p>
  533. <p class="col s12 m4">
  534. <label>
  535. <input type="checkbox" id="modal_tags_explicit" class="filled-in"/>
  536. <span>Explicit</span>
  537. </label>
  538. </p>
  539. <p class="col s12 m4">
  540. <label>
  541. <input type="checkbox" id="modal_tags_isrc" class="filled-in"/>
  542. <span>ISRC</span>
  543. </label>
  544. </p>
  545. <p class="col s12 m4">
  546. <label>
  547. <input type="checkbox" id="modal_tags_length" class="filled-in"/>
  548. <span>Length</span>
  549. </label>
  550. </p>
  551. <p class="col s12 m4">
  552. <label>
  553. <input type="checkbox" id="modal_tags_barcode" class="filled-in"/>
  554. <span>Barcode</span>
  555. </label>
  556. </p>
  557. <p class="col s12 m4">
  558. <label>
  559. <input type="checkbox" id="modal_tags_bpm" class="filled-in"/>
  560. <span>BPM</span>
  561. </label>
  562. </p>
  563. <p class="col s12 m4">
  564. <label>
  565. <input type="checkbox" id="modal_tags_replayGain" class="filled-in"/>
  566. <span>Replay Gain</span>
  567. </label>
  568. </p>
  569. <p class="col s12 m4">
  570. <label>
  571. <input type="checkbox" id="modal_tags_label" class="filled-in"/>
  572. <span>Label</span>
  573. </label>
  574. </p>
  575. <p class="col s12 m4">
  576. <label>
  577. <input type="checkbox" id="modal_tags_lyrics" class="filled-in"/>
  578. <span>Unsynchronised Lyrics</span>
  579. </label>
  580. </p>
  581. <p class="col s12 m4">
  582. <label>
  583. <input type="checkbox" id="modal_tags_syncedLyrics" class="filled-in"/>
  584. <span>Synchronised Lyrics</span>
  585. </label>
  586. </p>
  587. <p class="col s12 m4">
  588. <label>
  589. <input type="checkbox" id="modal_tags_copyright" class="filled-in"/>
  590. <span>Copyright</span>
  591. </label>
  592. </p>
  593. <p class="col s12 m4">
  594. <label>
  595. <input type="checkbox" id="modal_tags_composer" class="filled-in"/>
  596. <span>Composer</span>
  597. </label>
  598. </p>
  599. <p class="col s12 m4">
  600. <label>
  601. <input type="checkbox" id="modal_tags_involvedPeople" class="filled-in"/>
  602. <span>Involved People</span>
  603. </label>
  604. </p>
  605. </div>
  606. </div>
  607. <div class="modal-footer">
  608. <button class="modal-close waves-effect btn-flat">Close</button>
  609. </div>
  610. </div>
  611. <!--#############################################MODAL_ABOUT############################################-->
  612. <div id="modal_about" class="modal modal-fixed-footer">
  613. <div class="modal-content">
  614. <div class="row">
  615. <h4 class="col s12">About the App</h4>
  616. </div>
  617. <div class="row">
  618. <ul class="collapsible" data-collapsible="accordion">
  619. <li>
  620. <div class="collapsible-header waves-effect"><i class="material-icons">info</i>About</div>
  621. <div class="collapsible-body">
  622. <p>
  623. <b>Made using: </b>deemix</br>
  624. <b>Version:</b> <span id="application_version_about"></span><br/>
  625. <b>Based on: </b>Deezloader Remix</br>
  626. <b>Interface:</b> <a href="http://materializecss.com/" target="_blank">Materialize CSS</a><br/>
  627. <br/>
  628. <b>Telegram Contacts</b><br/>
  629. <b><a href="https://t.me/RemixDevNews" target="_blank">News Channel</a></b><br/>
  630. <br>
  631. <b>Special Thanks to:</b><br>
  632. BasCurtiz for the app UI Design<br>
  633. <br>
  634. </p>
  635. </div>
  636. </li>
  637. <li>
  638. <div class="collapsible-header waves-effect"><i class="material-icons">warning</i>Attention!</div>
  639. <div class="collapsible-body">
  640. <p>The authors do not call to commit crimes!<br/>The usage of this tool may be illegal in your country, please inform yourself!<br/>The authors give no guarantees at all and aren't responsible for any damage or harm of any kind resulting from the use of this software!</p>
  641. </div>
  642. </li>
  643. <li>
  644. <div class="collapsible-header waves-effect"><i class="material-icons">copyright</i>License</div>
  645. <div class="collapsible-body">
  646. <p>
  647. <a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">
  648. <img alt="GNU General Public License" style="border-width:0"
  649. src="https://www.gnu.org/graphics/gplv3-127x51.png"/>
  650. </a><br/>
  651. This work is licensed under a <a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank">GNU General Public License 3.0</a>.
  652. </p>
  653. </div>
  654. </li>
  655. <li>
  656. <div class="collapsible-header waves-effect"><i class="material-icons">favorite</i>Contributions</div>
  657. <div class="collapsible-body">
  658. <h5>You want to contribute to this project? You can do that <b>in different ways!</b></h5>
  659. <p>If you know JavaScript, HTML, CSS or Node.js you could contribute writing code, fixing bugs and adding features using the <a href="https://codeberg.org/RemixDev/deezlaoder-deemix" target="_blank">Official Repo</a>.</p><br>
  660. <p>
  661. If you are good at finding bugs you can help Beta Test the app before release.<br>
  662. Join our <a href="https://t.me/deemixalpha" target="_blank">Telegram Channel</a> to be notified when alphas come out!
  663. </p><hr>
  664. <h5>You want to contribute monetarily? You could make a donation!</h5>
  665. <p>
  666. If you can donate you can do that with this links.<br>
  667. You shoud remember that <b>this is a free project</b> and <b>you should support the artists you love</b> before supporting the developer.<br>
  668. Don't feel obligated to donate, I appreciate you anyway!
  669. </p>
  670. <p>
  671. PayPal: <a href="https://paypal.me/RemixDev" target="_blank">PayPal.me/RemixDev</a><br>
  672. Ethereum: 0x1d2aa67e671485CD4062289772B662e0A6Ff976c
  673. </p>
  674. </div>
  675. </li>
  676. </ul>
  677. </div>
  678. </div>
  679. <div class="modal-footer">
  680. <button class="modal-close waves-effect btn-flat">Close</button>
  681. </div>
  682. </div>
  683. <!--##########################################MODAL_ARTIST###########################################-->
  684. <div id="modal_artist" class="modal modal-fixed-footer modal-custom-header">
  685. <div class="modal-content">
  686. <div class="trackList-header" v-bind:style="{ 'background-image': 'linear-gradient(to bottom, transparent 0%, var(--main-modal-background) 100%), url(\''+image+'\')' }">
  687. <div class="valign-wrapper">
  688. <h4 style="width: calc(100% - 56px - 8px);display: inline-block; margin:0px;">{{ title }}</h4>
  689. <a id="download_all_tracks" v-bind:data-link="link" class="fab deezloader-primary white-text clickable"><i class="material-icons">file_download</i></a>
  690. </div>
  691. </div>
  692. <div class="modal-container">
  693. <table>
  694. <tbody id="modal_artist_table_trackList_tbody_loadingIndicator" class="hide">
  695. <tr>
  696. <td class="center" colspan="6">
  697. <div class="preloader-wrapper big active">
  698. <div class="spinner-layer">
  699. <div class="circle-clipper left">
  700. <div class="circle"></div>
  701. </div>
  702. <div class="gap-patch">
  703. <div class="circle"></div>
  704. </div>
  705. <div class="circle-clipper right">
  706. <div class="circle"></div>
  707. </div>
  708. </div>
  709. </div>
  710. </td>
  711. </tr>
  712. </tbody>
  713. <tbody id="modal_artist_table_trackList_tbody_noResults" class="hide">
  714. <tr>
  715. <td class="center">Nothing found!</td>
  716. </tr>
  717. </tbody>
  718. </table>
  719. <div v-if="body" class="row">
  720. <div class="col s12">
  721. <ul id="artist-tabs" class="row tabs tabs-fixed-width">
  722. <template v-for="(item, name, index) in body">
  723. <li class="tab"><a v-bind:class="index==0 ? 'active' : ''" v-bind:href="'#artist_' + name" v-on:click="changeTab(name)">{{ name }}</a></li>
  724. </template>
  725. </ul>
  726. </div>
  727. <div v-for="(item, name) in body" v-bind:id="'artist_' + name"></div>
  728. <table class="highlight col s12">
  729. <thead>
  730. <tr>
  731. <td v-for="data in head" v-on:click="data.sortKey ? sortBy(data.sortKey) : null" v-bind:style = "{ 'width': data.width ? data.width : 'auto'}" v-bind:class="{ 'hide-on-med-and-up' : data.smallonly, 'hide-on-small-only': data.hideonsmall, 'sort-asc': data.sortKey == sortKey && sortOrder == 'asc', 'sort-desc': data.sortKey == sortKey && sortOrder == 'desc', 'sortable': data.sortKey, 'clickable': data.sortKey }">
  732. {{data.title}}
  733. </td>
  734. </tr>
  735. </thead>
  736. <tbody>
  737. <template v-for="release in showTable">
  738. <tr>
  739. <td class="hide-on-med-and-up">
  740. <a href="#" v-on:click="moreInfo(release.link, event)" class="album_chip" v-bind:data-link="release.link"><div class="chip"><img v-bind:src="release.cover_small || 'img/noCover.jpg'"/><i v-if="release.explicit_lyrics" class="material-icons valignicon tiny materialize-red-text tooltipped" data-tooltip="Explicit">explicit</i> {{release.title}}</div></a>
  741. <i v-if="checkNewRelease(release.release_date)" class="material-icons valignicon small" style="color:#FF7300">fiber_new</i>
  742. <p class="remove-margin secondary-text">{{release.release_date}}</p>
  743. </td>
  744. <td class="hide-on-small-only breakline">
  745. <a href="#" v-on:click="moreInfo(release.link, event)" class="album_chip" v-bind:data-link="release.link"><div class="chip"><img v-bind:src="release.cover_small || 'img/noCover.jpg'"/>
  746. <i v-if="release.explicit_lyrics" class="material-icons valignicon tiny materialize-red-text tooltipped" data-tooltip="Explicit">explicit</i>
  747. {{release.title}}
  748. </div></a>
  749. <i v-if="checkNewRelease(release.release_date)" class="material-icons valignicon small" style="color:#FF7300;">fiber_new</i>
  750. </td>
  751. <td class="hide-on-small-only">{{release.release_date}}</td>
  752. <td><button class="waves-effect btn-flat" v-on:click="downloadClick(release.link, event)" v-on:contextmenu="downloadRClick(release.link, event)" v-bind:data-link="release.link"><i class="material-icons">file_download</i></button></td>
  753. </tr>
  754. </template>
  755. </tbody>
  756. <tbody id="modal_artist_table_trackList_tbody_trackList" class="hide">
  757. </tbody>
  758. </table>
  759. </div>
  760. </div>
  761. </div>
  762. <div class="modal-footer">
  763. <button class="modal-close waves-effect btn-flat">Close</button>
  764. </div>
  765. </div>
  766. <!--##########################################MODAL_TRACKLIST###########################################-->
  767. <div id="modal_trackListSelective" class="modal modal-fixed-footer modal-custom-header">
  768. <div class="modal-content">
  769. <div class="trackList-header" v-bind:style="{ 'background-image': 'linear-gradient(to bottom, transparent 0%, var(--main-modal-background) 100%), url(\''+image+'\')' }">
  770. <h4>{{ title }} <i v-if="explicit" class="material-icons valignicon materialize-red-text tooltipped" data-tooltip="Explicit">explicit</i></h4>
  771. <h6 v-if="metadata" style="display: inline;">{{ metadata }}</h6>
  772. <span class="right hide-on-small-only" v-if="release_date">{{ release_date }}</span>
  773. </div>
  774. <div class="modal-container">
  775. <table class="highlight col s12">
  776. <thead>
  777. <tr>
  778. <td v-for="data in head" v-html="data.title" v-bind:style = "{ 'width': data.width ? data.width : 'auto'}" v-bind:class="{ 'hide-on-med-and-up' : data.smallonly, 'hide-on-small-only': data.hideonsmall }"></td>
  779. </tr>
  780. </thead>
  781. <tbody id="modal_trackListSelective_table_trackListSelective_tbody_loadingIndicator" class="hide">
  782. <tr>
  783. <td class="center" colspan="6">
  784. <div class="preloader-wrapper big active">
  785. <div class="spinner-layer">
  786. <div class="circle-clipper left">
  787. <div class="circle"></div>
  788. </div>
  789. <div class="gap-patch">
  790. <div class="circle"></div>
  791. </div>
  792. <div class="circle-clipper right">
  793. <div class="circle"></div>
  794. </div>
  795. </div>
  796. </div>
  797. </td>
  798. </tr>
  799. </tbody>
  800. <tbody id="modal_trackListSelective_table_trackListSelective_tbody_trackListSelective" class="hide">
  801. </tbody>
  802. </table>
  803. <span v-if="label" style="opacity: 0.40;margin-top: 8px;display: inline-block;font-size: 13px;">{{ label }}</span>
  804. </div>
  805. </div>
  806. <div class="modal-footer">
  807. <button id="download_all_tracks_selective" v-bind:data-link="link" class="btn btn-flat waves-effect waves-light left">Download {{ type }}</button>
  808. <button id="download_track_selection" class="btn btn-flat waves-effect waves-light deezloader-primary white-text"><span class="hide-on-small-only">Download selection<i class="material-icons right">file_download</i></span><i class="material-icons hide-on-med-and-up">file_download</i></button>
  809. <button class="modal-close waves-effect btn-flat">Close</button>
  810. </div>
  811. </div>
  812. <!--##########################################MODAL_MSG###########################################-->
  813. <div id="modal_msg" class="modal">
  814. <div class="modal-content">
  815. <div class="row">
  816. <h4 class="col s12" id="modal_msg_title"></h4>
  817. </div>
  818. <div class="row">
  819. <p style="white-space: pre-line" class="col s12" id="modal_msg_message"></p>
  820. </div>
  821. </div>
  822. <div class="modal-footer">
  823. <button class="modal-close waves-effect waves-light btn">I got it!</button>
  824. </div>
  825. </div>
  826. <!--##########################################MODAL_ANALYZER_COUNTRY###########################################-->
  827. <div id="modal_link_analyzer_country" class="modal modal-fixed-footer">
  828. <div class="modal-content">
  829. <h4 class="col s12">Available Countries for {{ title }}</h4>
  830. <table class="striped col s12">
  831. <thead>
  832. <tr>
  833. <th style="width:24px;"></th>
  834. <th>Country</th>
  835. </tr>
  836. </thead>
  837. <tbody>
  838. <tr v-for="cc in countries">
  839. <td v-for="val in cc">{{ val }}</td>
  840. </tr>
  841. </tbody>
  842. </table>
  843. </div>
  844. <div class="modal-footer">
  845. <button class="modal-close waves-effect waves-light btn">Close</button>
  846. </div>
  847. </div>
  848. <!--********************************************MAIN-CONTENT********************************************-->
  849. <nav>
  850. <div class="nav-wrapper">
  851. <div class="brand-logo center hide-on-small-only">Deezloader <b>deemix</b></div>
  852. <ul class="left hide-on-small-only">
  853. <li>
  854. <div class="switch">
  855. <label>
  856. <i class="material-icons left white-text" style="margin-right: 0px; margin-left: 15px;">brightness_2</i>
  857. <input id="nightTimeSwitcher" type="checkbox">
  858. <span class="lever"></span>
  859. </label>
  860. </div>
  861. </li>
  862. </ul>
  863. <a href="#" data-target="slide-out" class="sidenav-trigger hide-on-med-and-up right"><i class="material-icons">menu</i></a>
  864. <ul id="nav-mobile" class="right hide-on-small-only">
  865. <li>
  866. <a href="#modal_settings" id="nav_btn_openSettingsModal" class="waves-effect waves-light modal-trigger">
  867. <i class="material-icons left">settings</i> <span class="hide-on-med-and-down">Settings</span>
  868. </a>
  869. </li>
  870. <li>
  871. <a href="#modal_about" class="waves-effect waves-light modal-trigger">
  872. <i class="material-icons left">info</i> <span class="hide-on-med-and-down">About</span>
  873. </a>
  874. </li>
  875. </ul>
  876. </div>
  877. </nav>
  878. <img src="img/icon.svg" class="circle" id="main_icon"></img>
  879. <ul id="slide-out" class="sidenav">
  880. <li><div class="user-view">
  881. <div class="background"></div>
  882. <a href="#user"><img class="circle" id="side_avatar"></a>
  883. <a href="#name"><span class="white-text name" id="side_user"></span></a>
  884. <a href="#email"><span class="white-text email" id="side_email"></span></a>
  885. </div></li>
  886. <li><a href="#" tab-id="tab_search" class="sidenav_tab sidenav-close waves-effect"><i class="material-icons">search</i>Search</a></li>
  887. <li><a href="#" tab-id="tab_charts" class="sidenav_tab sidenav-close waves-effect"><i class="material-icons">bubble_chart</i>Charts</a></li>
  888. <li><a href="#" tab-id="tab_playlists" class="sidenav_tab sidenav-close waves-effect"><i class="material-icons">playlist_play</i>Playlists</a></li>
  889. <li><a href="#" tab-id="tab_link" class="sidenav_tab sidenav-close waves-effect"><i class="material-icons">link</i>Link Analyzer</a></li>
  890. <li><a href="#" tab-id="tab_downloads" class="sidenav_tab sidenav-close waves-effect"><i class="material-icons">get_app</i>Downloads</a></li>
  891. <li><div class="divider"></div></li>
  892. <li><a href="#modal_settings" id="sidenav_settings" class="waves-effect sidenav-close modal-trigger"><i class="material-icons">settings</i>Settings</a></li>
  893. <li><a href="#modal_about" class="waves-effect sidenav-close modal-trigger"><i class="material-icons">info</i>About</a></li>
  894. <li><a href="#" id="nightModeSwitch2"><i class="material-icons">brightness_2</i>Enable Night Mode</a>
  895. </li>
  896. </ul>
  897. <main class="container" style="display: none">
  898. <div id="deezerNotAvailable" class="error-banner" style="display:none;">
  899. <button class="close-banner"><i class="material-icons">close</i></button>
  900. Deezer is not available in your country<br>
  901. Search and Login functions won't work. You should use a VPN if you want them.
  902. </div>
  903. <ul id="tab-nav" class="row tabs tabs-fixed-width hide-on-small-only">
  904. <li class="tab"><a class="active" href="#tab_search">Search</a></li>
  905. <li class="tab"><a href="#tab_charts">Charts</a></li>
  906. <li class="tab"><a href="#tab_playlists">Playlists</a></li>
  907. <li class="tab"><a href="#tab_link">Link Analyzer</a></li>
  908. <li class="tab"><a href="#tab_downloads">Downloads</a></li>
  909. </ul>
  910. <div id="main-content" class="row">
  911. <div id="tab_search">
  912. <form id="tab_search_form_search">
  913. <div class="inline-input-group col s12">
  914. <input autocomplete="off" id="tab_search_form_search_input_searchString" type="search" class="input" placeholder="Start searching..." autofocus>
  915. <button id="tab_search_button" class="btn btn-input btn-flat deezloader-primary white-text"><i class="material-icons">search</i></button>
  916. </div>
  917. <div class="row center">
  918. <p class="col s3">
  919. <label>
  920. <input name="searchMode" type="radio" class="with-gap" id="tab_search_radio_searchMode_song" value="track" checked/>
  921. <span><i class="material-icons show-on-small-only left deezloader-primary-text">music_note</i><span class="hide-on-med-and-down">Song</span></span>
  922. </label>
  923. </p>
  924. <p class="col s3">
  925. <label>
  926. <input name="searchMode" type="radio" class="with-gap" id="tab_search_radio_searchMode_album" value="album"/>
  927. <span><i class="material-icons show-on-small-only left deezloader-primary-text">album</i><span class="hide-on-med-and-down">Album</span></span>
  928. </label>
  929. </p>
  930. <p class="col s3">
  931. <label>
  932. <input name="searchMode" type="radio" class="with-gap" id="tab_search_radio_searchMode_artist" value="artist"/>
  933. <span><i class="material-icons show-on-small-only left deezloader-primary-text">person</i><span class="hide-on-med-and-down">Artist</span></span>
  934. </label>
  935. </p>
  936. <p class="col s3">
  937. <label>
  938. <input name="searchMode" type="radio" class="with-gap" id="tab_search_radio_searchMode_playlist" value="playlist"/>
  939. <span><i class="material-icons show-on-small-only left deezloader-primary-text">playlist_play</i><span class="hide-on-med-and-down">Playlist</span></span>
  940. </label>
  941. </p>
  942. </div>
  943. </form>
  944. <div id="tab_search_results">
  945. <table id="tab_search_table_results" class="striped col s12">
  946. <thead class="hide-on-small-only">
  947. <tr class="hide" id="tab_search_table_results_thead_track">
  948. <th style="width: 56px;"><!--cover--></th>
  949. <th>Song</th>
  950. <th>Artist</th>
  951. <th>Album</th>
  952. <th><i class="material-icons">timer</i></th>
  953. <th style="width: 56px;"><!--download_link--></th>
  954. </tr>
  955. <tr class="hide" id="tab_search_table_results_thead_album">
  956. <th style="width: 56px;"><!--cover--></th>
  957. <th>Album</th>
  958. <th>Artist</th>
  959. <th>Songs</th>
  960. <th>Type</th>
  961. <th><!--space--></th>
  962. <th style="width: 56px;"><!--download_link--></th>
  963. </tr>
  964. <tr class="hide" id="tab_search_table_results_thead_artist">
  965. <th style="width: 56px;"><!--cover--></th>
  966. <th>Artist</th>
  967. <th>Albums</th>
  968. <th><!--space--></th>
  969. <th style="width: 56px;"><!--download_link--></th>
  970. </tr>
  971. <tr class="hide" id="tab_search_table_results_thead_playlist">
  972. <th style="width: 56px;"><!--cover--></th>
  973. <th>Name</th>
  974. <th>Songs</th>
  975. <th style="width: 56px;"><!--space--></th>
  976. <th style="width: 56px;"><!--download_link--></th>
  977. </tr>
  978. </thead>
  979. <tbody id="tab_search_table_results_tbody_results"></tbody>
  980. <tbody id="tab_search_table_results_tbody_loadingIndicator" class="hide loadingTab">
  981. <tr>
  982. <td class="center" colspan="7">
  983. <div class="preloader-wrapper big active">
  984. <div class="spinner-layer spinner-blue-only">
  985. <!-- Spinner Code -->
  986. <div class="circle-clipper left"><div class="circle"></div></div><div class="gap-patch"><div class="circle"></div></div><div class="circle-clipper right"><div class="circle"></div></div>
  987. </div>
  988. </div>
  989. </td>
  990. </tr>
  991. </tbody>
  992. <tbody id="tab_search_table_results_tbody_noResults" class="hide">
  993. <tr>
  994. <td class="center">Nothing found!</td>
  995. </tr>
  996. </tbody>
  997. </table>
  998. </div>
  999. </div>
  1000. <div id="tab_charts">
  1001. <div class="input-field col s12">
  1002. <select id="tab_charts_select_country" class="icons">
  1003. <!--All country selects have to be like the following example:
  1004. <option value="example" data-icon="images/sample.jpg" class="left circle">Example</option>
  1005. -->
  1006. </select>
  1007. <label>Country</label>
  1008. </div>
  1009. <button id="downloadChartPlaylist" class="col s12 btn btn-input btn-flat deezloader-primary white-text" style="margin-bottom:8px;">Download Playlist</button>
  1010. <table id="tab_charts_table_charts" class="striped">
  1011. <thead class="hide-on-small-only">
  1012. <tr>
  1013. <th>#</th>
  1014. <th style="width: 56px;"><!--cover--></th>
  1015. <th>Song</th>
  1016. <th>Artist</th>
  1017. <th>Album</th>
  1018. <th><i class="material-icons">timer</i></th>
  1019. <th style="width: 56px;"><!--download_link--></th>
  1020. </tr>
  1021. </thead>
  1022. <tbody id="tab_charts_table_charts_tbody_loadingIndicator" class="loadingTab">
  1023. <tr>
  1024. <td colspan="7" class="center">
  1025. <div class="preloader-wrapper big active">
  1026. <div class="spinner-layer spinner-blue-only">
  1027. <!-- Spinner Code -->
  1028. <div class="circle-clipper left"><div class="circle"></div></div><div class="gap-patch"><div class="circle"></div></div><div class="circle-clipper right"><div class="circle"></div></div>
  1029. </div>
  1030. </div>
  1031. </td>
  1032. </tr>
  1033. </tbody>
  1034. <tbody id="tab_charts_table_charts_tbody_charts"></tbody>
  1035. </table>
  1036. </div>
  1037. <div id="tab_playlists" class="row">
  1038. <div class="col s12">
  1039. <button class="btn-flat btn-large waves-effect deezloader-primary white-text" id="button_refresh_playlist_tab" style="width:100%;">Refresh Playlists</button>
  1040. </div>
  1041. <div class="col s12">
  1042. <table class="striped">
  1043. <thead>
  1044. <tr>
  1045. <th style="width: 56px;"><!--cover--></th>
  1046. <th>Name</th>
  1047. <th>Songs</th>
  1048. <th style="width: 56px;"><!--inspect_playlist--></th>
  1049. <th style="width: 56px;"><!--download_link--></th>
  1050. </tr>
  1051. </thead>
  1052. <tbody id="table_personal_playlists">
  1053. </tbody>
  1054. <tbody id="table_personal_spotify_playlists">
  1055. </tbody>
  1056. </table>
  1057. </div>
  1058. </div>
  1059. <div id="tab_link">
  1060. <div class="inline-input-group">
  1061. <input autocomplete="off" type="search" id="link_analyzer_url" class="input" placeholder="Song/Album URL">
  1062. <button id="link_analyzer_go" class="btn btn-input btn-flat deezloader-primary white-text"><i class="material-icons">search</i></button>
  1063. </div>
  1064. <div id="link_analyzer_loading" class="center" hidden>
  1065. <div class="preloader-wrapper big active">
  1066. <div class="spinner-layer spinner-blue-only">
  1067. <!-- Spinner Code -->
  1068. <div class="circle-clipper left"><div class="circle"></div></div><div class="gap-patch"><div class="circle"></div></div><div class="circle-clipper right"><div class="circle"></div></div>
  1069. </div>
  1070. </div>
  1071. </div>
  1072. <div id="link_analyzer_start">
  1073. <p class="secondary-text center">
  1074. You can use this section to find out more information about the link you are trying to download<br/>
  1075. This is usefull if you're trying to download some tracks that are not available in your country and want to know where they are available
  1076. </p>
  1077. </div>
  1078. <div id="link_analyzer_notSupported" style="display: none;">
  1079. <p class="secondary-text center">This link is currently not supported</p>
  1080. </div>
  1081. <div v-if="d.title" id="link_analyzer_song" class="link_analyzer_info">
  1082. <div id="link_analyzer_song_sideinfo" class="hide-on-small-only link_analyzer_sideinfo">
  1083. <img v-bind:src=" d.album.cover_medium "/>
  1084. <a href="#modal_link_analyzer_country" class="modal-trigger waves-effect waves-light btn" style="width:100%;">See Available Countries</a>
  1085. </div>
  1086. <div id="link_analyzer_song_maininfo" class="link_analyzer_maininfo">
  1087. <h5 style="margin-bottom:8px; margin-top:0px;">{{ d.title }} {{ d.version }}<i v-if="d.explicit_lyrics" class="material-icons valignicon materialize-red-text tooltipped" data-tooltip="Explicit">explicit</i></h5>
  1088. <p style="margin-top:0px;">by <span class="handlink" v-on:click="showArtist()"><b>{{ d.artist.name }}</b></span></br>
  1089. in <span class="handlink" v-on:click="showAlbum()"><b>{{ d.album.title }}</b></span></p>
  1090. <hr class="hide-on-small-only">
  1091. <a v-if="d.alternative" v-bind:href="'d.alternative.link'"><b>Alternative Link</b></a>
  1092. <table class="striped">
  1093. <tbody>
  1094. <tr v-if="d.isrc"><td><b>ISRC</b></td><td>{{ d.isrc }}</td></tr>
  1095. <tr v-if="d.duration"><td><b>Duration</b></td><td>{{ d.duration_string }}</td></tr>
  1096. <tr v-if="d.disk_number"><td><b>Disc Number</b></td><td>{{ d.disk_number }}</td></tr>
  1097. <tr v-if="d.track_position"><td><b>Track Number</b></td><td>{{ d.track_position }}</td></tr>
  1098. <tr v-if="d.release_date"><td><b>Release Date</b></td><td>{{ d.release_date }}</td></tr>
  1099. <tr v-if="d.bpm"><td><b>BPM</b></td><td>{{ d.bpm }}</td></tr>
  1100. </tbody>
  1101. </table>
  1102. <a href="#modal_link_analyzer_country" class="modal-trigger waves-effect waves-light btn hide-on-med-and-up" style="width:100%;">See Available Countries</a>
  1103. </div>
  1104. </div>
  1105. <div v-if="d.title" id="link_analyzer_album" class="link_analyzer_info">
  1106. <div id="link_analyzer_album_sideinfo" class="hide-on-small-only link_analyzer_sideinfo">
  1107. <img v-bind:src=" d.cover_medium "/>
  1108. <a v-on:click="showTrackListSelective(d.link)" class="waves-effect waves-light btn" style="width:100%;">Show Tracklist</a>
  1109. </div>
  1110. <div id="link_analyzer_album_maininfo" class="link_analyzer_maininfo">
  1111. <h5 style="margin-bottom:8px; margin-top:0px;">{{ d.title }} <i v-if="d.explicit_lyrics" class="material-icons valignicon materialize-red-text tooltipped" data-tooltip="Explicit">explicit</i></h5>
  1112. <p style="margin-top:0px;">by <span class="handlink" v-on:click="showArtist()"><b>{{ d.artist.name }}</b></span></br>
  1113. {{ d.tracks_string }}</p>
  1114. <hr class="hide-on-small-only">
  1115. <a v-if="d.alternative" v-bind:href="'d.alternative.link'"><b>Alternative Link</b></a>
  1116. <table class="striped">
  1117. <tbody>
  1118. <tr v-if="d.upc"><td><b>UPC</b></td><td>{{ d.upc }}</td></tr>
  1119. <tr v-if="d.duration"><td><b>Duration</b></td><td>{{ d.duration_string }}</td></tr>
  1120. <tr v-if="d.release_date"><td><b>Release Date</b></td><td>{{ d.release_date }}</td></tr>
  1121. <tr v-if="d.label"><td><b>Label</b></td><td>{{ d.label }}</td></tr>
  1122. <tr v-if="d.record_type"><td><b>Record Type</b></td><td>{{ d.record_type.substring(0,1).toUpperCase()+ d.record_type.substring(1) }}</td></tr>
  1123. <tr v-if="d.genres_string"><td><b>Genres</b></td><td>{{ d.genres_string }}</td></tr>
  1124. </tbody>
  1125. </table>
  1126. <a v-on:click="showTrackListSelective(d.link)" class="waves-effect waves-light btn hide-on-med-and-up" style="width:100%;">Show Tracklist</a>
  1127. </div>
  1128. </div>
  1129. </div>
  1130. <div id="tab_downloads">
  1131. <div class="row">
  1132. <div class="col s12 m4">
  1133. <button id="openDownloadsFolder" style="width: 100%; margin-bottom:8px;" class="btn btn-flat btn-input btn-block deezloader-primary white-text">
  1134. Open Downloads Folder
  1135. </button>
  1136. </div>
  1137. <div class="col s12 m4">
  1138. <button id="cancelAllTable" style="width: 100%; margin-bottom:8px;" class="btn btn-flat btn-input btn-block deezloader-primary white-text">
  1139. Cancel All Downloads
  1140. </button>
  1141. </div>
  1142. <div class="col s12 m4">
  1143. <button id="clearTracksTable" style="width: 100%; margin-bottom:8px;" class="btn btn-flat btn-input btn-block deezloader-primary white-text">
  1144. Clear List
  1145. </button>
  1146. </div>
  1147. </div>
  1148. <table id="tab_downloads_table_downloads" class="row">
  1149. <tbody></tbody>
  1150. </table>
  1151. </div>
  1152. </div>
  1153. </main>
  1154. <div class="fixed-action-btn" id="btn_scrollToTop" style="bottom: 45px; right: 24px;">
  1155. <a class="btn-floating btn-large deezloader-primary scale-transition scale-out">
  1156. <i class="large material-icons">keyboard_arrow_up</i>
  1157. </a>
  1158. </div>
  1159. <audio id="preview-track">
  1160. <source id="preview-track_source" src="" type="audio/mpeg">
  1161. </audio>
  1162. <div id="modal_quality" class="smallmodal">
  1163. <!-- Modal content -->
  1164. <div class="smallmodal-content">
  1165. <button onclick="modalQualityButton(9)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download FLAC</button><br>
  1166. <button onclick="modalQualityButton(3)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download MP3 320kbps</button><br>
  1167. <button onclick="modalQualityButton(1)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download MP3 128kbps</button><br>
  1168. <button onclick="modalQualityButton(15)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download 360 Reality Audio [HQ]</button><br>
  1169. <button onclick="modalQualityButton(14)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download 360 Reality Audio [MQ]</button><br>
  1170. <button onclick="modalQualityButton(13)" class="btn btn-flat waves-effect waves-light deezloader-primary white-text">Download 360 Reality Audio [LQ]</button><br>
  1171. </div>
  1172. </div>
  1173. <script>if (typeof module === 'object') {
  1174. window.module = module;
  1175. module = undefined;
  1176. }</script>
  1177. <script type="text/javascript" src="js/socket.io.js"></script>
  1178. <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
  1179. <script type="text/javascript" src="js/materialize.min.js"></script>
  1180. <script type="text/javascript" src="js/lodash.min.js"></script>
  1181. <script type="text/javascript" src="js/vue.min.js"></script>
  1182. <script type="text/javascript" src="js/appBase.js"></script>
  1183. <script type="text/javascript" src="js/frontend.js"></script>
  1184. <script>if (window.module) module = window.module;</script>
  1185. <script>
  1186. if('serviceWorker' in navigator) {
  1187. navigator.serviceWorker
  1188. .register('/js/sw.js')
  1189. .then(function() { console.log("Service Worker Registered"); });
  1190. }
  1191. </script>
  1192. </body>
  1193. </html>