Add lyrics format list

This commit is contained in:
tkashkin 2017-07-08 18:38:29 +03:00
commit 6086011d8d
3 changed files with 27 additions and 20 deletions

View file

@ -2,18 +2,12 @@ package com.kabouzeid.gramophone.model.lyrics;
import android.util.SparseArray;
import com.kabouzeid.gramophone.model.Song;
public abstract class AbsSynchronizedLyrics extends Lyrics {
private static final int TIME_OFFSET_MS = 500; // time adjustment to display line before it actually starts
public final SparseArray<String> lines = new SparseArray<>();
public int offset = 0;
AbsSynchronizedLyrics(Song song, String data) {
super(song, data);
}
public String getLine(int time) {
time += offset + AbsSynchronizedLyrics.TIME_OFFSET_MS;

View file

@ -2,30 +2,45 @@ package com.kabouzeid.gramophone.model.lyrics;
import com.kabouzeid.gramophone.model.Song;
import java.util.ArrayList;
public class Lyrics {
private static final ArrayList<Class<? extends Lyrics>> FORMATS = new ArrayList<>();
public Song song;
public String data;
boolean parsed = false;
boolean valid = false;
public Lyrics(Song song, String data) {
public Lyrics setData(Song song, String data) {
this.song = song;
this.data = data;
return this;
}
public static Lyrics parse(Song song, String data) {
Lyrics lyrics = new SynchronizedLyricsLRC(song, data);
if (lyrics.isValid()) {
return lyrics.parse(false);
} else {
return new Lyrics(song, data).parse(false);
for (Class<? extends Lyrics> format : Lyrics.FORMATS) {
try {
Lyrics lyrics = format.newInstance().setData(song, data);
if (lyrics.isValid()) return lyrics;
} catch (Exception e) {
e.printStackTrace();
}
}
return new Lyrics().setData(song, data);
}
public static boolean isSynchronized(String data) {
Lyrics lyrics = new SynchronizedLyricsLRC(null, data);
return lyrics.isValid();
for (Class<? extends Lyrics> format : Lyrics.FORMATS) {
try {
Lyrics lyrics = format.newInstance().setData(null, data);
if (lyrics.isValid()) return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
public Lyrics parse(boolean check) {
@ -46,4 +61,8 @@ public class Lyrics {
public String getText() {
return this.data;
}
static {
Lyrics.FORMATS.add(SynchronizedLyricsLRC.class);
}
}

View file

@ -1,7 +1,5 @@
package com.kabouzeid.gramophone.model.lyrics;
import com.kabouzeid.gramophone.model.Song;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -13,10 +11,6 @@ class SynchronizedLyricsLRC extends AbsSynchronizedLyrics {
private static final float LRC_SECONDS_TO_MS_MULTIPLIER = 1000f;
private static final int LRC_MINUTES_TO_MS_MULTIPLIER = 60000;
SynchronizedLyricsLRC(Song song, String data) {
super(song, data);
}
@Override
public SynchronizedLyricsLRC parse(boolean check) {
if (this.parsed || this.data == null || this.data.isEmpty()) {