Add lyrics format list
This commit is contained in:
parent
c047ea96a7
commit
6086011d8d
3 changed files with 27 additions and 20 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue