genius lyrics test

only for songs with vk lyrics
This commit is contained in:
gdlbo
2023-02-17 23:09:22 +03:00
parent 1c0048c57c
commit e46d078ec0
4 changed files with 107 additions and 2 deletions
@@ -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);
}
}
}
+4
View File
@@ -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"