0.5.10 - Download fixes, translations, search history fix, bigger buffer

This commit is contained in:
exttex 2020-10-17 21:20:26 +02:00
parent 5adc854e46
commit bcf709e56d
9 changed files with 60 additions and 21 deletions

View file

@ -166,6 +166,9 @@ public class Deezer {
URL url = new URL(getTrackUrl(trackId, md5origin, mediaVersion, originalQuality));
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36");
connection.setRequestProperty("Accept-Language", "*");
connection.setRequestProperty("Accept", "*/*");
int rc = connection.getResponseCode();
//Track not available
if (rc > 400) {
@ -293,7 +296,6 @@ public class Deezer {
isFlac = false;
}
Tag tag = f.getTag();
tag.setEncoding("utf-8");
tag.setField(FieldKey.TITLE, publicTrack.getString("title"));
tag.setField(FieldKey.ALBUM, publicTrack.getJSONObject("album").getString("title"));

View file

@ -313,13 +313,41 @@ public class DownloadService extends Service {
return;
}
//Quality fallback
int newQuality;
try {
newQuality = deezer.qualityFallback(download.trackId, download.md5origin, download.mediaVersion, download.quality);
} catch (Exception e) {
logger.error("Quality fallback failed: " + e.toString(), download);
download.state = Download.DownloadState.ERROR;
exit();
return;
}
//TrackID Fallback
try {
if (newQuality == -1 && !download.isUserUploaded() && privateJson.has("FALLBACK")) {
logger.warn("TrackID Fallback!", download);
String fallbackId = privateJson.getJSONObject("FALLBACK").getString("SNG_ID");
JSONObject newPrivate = deezer.callGWAPI("song.getListData", "{\"sng_ids\": [" + fallbackId + "]}");
JSONObject trackData = newPrivate.getJSONObject("results").getJSONArray("data").getJSONObject(0);
download.trackId = trackData.getString("SNG_ID");
download.md5origin = trackData.getString("MD5_ORIGIN");
download.mediaVersion = trackData.getString("MEDIA_VERSION");
run();
return;
}
} catch (Exception e) {
logger.error("ID fallback failed: " + e.toString(), download);
}
//ISRC Fallback
try {
if (!download.isUserUploaded() && trackJson.has("available_countries") && trackJson.getJSONArray("available_countries").length() == 0) {
if (newQuality == -1 && !download.isUserUploaded()) {
logger.warn("ISRC Fallback!", download);
JSONObject newTrackJson = Deezer.callPublicAPI("track", "isrc:" + trackJson.getString("isrc"));
//Same track check
if (newTrackJson.getJSONArray("available_countries").length() == 0 || newTrackJson.getInt("id") == trackJson.getInt("id")) throw new Exception("No more to fallback!");
if (newTrackJson.getInt("id") == trackJson.getInt("id")) throw new Exception("No more to fallback!");
//Get private data
JSONObject privateJson = deezer.callGWAPI("song.getListData", "{\"sng_ids\": [" + newTrackJson.getInt("id") + "]}");
JSONObject trackData = privateJson.getJSONObject("results").getJSONArray("data").getJSONObject(0);
@ -336,17 +364,6 @@ public class DownloadService extends Service {
return;
}
//Quality fallback
int newQuality;
try {
newQuality = deezer.qualityFallback(download.trackId, download.md5origin, download.mediaVersion, download.quality);
} catch (Exception e) {
logger.error("Quality fallback failed: " + e.toString(), download);
download.state = Download.DownloadState.ERROR;
exit();
return;
}
//No quality available
if (newQuality == -1) {
logger.error("No available quality!", download);