0.6.8 - bug fixes

This commit is contained in:
exttex 2020-12-27 19:33:59 +01:00
parent c3a26b0e3b
commit ff239aaf86
13 changed files with 534 additions and 402 deletions

View file

@ -247,17 +247,28 @@ public class Deezer {
return original + ".mp3";
}
public static String generateUserUploadedMP3Filename(String original, JSONObject privateJson) throws Exception {
//Remove unavailable tags
String[] ignored = {"%feats%", "%trackNumber%", "%0trackNumber%", "%year%", "%date%"};
// public static String generateUserUploadedMP3Filename(String original, JSONObject privateJson) throws Exception {
// //Remove unavailable tags
// String[] ignored = {"%feats%", "%trackNumber%", "%0trackNumber%", "%year%", "%date%"};
// for (String i : ignored) {
// original = original.replaceAll(i, "");
// }
// //Basic tags
// original = original.replaceAll("%title%", privateJson.getString("SNG_TITLE"));
// original = original.replaceAll("%album%", privateJson.getString("ALB_TITLE"));
// original = original.replaceAll("%artist%", privateJson.getString("ART_NAME"));
// original = original.replaceAll("%artists%", privateJson.getString("ART_NAME"));
// return original;
// }
//Deezer patched something so getting metadata of user uploaded MP3s is not working anymore
public static String generateUserUploadedMP3Filename(String original, String title) throws Exception {
String[] ignored = {"%feats%", "%trackNumber%", "%0trackNumber%", "%year%", "%date%", "%album%", "%artist%", "%artists%"};
for (String i : ignored) {
original = original.replaceAll(i, "");
}
//Basic tags
original = original.replaceAll("%title%", privateJson.getString("SNG_TITLE"));
original = original.replaceAll("%album%", privateJson.getString("ALB_TITLE"));
original = original.replaceAll("%artist%", privateJson.getString("ART_NAME"));
original = original.replaceAll("%artists%", privateJson.getString("ART_NAME"));
original = original.replace("%title%", sanitize(title));
return original;
}

View file

@ -96,10 +96,8 @@ public class DownloadService extends Service {
public void onDestroy() {
//Cancel notifications
notificationManager.cancelAll();
//Logger
logger.close();
super.onDestroy();
}
@ -116,8 +114,10 @@ public class DownloadService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Get messenger
if (intent != null)
if (intent != null) {
activityMessenger = intent.getParcelableExtra("activityMessenger");
}
//return super.onStartCommand(intent, flags, startId);
//Prevent battery savers I guess
@ -295,24 +295,24 @@ public class DownloadService extends Service {
while (deezer.authorizing)
try {Thread.sleep(50);} catch (Exception ignored) {}
//Fetch metadata
try {
JSONObject privateRaw = deezer.callGWAPI("deezer.pageTrack", "{\"sng_id\": \"" + download.trackId + "\"}");
privateJson = privateRaw.getJSONObject("results").getJSONObject("DATA");
if (privateRaw.getJSONObject("results").has("LYRICS")) {
lyricsData = privateRaw.getJSONObject("results").getJSONObject("LYRICS");
}
//Don't fetch meta if user uploaded mp3
if (!download.isUserUploaded()) {
//Don't fetch meta if user uploaded mp3
if (!download.isUserUploaded()) {
try {
JSONObject privateRaw = deezer.callGWAPI("deezer.pageTrack", "{\"sng_id\": \"" + download.trackId + "\"}");
privateJson = privateRaw.getJSONObject("results").getJSONObject("DATA");
if (privateRaw.getJSONObject("results").has("LYRICS")) {
lyricsData = privateRaw.getJSONObject("results").getJSONObject("LYRICS");
}
trackJson = Deezer.callPublicAPI("track", download.trackId);
albumJson = Deezer.callPublicAPI("album", Integer.toString(trackJson.getJSONObject("album").getInt("id")));
} catch (Exception e) {
logger.error("Unable to fetch track and album metadata! " + e.toString(), download);
e.printStackTrace();
download.state = Download.DownloadState.ERROR;
exit();
return;
}
} catch (Exception e) {
logger.error("Unable to fetch track and album metadata! " + e.toString(), download);
e.printStackTrace();
download.state = Download.DownloadState.ERROR;
exit();
return;
}
//Fallback
@ -339,7 +339,7 @@ public class DownloadService extends Service {
//Check file
try {
if (download.isUserUploaded()) {
outFile = new File(Deezer.generateUserUploadedMP3Filename(download.path, privateJson));
outFile = new File(Deezer.generateUserUploadedMP3Filename(download.path, download.title));
} else {
outFile = new File(Deezer.generateFilename(download.path, trackJson, albumJson, qualityInfo.quality));
}
@ -700,6 +700,8 @@ public class DownloadService extends Service {
//Start/Resume
case SERVICE_START_DOWNLOAD:
running = true;
if (downloads.size() == 0)
loadDownloads();
updateQueue();
updateState();
break;

View file

@ -144,8 +144,9 @@ public class MainActivity extends FlutterActivity {
}
//Start/Resume downloading
if (call.method.equals("start")) {
//Connected
sendMessage(DownloadService.SERVICE_START_DOWNLOAD, null);
result.success(null);
result.success(serviceBound);
return;
}
//Stop downloading
@ -239,17 +240,24 @@ public class MainActivity extends FlutterActivity {
}));
}
//Start/Bind/Reconnect to download service
private void connectService() {
if (serviceBound)
return;
//Create messenger
activityMessenger = new Messenger(new IncomingHandler(this));
//Start
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra("activityMessenger", activityMessenger);
startService(intent);
bindService(intent, connection, BIND_AUTO_CREATE);
}
@Override
protected void onStart() {
super.onStart();
//Bind downloader service
activityMessenger = new Messenger(new IncomingHandler(this));
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra("activityMessenger", activityMessenger);
startService(intent);
bindService(intent, connection, 0);
connectService();
//Get DB
DownloadsDatabase dbHelper = new DownloadsDatabase(getApplicationContext());
db = dbHelper.getWritableDatabase();
@ -274,17 +282,18 @@ public class MainActivity extends FlutterActivity {
} catch (NoSuchAlgorithmException | KeyManagementException e) {
Log.e(this.getLocalClassName(), e.getMessage());
}
}
@Override
protected void onResume() {
super.onResume();
//Try reconnect
connectService();
}
@Override
protected void onStop() {
super.onStop();
//Unbind service on exit
if (serviceBound) {
unbindService(connection);
serviceBound = false;
}
db.close();
}
@ -294,6 +303,12 @@ public class MainActivity extends FlutterActivity {
//Stop server
if (streamServer != null)
streamServer.stop();
//Unbind service on exit
if (serviceBound) {
unbindService(connection);
serviceBound = false;
}
}
//Connection to download service
@ -302,12 +317,14 @@ public class MainActivity extends FlutterActivity {
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
serviceMessenger = new Messenger(iBinder);
serviceBound = true;
Log.d("DD", "Service Bound!");
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
serviceMessenger = null;
serviceBound = false;
Log.d("DD", "Service UnBound!");
}
};