0.6.6 - standalone track naming, artist separator

This commit is contained in:
exttex 2020-12-04 18:02:50 +01:00
parent ef9ae6e2ad
commit babd12bae2
20 changed files with 271 additions and 150 deletions

View file

@ -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 {

View file

@ -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()));
}
}
}

View file

@ -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

View file

@ -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!");
})));

View file

@ -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", "*");