0.5.10 - Download fixes, translations, search history fix, bigger buffer
This commit is contained in:
parent
5adc854e46
commit
bcf709e56d
9 changed files with 60 additions and 21 deletions
|
@ -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"));
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue