Skip to content

Commit

Permalink
Lyrics are now fetched using the JLyrics library
Browse files Browse the repository at this point in the history
  • Loading branch information
Selbi182 committed Jul 2, 2023
1 parent 4cb0328 commit 1094c56
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 91 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ dependencies {
implementation "org.springframework.boot:spring-boot-starter-web:$springVersion"

implementation 'se.michaelthelin.spotify:spotify-web-api-java:8.0.0'

implementation 'com.github.jagrosh:JLyrics:master-SNAPSHOT'
implementation 'org.jsoup:jsoup:1.15.4'
}
6 changes: 3 additions & 3 deletions src/main/java/spotify/playback/PlaybackController.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@
import spotify.playback.data.PlaybackInfoProvider;
import spotify.playback.data.dto.PlaybackInfo;
import spotify.playback.data.dto.misc.BigPictureSetting;
import spotify.playback.data.lyrics.GeniusLyrics;
import spotify.playback.data.lyrics.GeniusLyricsScraper;

@RestController
public class PlaybackController {
private final PlaybackInfoProvider playbackInfoProvider;
private final PlaybackControl playbackControl;
private final GeniusLyrics geniusLyrics;
private final GeniusLyricsScraper geniusLyrics;

private List<BigPictureSetting> bigPictureSettings;

PlaybackController(PlaybackInfoProvider playbackInfoProvider, PlaybackControl playbackControl, GeniusLyrics geniusLyrics) {
PlaybackController(PlaybackInfoProvider playbackInfoProvider, PlaybackControl playbackControl, GeniusLyricsScraper geniusLyrics) {
this.playbackInfoProvider = playbackInfoProvider;
this.playbackControl = playbackControl;
this.geniusLyrics = geniusLyrics;
Expand Down
86 changes: 0 additions & 86 deletions src/main/java/spotify/playback/data/lyrics/GeniusLyrics.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package spotify.playback.data.lyrics;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import org.springframework.stereotype.Service;

import com.jagrosh.jlyrics.Lyrics;
import com.jagrosh.jlyrics.LyricsClient;

@Service
public class GeniusLyricsScraper {
private final LyricsClient lyricsClient;

GeniusLyricsScraper() {
this.lyricsClient = new LyricsClient("Genius");
}

public String getSongLyrics(String artistName, String songName) {
try {
Lyrics lyrics = lyricsClient.getLyrics(artistName + " " + songName).join();
if (lyrics != null && lyrics.getContent() != null && !lyrics.getContent().isBlank()) {
return insertLineBreaksEveryFourLines(lyrics.getContent());
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}

public static String insertLineBreaksEveryFourLines(String input) {
StringBuilder result = new StringBuilder();
List<String> lines = Arrays.stream(input.split("\n"))
.map(String::strip)
.map(line -> line.replace("&nbsp;", ""))
.filter(line -> !line.isBlank() && !line.startsWith("[") && !line.startsWith("]"))
.collect(Collectors.toList());
for (int i = 0; i < lines.size(); i++) {
String line = lines.get(i);
result.append(line).append("\n");
if ((i + 1) % 4 == 0 && (i + 1) < lines.size()) {
result.append("\n");
}
}
return result.toString();
}
}
2 changes: 1 addition & 1 deletion src/main/resources/static/js/spotify-big-picture.js
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ function refreshLyrics(changes) {

function fetchAndPrintLyrics(changes) {
let artist = getChange(changes, "currentlyPlaying.artists").value[0];
let song = separateUnimportantTitleInfo(getChange(changes, "currentlyPlaying.title").value).main;
let song = removeFeaturedArtists(separateUnimportantTitleInfo(getChange(changes, "currentlyPlaying.title").value).main);
if (artist && song) {
fetch(`/lyrics?artist=${artist}&song=${song}`)
.then(response => response.text())
Expand Down

0 comments on commit 1094c56

Please sign in to comment.