genius lyrics test
only for songs with vk lyrics
This commit is contained in:
@@ -3,21 +3,32 @@ package com.vk.api.audio;
|
||||
import android.text.TextUtils;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.vk.api.base.ApiRequest;
|
||||
import com.vk.dto.music.MusicTrack;
|
||||
import com.vk.log.L;
|
||||
import org.json.JSONObject;
|
||||
import ru.vtosters.lite.music.Genius;
|
||||
import ru.vtosters.lite.utils.Preferences;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class AudioGetLyrics extends ApiRequest<AudioGetLyrics.a> {
|
||||
public AudioGetLyrics(int lyrics_id, String audio_id) {
|
||||
private final MusicTrack musicTrack;
|
||||
|
||||
public AudioGetLyrics(int lyrics_id, String audio_id, MusicTrack mt) {
|
||||
super("audio.getLyrics");
|
||||
c("audio_id", audio_id);
|
||||
musicTrack = mt;
|
||||
}
|
||||
|
||||
/* renamed from: a */
|
||||
public a a(@NonNull JSONObject jSONObject) {
|
||||
var aVar = new a();
|
||||
|
||||
if (Preferences.getBoolValue("useGenius", false)) {
|
||||
aVar.a = Genius.getTextMusic(musicTrack);
|
||||
return aVar;
|
||||
}
|
||||
|
||||
try {
|
||||
var lines = new ArrayList<>();
|
||||
var lyrics = jSONObject.getJSONObject("response").getJSONObject("lyrics");
|
||||
|
||||
@@ -76,7 +76,7 @@ public class LyricsHolder extends RecyclerHolder<PlayerInfo> implements View.OnC
|
||||
this.f18328f.b(8);
|
||||
ViewUtils.a(this.g, 0);
|
||||
ViewUtils.a(this.h, 8);
|
||||
new AudioGetLyrics(e2.G, e2.y1()).a(new b(e2)).a();
|
||||
new AudioGetLyrics(e2.G, e2.y1(), e2).a(new b(e2)).a();
|
||||
}
|
||||
|
||||
@Override // android.view.View.OnClickListener
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
package ru.vtosters.lite.music;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import com.vk.dto.music.MusicTrack;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Genius {
|
||||
private static final String KEY = "Bearer ZTejoT_ojOEasIkT9WrMBhBQOz6eYKK5QULCMECmOhvwqjRZ6WbpamFe3geHnvp3";
|
||||
private static final String URL = "https://api.genius.com";
|
||||
private static final OkHttpClient client = VtOkHttpClient.getInstance();
|
||||
public static String getTextMusic(MusicTrack musictrack) {
|
||||
var uid = musictrack.y1();
|
||||
var artist = musictrack.C;
|
||||
var title = musictrack.f;
|
||||
var duration = musictrack.h;
|
||||
var album_id = musictrack.I;
|
||||
|
||||
if (TextUtils.isEmpty(uid) || TextUtils.isEmpty(artist) || TextUtils.isEmpty(title) || duration == 0) {
|
||||
Log.d("Genius", "grabTrackInfo: " + "Empty track, info: " + artist + " - " + title + " - " + duration + " - " + uid);
|
||||
return "No text found";
|
||||
}
|
||||
|
||||
return searchAudios(title, artist);
|
||||
}
|
||||
|
||||
private static String searchAudios(String track, String artist) {
|
||||
if (TextUtils.isEmpty(track) || TextUtils.isEmpty(artist)) {
|
||||
Log.d("Genius", "No track/artist");
|
||||
return null;
|
||||
}
|
||||
|
||||
Log.d("Genius", "/search/multi?q=" + artist + "%20" + track + "&from_background=0");
|
||||
|
||||
var request = new Request.a()
|
||||
.b(URL + "/search/multi?q=" + artist + "%20" + track + "&from_background=0")
|
||||
.a("User-Agent", "Genius/5.14.0 (Android; Android 13; Google Pixel 4 XL)")
|
||||
.a("Authorization", KEY)
|
||||
.a("x-genius-app-background-request", "0")
|
||||
.a("x-genius-logged-out", "true")
|
||||
.a("host", "api.genius.com")
|
||||
.a("Content-Type", "application/x-www-form-urlencoded")
|
||||
.b()
|
||||
.a();
|
||||
try {
|
||||
var payload = client.a(request).execute().a().g();
|
||||
Log.d("Genius", payload);
|
||||
var path = new JSONObject(payload).getJSONObject("response").getJSONArray("sections").getJSONObject(0).getJSONArray("hits").getJSONObject(0).getJSONObject("result").getString("api_path");
|
||||
Log.d("Genius", path);
|
||||
return getText(path);
|
||||
} catch (JSONException | IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getText(String track) {
|
||||
if (TextUtils.isEmpty(track)) {
|
||||
Log.d("Genius", "No track");
|
||||
return null;
|
||||
}
|
||||
|
||||
var request = new Request.a()
|
||||
.b(URL + track + "?text_format=plain")
|
||||
.a("User-Agent", "Genius/5.14.0 (Android; Android 13; Google Pixel 4 XL)")
|
||||
.a("Authorization", KEY)
|
||||
.a("x-genius-app-background-request", "0")
|
||||
.a("x-genius-logged-out", "true")
|
||||
.a("host", "api.genius.com")
|
||||
.a("Content-Type", "application/x-www-form-urlencoded")
|
||||
.b()
|
||||
.a();
|
||||
try {
|
||||
var payload = client.a(request).execute().a().g();
|
||||
Log.d("Genius", payload);
|
||||
|
||||
return " " + new JSONObject(payload).getJSONObject("response").getJSONObject("song").getJSONObject("lyrics").getString("plain");
|
||||
|
||||
} catch (JSONException | IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,10 @@
|
||||
android:key="calls"
|
||||
android:summary="@string/messages_interface_calls_summary"
|
||||
android:title="@string/vtlcalls"/>
|
||||
<com.vtosters.lite.ui.MaterialSwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="useGenius"
|
||||
android:title="useGenius"/>
|
||||
<!-- <com.vtosters.lite.ui.SummaryListPreference
|
||||
android:defaultValue="system"
|
||||
android:dialogTitle="@string/debug_experimental_language_summary"
|
||||
|
||||
Reference in New Issue
Block a user