0.6.8 - bug fixes
This commit is contained in:
parent
c3a26b0e3b
commit
ff239aaf86
13 changed files with 534 additions and 402 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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!");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue