0.6.6 - standalone track naming, artist separator
This commit is contained in:
parent
ef9ae6e2ad
commit
babd12bae2
20 changed files with 271 additions and 150 deletions
|
@ -75,8 +75,8 @@ android {
|
|||
dependencies {
|
||||
//implementation group: 'org', name: 'jaudiotagger', version: '2.0.3'
|
||||
implementation files('libs/jaudiotagger-2.2.3.jar')
|
||||
implementation files('libs/extension-flac.aar')
|
||||
implementation group: 'org.nanohttpd', name: 'nanohttpd', version: '2.3.1'
|
||||
compile files('libs/extension-flac.aar')
|
||||
}
|
||||
|
||||
flutter {
|
||||
|
|
|
@ -262,7 +262,7 @@ public class Deezer {
|
|||
}
|
||||
|
||||
//Tag track with data from API
|
||||
public void tagTrack(String path, JSONObject publicTrack, JSONObject publicAlbum, String cover, JSONObject lyricsData, JSONObject privateJson) throws Exception {
|
||||
public void tagTrack(String path, JSONObject publicTrack, JSONObject publicAlbum, String cover, JSONObject lyricsData, JSONObject privateJson, DownloadService.DownloadSettings settings) throws Exception {
|
||||
TagOptionSingleton.getInstance().setAndroid(true);
|
||||
//Load file
|
||||
AudioFile f = AudioFileIO.read(new File(path));
|
||||
|
@ -280,9 +280,9 @@ public class Deezer {
|
|||
for (int i=0; i<publicTrack.getJSONArray("contributors").length(); i++) {
|
||||
String artist = publicTrack.getJSONArray("contributors").getJSONObject(i).getString("name");
|
||||
if (!artists.contains(artist))
|
||||
artists += ", " + artist;
|
||||
artists += settings.artistSeparator + artist;
|
||||
}
|
||||
tag.addField(FieldKey.ARTIST, artists.substring(2));
|
||||
tag.addField(FieldKey.ARTIST, artists.substring(settings.artistSeparator.length()));
|
||||
tag.setField(FieldKey.TRACK, String.format("%02d", publicTrack.getInt("track_position")));
|
||||
tag.setField(FieldKey.DISC_NO, Integer.toString(publicTrack.getInt("disk_number")));
|
||||
tag.setField(FieldKey.ALBUM_ARTIST, publicAlbum.getJSONObject("artist").getString("name"));
|
||||
|
@ -326,36 +326,36 @@ public class Deezer {
|
|||
JSONArray composers = contrib.getJSONArray("composer");
|
||||
String composer = "";
|
||||
for (int i = 0; i < composers.length(); i++)
|
||||
composer += ", " + composers.getString(i);
|
||||
composer += settings.artistSeparator + composers.getString(i);
|
||||
if (composer.length() > 2)
|
||||
tag.setField(FieldKey.COMPOSER, composer.substring(2));
|
||||
tag.setField(FieldKey.COMPOSER, composer.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
//Engineer
|
||||
if (contrib.has("engineer")) {
|
||||
JSONArray engineers = contrib.getJSONArray("engineer");
|
||||
String engineer = "";
|
||||
for (int i = 0; i < engineers.length(); i++)
|
||||
engineer += ", " + engineers.getString(i);
|
||||
engineer += settings.artistSeparator + engineers.getString(i);
|
||||
if (engineer.length() > 2)
|
||||
tag.setField(FieldKey.ENGINEER, engineer.substring(2));
|
||||
tag.setField(FieldKey.ENGINEER, engineer.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
//Mixer
|
||||
if (contrib.has("mixer")) {
|
||||
JSONArray mixers = contrib.getJSONArray("mixer");
|
||||
String mixer = "";
|
||||
for (int i = 0; i < mixers.length(); i++)
|
||||
mixer += ", " + mixers.getString(i);
|
||||
mixer += settings.artistSeparator + mixers.getString(i);
|
||||
if (mixer.length() > 2)
|
||||
tag.setField(FieldKey.MIXER, mixer.substring(2));
|
||||
tag.setField(FieldKey.MIXER, mixer.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
//Producer
|
||||
if (contrib.has("producer")) {
|
||||
JSONArray producers = contrib.getJSONArray("producer");
|
||||
String producer = "";
|
||||
for (int i = 0; i < producers.length(); i++)
|
||||
producer += ", " + producers.getString(i);
|
||||
producer += settings.artistSeparator + producers.getString(i);
|
||||
if (producer.length() > 2)
|
||||
tag.setField(FieldKey.MIXER, producer.substring(2));
|
||||
tag.setField(FieldKey.MIXER, producer.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
|
||||
//FLAC Only
|
||||
|
@ -365,18 +365,18 @@ public class Deezer {
|
|||
JSONArray authors = contrib.getJSONArray("author");
|
||||
String author = "";
|
||||
for (int i = 0; i < authors.length(); i++)
|
||||
author += ", " + authors.getString(i);
|
||||
author += settings.artistSeparator + authors.getString(i);
|
||||
if (author.length() > 2)
|
||||
((FlacTag) tag).setField("AUTHOR", author.substring(2));
|
||||
((FlacTag) tag).setField("AUTHOR", author.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
//Writer
|
||||
if (contrib.has("writer")) {
|
||||
JSONArray writers = contrib.getJSONArray("writer");
|
||||
String writer = "";
|
||||
for (int i = 0; i < writers.length(); i++)
|
||||
writer += ", " + writers.getString(i);
|
||||
writer += settings.artistSeparator + writers.getString(i);
|
||||
if (writer.length() > 2)
|
||||
((FlacTag) tag).setField("WRITER", writer.substring(2));
|
||||
((FlacTag) tag).setField("WRITER", writer.substring(settings.artistSeparator.length()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -534,7 +534,7 @@ public class DownloadService extends Service {
|
|||
|
||||
//Tag
|
||||
try {
|
||||
deezer.tagTrack(outFile.getPath(), trackJson, albumJson, coverFile.getPath(), lyricsData, privateJson);
|
||||
deezer.tagTrack(outFile.getPath(), trackJson, albumJson, coverFile.getPath(), lyricsData, privateJson, settings);
|
||||
} catch (Exception e) {
|
||||
Log.e("ERR", "Tagging error!");
|
||||
e.printStackTrace();
|
||||
|
@ -807,8 +807,9 @@ public class DownloadService extends Service {
|
|||
String arl;
|
||||
boolean albumCover;
|
||||
boolean nomediaFiles;
|
||||
String artistSeparator;
|
||||
|
||||
private DownloadSettings(int downloadThreads, boolean overwriteDownload, boolean downloadLyrics, boolean trackCover, String arl, boolean albumCover, boolean nomediaFiles) {
|
||||
private DownloadSettings(int downloadThreads, boolean overwriteDownload, boolean downloadLyrics, boolean trackCover, String arl, boolean albumCover, boolean nomediaFiles, String artistSeparator) {
|
||||
this.downloadThreads = downloadThreads;
|
||||
this.overwriteDownload = overwriteDownload;
|
||||
this.downloadLyrics = downloadLyrics;
|
||||
|
@ -816,6 +817,7 @@ public class DownloadService extends Service {
|
|||
this.arl = arl;
|
||||
this.albumCover = albumCover;
|
||||
this.nomediaFiles = nomediaFiles;
|
||||
this.artistSeparator = artistSeparator;
|
||||
}
|
||||
|
||||
//Parse settings from bundle sent from UI
|
||||
|
@ -830,7 +832,8 @@ public class DownloadService extends Service {
|
|||
json.getBoolean("trackCover"),
|
||||
json.getString("arl"),
|
||||
json.getBoolean("albumCover"),
|
||||
json.getBoolean("nomediaFiles")
|
||||
json.getBoolean("nomediaFiles"),
|
||||
json.getString("artistSeparator")
|
||||
);
|
||||
} catch (Exception e) {
|
||||
//Shouldn't happen
|
||||
|
|
|
@ -212,6 +212,14 @@ public class MainActivity extends FlutterActivity {
|
|||
result.success(null);
|
||||
return;
|
||||
}
|
||||
//Stop services
|
||||
if (call.method.equals("kill")) {
|
||||
Intent intent = new Intent(this, DownloadService.class);
|
||||
stopService(intent);
|
||||
if (streamServer != null)
|
||||
streamServer.stop();
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
result.error("0", "Not implemented!", "Not implemented!");
|
||||
})));
|
||||
|
|
|
@ -200,7 +200,7 @@ public class StreamServer {
|
|||
URL url = new URL(sURL);
|
||||
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
|
||||
//Set headers
|
||||
connection.setConnectTimeout(30000);
|
||||
connection.setConnectTimeout(10000);
|
||||
connection.setRequestMethod("GET");
|
||||
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", "*");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue