Giter VIP home page Giter VIP logo

lrcget's Introduction

LRCGET

Utility for mass-downloading LRC synced lyrics for your offline music library.

LRCGET will scan every files in your chosen directory for music files, then and try to download lyrics to a LRC files having the same name and save them to the same directory as your music files.

LRCGET is the official client of LRCLIB service.

Download

🎉 Latest version: v0.4.0

Visit the release page to download.

OS Support:

  • Windows 10
  • Linux (Ubuntu 22.04 and AppImage build)
  • macOS

Known issues:

  • The DEB build cannot be installed on Ubuntu 24.04. Please use the AppImage build instead for Ubuntu 24.04.

Screenshots

02.png

03.png

04.png

05.png

Donation

Toss a coin to your developer?

GitHub Sponsors (Recommended - 100% of your support goes to the developer):

https://github.com/sponsors/tranxuanthang

Buy Me a Coffee:

https://www.buymeacoffee.com/thangtran

Paypal:

https://paypal.me/tranxuanthang98

Monero (XMR):

43ZN5qDdGQhPGthFnngD8rjCHYLsEFBcyJjDC1GPZzVxWSfT8R48QCLNGyy6Z9LvatF5j8kSgv23DgJpixJg8bnmMnKm3b7

Litecoin (LTC):

ltc1q7texq5qsp59gclqlwf6asrqmhm98gruvz94a48

Troubleshooting

Audio cannot be played in Linux (Ubuntu and other distros)

Try to install pipewire-alsa package. For example, in Ubuntu or Debian-based distros:

sudo apt install pipewire-alsa

App won't open in Windows 10/11

If you are using Windows 10 LTSC, or have tried running some scripts to debloat Windows 10 (which will uninstall Microsoft Edge and its webview component), you might have issues as LRCGET depends on WebView2. Reinstalling Microsoft Edge might fix the problem (see issue #45).

Scrollbar is invisible in Linux (KDE Plasma 5/6)

The exact cause is still unknown, but it can be fixed by going to System Settings > Appearance > Global Theme > Application Style > Configure GNOME/GTK Application Style... > Change to something other than breeze (Awaita or Default) > Apply (see comment #44 (comment))

Contact

If you prefer to contact by email:

[email protected]

TODO

  • Choose multiple directories
  • Support .ogg format
  • Embedded lyrics option (temporary alternative)
  • Optimize performance for loading large music library (#19)
  • Playlist Filter feature
  • Playlist Sort feature
  • Playlist Search feature
  • Volume control
  • Mark song as instrumental (#36)

Development

LRCGET is made with Tauri.

To start developing the application, you need to do the prerequisites steps according to your operating system.

For example, you need the following components to start the development in Windows:

  • Microsoft Visual Studio C++ Build Tools
  • Rust 1.64.0 or higher
  • NodeJS v16.18.0 or higher

Start the development window with the following command:

cd lrcget
npm install
npm run tauri dev

Building

Start the build process with the following command:

cd lrcget
npm install
npm run tauri build

Your built binaries are located at:

./src-tauri/target/release/

For more detailed instruction, follow the building guide to build the application according to your OS platform.

lrcget's People

Contributors

esmersmith avatar garycraft avatar neatomonster avatar nomadicdeveloper22 avatar shipurjan avatar tranxuanthang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lrcget's Issues

Download synced and/or unsynced lyrics

So far everything works great on the Linux build. Although when LRCGET can't find synced lyrics, it would be nice to have the option to fallback on unsynced lyrics, and download those instead. It could possibly also upgrade these unsynced lyrics to synced lyrics if they are found later. Some music players support displaying both types of lyric files. Thanks!

Removing settings

I selected too many folders and now lrcget is stuck with the 'Loading library...' message. Left it on overnight, no change.
Uninstalled and re-installed, and again the Loading library message. How can i reset or delete the settings? Devuan Daedalus.

support opus

hello can you add support to opus music files

Manual search

There are some songs where I know the lyrics exists on musixmatch, it's just that the metadata might be a little off which fails the matching of song to your database.

If there was a way to modify the search query, e.g. artist or song name, such that I could try matching to your database and retrieve the lyrics.

This is a wonderful piece of software, thank you for making this. It relieved me of so much pain of finding lyrics for every song individually and renaming the file to match the song (that is just brilliant)!!

[Tauri related "bug"] Extremely slow with large music collections on Linux

Description

The UI freezes for a few minutes when loading the 'tracks' tab with only 7K songs. It doesn't freeze for as long in the albums and artists tabs, seemingly because there are fewer entries.

Possible solution

I think the tracks list should be in a virtual scroller instead of having everything rendered in the DOM at once. Especially since with Tauri the Linux version runs on the slower Webkit2gtk instead of Webview2 on Windows. Webkit2gtk slows to a crawl when there are a lot of DOM elements.

I've had this exact problem with my web app, and it was fixed using a virtual scroller.

For reference, I used this one: https://tanstack.com/virtual/v3

API Documentation

Hi! We would like to use your lrclib API to integrate into a music player. Could we have a proper API documentation for it?

I'm sorry if I'm in the wrong place, but since there's nowhere else to write I'll be writing it here instead.

Cannot play songs using Linux AppImage build

With the settings screen open, everything behind it is transparent.
image

With it closed, the purple stuff are transparent (you can even see it with the Configuration text in the menu) and the row where the settings / tracks, etc. button is.

I also can't play music, when I click on a track the title and artist show on the bottom but the time is 00:00:00 for both the current and length, and pressing play does nothing.

I am using the AppImage v0.2.1

Logs

$ ./lrcget_0.2.1_amd64.AppImage --No-Sandbox
Database file path: /home/game-user/.local/share/net.lrclib.lrcget/db.sqlite3

(gst-plugin-scanner:29704): GStreamer-WARNING **: 14:22:43.130: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgst1394.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgst1394.so: undefined symbol: gst_base_src_set_format

(gst-plugin-scanner:29705): GStreamer-WARNING **: 14:22:43.159: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaasink.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaasink.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29706): GStreamer-WARNING **: 14:22:43.173: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstadder.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstadder.so: undefined symbol: gst_audio_info_is_equal

(gst-plugin-scanner:29707): GStreamer-WARNING **: 14:22:43.187: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalaw.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalaw.so: undefined symbol: gst_audio_decoder_set_needs_format

(gst-plugin-scanner:29708): GStreamer-WARNING **: 14:22:43.201: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalpha.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalpha.so: undefined symbol: gst_base_transform_reconfigure_src

(gst-plugin-scanner:29709): GStreamer-WARNING **: 14:22:43.214: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalphacolor.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstalphacolor.so: undefined symbol: gst_video_filter_get_type

(gst-plugin-scanner:29710): GStreamer-WARNING **: 14:22:43.235: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstapetag.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstapetag.so: undefined symbol: gst_pb_utils_add_codec_description_to_tag_list

(gst-plugin-scanner:29711): GStreamer-WARNING **: 14:22:43.256: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstapp.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstapp.so: undefined symbol: gst_app_sink_get_type

(gst-plugin-scanner:29712): GStreamer-WARNING **: 14:22:43.272: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioconvert.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioconvert.so: undefined symbol: gst_audio_format_get_info

(gst-plugin-scanner:29714): GStreamer-WARNING **: 14:22:43.308: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudiomixer.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudiomixer.so: undefined symbol: gst_audio_aggregator_convert_pad_get_type

(gst-plugin-scanner:29715): GStreamer-WARNING **: 14:22:43.324: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioparsers.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioparsers.so: undefined symbol: gst_tag_list_from_vorbiscomment

(gst-plugin-scanner:29717): GStreamer-WARNING **: 14:22:43.353: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioresample.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudioresample.so: undefined symbol: gst_audio_converter_get_out_frames

(gst-plugin-scanner:29718): GStreamer-WARNING **: 14:22:43.370: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudiotestsrc.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstaudiotestsrc.so: undefined symbol: gst_base_src_set_blocksize

(gst-plugin-scanner:29719): GStreamer-WARNING **: 14:22:43.385: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstauparse.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstauparse.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29722): GStreamer-WARNING **: 14:22:43.441: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcacasink.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcacasink.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29723): GStreamer-WARNING **: 14:22:43.462: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcairo.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcairo.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29724): GStreamer-WARNING **: 14:22:43.476: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcamerabin.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcamerabin.so: undefined symbol: gst_encoding_container_profile_get_profiles

(gst-plugin-scanner:29725): GStreamer-WARNING **: 14:22:43.493: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcdparanoia.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcdparanoia.so: undefined symbol: gst_audio_cd_src_get_type

(gst-plugin-scanner:29726): GStreamer-WARNING **: 14:22:43.508: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcompositor.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcompositor.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29727): GStreamer-WARNING **: 14:22:43.526: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcoreelements.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcoreelements.so: undefined symbol: gst_base_src_set_format

(gst-plugin-scanner:29729): GStreamer-WARNING **: 14:22:43.554: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcutter.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstcutter.so: undefined symbol: gst_audio_info_from_caps

(gst-plugin-scanner:29732): GStreamer-WARNING **: 14:22:43.571: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdebug.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdebug.so: undefined symbol: gst_base_transform_set_gap_aware

(gst-plugin-scanner:29733): GStreamer-WARNING **: 14:22:43.587: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdeinterlace.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdeinterlace.so: undefined symbol: gst_video_time_code_copy

(gst-plugin-scanner:29734): GStreamer-WARNING **: 14:22:43.603: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdtmf.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdtmf.so: undefined symbol: gst_rtp_buffer_new_allocate

(gst-plugin-scanner:29735): GStreamer-WARNING **: 14:22:43.617: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdv.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstdv.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29736): GStreamer-WARNING **: 14:22:43.634: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsteffectv.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsteffectv.so: undefined symbol: gst_video_filter_get_type

(gst-plugin-scanner:29737): GStreamer-WARNING **: 14:22:43.649: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstencoding.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstencoding.so: undefined symbol: gst_encoding_profile_get_presence

(gst-plugin-scanner:29738): GStreamer-WARNING **: 14:22:43.666: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstequalizer.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstequalizer.so: undefined symbol: gst_audio_filter_class_add_pad_templates

(gst-plugin-scanner:29739): GStreamer-WARNING **: 14:22:43.683: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflac.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflac.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29740): GStreamer-WARNING **: 14:22:43.701: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflv.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflv.so: undefined symbol: gst_audio_format_to_string

(gst-plugin-scanner:29741): GStreamer-WARNING **: 14:22:43.714: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflxdec.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstflxdec.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29742): GStreamer-WARNING **: 14:22:43.732: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgdkpixbuf.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgdkpixbuf.so: undefined symbol: gst_video_frame_map

(gst-plugin-scanner:29743): GStreamer-WARNING **: 14:22:43.746: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgio.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgio.so: undefined symbol: g_input_stream_read

(gst-plugin-scanner:29744): GStreamer-WARNING **: 14:22:43.761: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgoom.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgoom.so: undefined symbol: gst_audio_visualizer_get_type

(gst-plugin-scanner:29745): GStreamer-WARNING **: 14:22:43.776: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgoom2k1.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstgoom2k1.so: undefined symbol: gst_audio_visualizer_get_type

(gst-plugin-scanner:29746): GStreamer-WARNING **: 14:22:43.792: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsticydemux.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsticydemux.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29747): GStreamer-WARNING **: 14:22:43.807: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstid3demux.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstid3demux.so: undefined symbol: gst_tag_list_new_from_id3v1

(gst-plugin-scanner:29749): GStreamer-WARNING **: 14:22:43.833: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstinterleave.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstinterleave.so: undefined symbol: gst_collect_pads_stop

(gst-plugin-scanner:29750): GStreamer-WARNING **: 14:22:43.854: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstisomp4.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstisomp4.so: undefined symbol: gst_riff_create_audio_caps

(gst-plugin-scanner:29753): GStreamer-WARNING **: 14:22:43.904: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstjpegformat.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstjpegformat.so: undefined symbol: gst_tag_xmp_writer_get_type

(gst-plugin-scanner:29754): GStreamer-WARNING **: 14:22:43.922: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlame.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlame.so: undefined symbol: gst_audio_encoder_set_output_format

(gst-plugin-scanner:29755): GStreamer-WARNING **: 14:22:43.938: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlevel.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlevel.so: undefined symbol: gst_base_transform_set_gap_aware

(gst-plugin-scanner:29756): GStreamer-WARNING **: 14:22:43.954: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlibvisual.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstlibvisual.so: undefined symbol: gst_audio_visualizer_get_type

(gst-plugin-scanner:29757): GStreamer-WARNING **: 14:22:43.973: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmatroska.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmatroska.so: undefined symbol: gst_riff_create_audio_caps

(gst-plugin-scanner:29758): GStreamer-WARNING **: 14:22:43.987: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmonoscope.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmonoscope.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29759): GStreamer-WARNING **: 14:22:44.007: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmpg123.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmpg123.so: undefined symbol: gst_audio_format_to_string

(gst-plugin-scanner:29760): GStreamer-WARNING **: 14:22:44.020: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmulaw.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmulaw.so: undefined symbol: gst_audio_decoder_set_needs_format

(gst-plugin-scanner:29761): GStreamer-WARNING **: 14:22:44.043: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmultifile.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmultifile.so: undefined symbol: gst_data_queue_push

(gst-plugin-scanner:29762): GStreamer-WARNING **: 14:22:44.058: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmultipart.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstmultipart.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29766): GStreamer-WARNING **: 14:22:44.090: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstogg.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstogg.so: undefined symbol: gst_riff_init

(gst-plugin-scanner:29767): GStreamer-WARNING **: 14:22:44.113: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstopengl.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstopengl.so: undefined symbol: gst_gl_shader_string_vertex_mat4_vertex_transform

(gst-plugin-scanner:29768): GStreamer-WARNING **: 14:22:44.131: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstopus.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstopus.so: undefined symbol: gst_codec_utils_opus_parse_caps

(gst-plugin-scanner:29769): GStreamer-WARNING **: 14:22:44.146: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstoss4.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstoss4.so: undefined symbol: gst_audio_format_to_string

(gst-plugin-scanner:29770): GStreamer-WARNING **: 14:22:44.161: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstossaudio.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstossaudio.so: undefined symbol: gst_audio_src_get_type

(gst-plugin-scanner:29771): GStreamer-WARNING **: 14:22:44.176: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstoverlaycomposition.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstoverlaycomposition.so: undefined symbol: gst_video_overlay_composition_n_rectangles

(gst-plugin-scanner:29772): GStreamer-WARNING **: 14:22:44.200: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpango.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpango.so: undefined symbol: gst_buffer_add_video_overlay_composition_meta

(gst-plugin-scanner:29773): GStreamer-WARNING **: 14:22:44.215: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpbtypes.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpbtypes.so: undefined symbol: gst_video_multiview_flagset_get_type

(gst-plugin-scanner:29774): GStreamer-WARNING **: 14:22:44.233: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstplayback.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstplayback.so: undefined symbol: gst_video_overlay_expose

(gst-plugin-scanner:29775): GStreamer-WARNING **: 14:22:44.248: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpng.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpng.so: undefined symbol: gst_video_decoder_set_packetized

(gst-plugin-scanner:29776): GStreamer-WARNING **: 14:22:44.284: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpulseaudio.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstpulseaudio.so: undefined symbol: gst_audio_check_valid_channel_positions

(gst-plugin-scanner:29777): GStreamer-WARNING **: 14:22:44.301: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrawparse.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrawparse.so: undefined symbol: gst_audio_format_get_info

(gst-plugin-scanner:29778): GStreamer-WARNING **: 14:22:44.315: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstreplaygain.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstreplaygain.so: undefined symbol: gst_base_transform_set_gap_aware

(gst-plugin-scanner:29780): GStreamer-WARNING **: 14:22:44.362: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrtpmanager.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrtpmanager.so: undefined symbol: gst_rtp_buffer_get_csrc

(gst-plugin-scanner:29781): GStreamer-WARNING **: 14:22:44.381: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrtsp.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstrtsp.so: undefined symbol: gst_rtsp_extension_parse_sdp

(gst-plugin-scanner:29783): GStreamer-WARNING **: 14:22:44.419: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstshout2.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstshout2.so: undefined symbol: gst_base_sink_set_sync

(gst-plugin-scanner:29785): GStreamer-WARNING **: 14:22:44.456: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstsoup.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstsoup.so: undefined symbol: gst_push_src_get_type

(gst-plugin-scanner:29786): GStreamer-WARNING **: 14:22:44.471: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstspectrum.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstspectrum.so: undefined symbol: gst_audio_filter_class_add_pad_templates

(gst-plugin-scanner:29787): GStreamer-WARNING **: 14:22:44.486: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstspeex.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstspeex.so: undefined symbol: gst_audio_decoder_set_needs_format

(gst-plugin-scanner:29788): GStreamer-WARNING **: 14:22:44.504: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstsubparse.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstsubparse.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29789): GStreamer-WARNING **: 14:22:44.526: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttaglib.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttaglib.so: undefined symbol: gst_tag_register_musicbrainz_tags

(gst-plugin-scanner:29790): GStreamer-WARNING **: 14:22:44.544: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttcp.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttcp.so: undefined symbol: gst_push_src_get_type

(gst-plugin-scanner:29791): GStreamer-WARNING **: 14:22:44.569: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttheora.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttheora.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29794): GStreamer-WARNING **: 14:22:44.585: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttwolame.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttwolame.so: undefined symbol: gst_audio_encoder_set_output_format

(gst-plugin-scanner:29795): GStreamer-WARNING **: 14:22:44.602: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttypefindfunctions.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsttypefindfunctions.so: undefined symbol: gst_codec_utils_aac_get_sample_rate_from_index

(gst-plugin-scanner:29796): GStreamer-WARNING **: 14:22:44.618: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstudp.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstudp.so: undefined symbol: gst_push_src_get_type

(gst-plugin-scanner:29797): GStreamer-WARNING **: 14:22:44.641: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideo4linux2.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideo4linux2.so: undefined symbol: gst_video_codec_frame_unref

(gst-plugin-scanner:29799): GStreamer-WARNING **: 14:22:44.670: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideoconvert.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideoconvert.so: undefined symbol: gst_video_converter_new

(gst-plugin-scanner:29801): GStreamer-WARNING **: 14:22:44.698: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideofilter.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideofilter.so: undefined symbol: gst_base_transform_reconfigure_src

(gst-plugin-scanner:29802): GStreamer-WARNING **: 14:22:44.712: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideomixer.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideomixer.so: undefined symbol: gst_video_converter_new

(gst-plugin-scanner:29803): GStreamer-WARNING **: 14:22:44.727: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideorate.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideorate.so: undefined symbol: gst_base_transform_set_gap_aware

(gst-plugin-scanner:29804): GStreamer-WARNING **: 14:22:44.741: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideoscale.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideoscale.so: undefined symbol: gst_video_converter_new

(gst-plugin-scanner:29805): GStreamer-WARNING **: 14:22:44.756: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideotestsrc.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvideotestsrc.so: undefined symbol: gst_push_src_get_type

(gst-plugin-scanner:29806): GStreamer-WARNING **: 14:22:44.771: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvolume.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvolume.so: undefined symbol: gst_base_transform_set_gap_aware

(gst-plugin-scanner:29807): GStreamer-WARNING **: 14:22:44.787: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvorbis.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvorbis.so: undefined symbol: gst_tag_list_from_vorbiscomment

(gst-plugin-scanner:29808): GStreamer-WARNING **: 14:22:44.808: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvpx.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstvpx.so: undefined symbol: gst_video_decoder_get_allocator

(gst-plugin-scanner:29809): GStreamer-WARNING **: 14:22:44.823: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavenc.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavenc.so: undefined symbol: gst_byte_writer_put_string_utf8

(gst-plugin-scanner:29810): GStreamer-WARNING **: 14:22:44.842: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavpack.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavpack.so: undefined symbol: gst_audio_decoder_set_tolerance

(gst-plugin-scanner:29811): GStreamer-WARNING **: 14:22:44.857: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavparse.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstwavparse.so: undefined symbol: gst_adapter_flush

(gst-plugin-scanner:29812): GStreamer-WARNING **: 14:22:44.876: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstximagesink.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstximagesink.so: undefined symbol: gst_buffer_pool_config_set_video_alignment

(gst-plugin-scanner:29813): GStreamer-WARNING **: 14:22:44.892: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstximagesrc.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstximagesrc.so: undefined symbol: gst_push_src_get_type

(gst-plugin-scanner:29814): GStreamer-WARNING **: 14:22:44.912: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstxvimagesink.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgstxvimagesink.so: undefined symbol: gst_buffer_pool_config_set_video_alignment

(gst-plugin-scanner:29815): GStreamer-WARNING **: 14:22:44.925: Failed to load plugin '/tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsty4menc.so': /tmp/.mount_lrcgetY32ysd/usr/lib/gstreamer-1.0/libgsty4menc.so: undefined symbol: gst_video_encoder_get_type
GStreamer element appsink not found. Please install it
GStreamer element audiointerleave not found. Please install it

(WebKitWebProcess:29667): GLib-GObject-CRITICAL **: 14:22:50.723: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.723: gst_bin_add: assertion 'GST_IS_ELEMENT (element)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.723: gst_element_get_static_pad: assertion 'GST_IS_ELEMENT (element)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.723: gst_object_unref: assertion 'object != NULL' failed
GStreamer element audioconvert not found. Please install it
GStreamer element audioresample not found. Please install it

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.758: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (dest)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.759: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.759: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:50.760: 
Trying to dispose element autoaudiosink0, but it is in READY instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

GStreamer element audiointerleave not found. Please install it

(WebKitWebProcess:29667): GLib-GObject-CRITICAL **: 14:22:51.999: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:51.999: gst_bin_add: assertion 'GST_IS_ELEMENT (element)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:51.999: gst_element_get_static_pad: assertion 'GST_IS_ELEMENT (element)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:51.999: gst_object_unref: assertion 'object != NULL' failed
GStreamer element audioconvert not found. Please install it
GStreamer element audioresample not found. Please install it

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:52.019: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (dest)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:52.019: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:52.019: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(WebKitWebProcess:29667): GStreamer-CRITICAL **: 14:22:52.021: 
Trying to dispose element autoaudiosink1, but it is in READY instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

App cannot be opened when using Nvidia GPU on Linux

Whenever I try to load the program it spawns a new window which just hangs. I've tested this with the official appimage release and with this aur package. Here's the output I get in the terminal:

Gtk-Message: 20:34:36.965: Failed to load module "xapp-gtk3-module"
src/nv_gbm.c:288: GBM-DRV error (nv_gbm_create_device_native): nv_common_gbm_create_device failed (ret=-1)

Database file path: /home/redacted/.local/share/net.lrclib.lrcget/db.sqlite3
Gtk-Message: 20:34:37.645: Failed to load module "xapp-gtk3-module"
src/nv_gbm.c:288: GBM-DRV error (nv_gbm_create_device_native): nv_common_gbm_create_device failed (ret=-1)

KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 1707x1394: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 1707x1394: Permission denied
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
Failed to create GBM buffer of size 1707x1394: Permission denied
Failed to create EGL images for DMABufs with file descriptors -1, -1 and -1

** (lrcget:54548): WARNING **: 20:35:02.604: atk-bridge: get_device_events_reply: unknown signature

Things I've Tried:

  • Reinstalling the xapp package
  • Deleting the /home/redacted/.local/share/net.lrclib.lrcget directory and re-running the appimage

Extra Info/Specs:

  • CPU: i5-11400f
  • GPU: Nvidia RTX 3070
  • Memory: 32GB @ 3200MHz
  • OS: Arch Linux
  • WM/DE: AwesomeWM, Xcfe (It doesn't work in either)

Example Image:
lrcget

feature request: WAV audio support

I wish the program can read .WAV audio files, because all my library are conformed with uncompressed audio files (bandcamp, spotify, youtube music, etc. audio files)

How to publish plain text lyrics?

I would like to publish plain text lyrics, because I sometimes don't want to go through an entire album to sync lyrics, so it could better that at least plain text lyrics were available for other people to later easier sync them.

I can download plain text lyrics, but I can't publish it (or I don't see where).

Option to change download directory and naming pattern

Would be great to have an option to change the download directory so we can save the files somewhere else, and an option to customize the naming so we can add the album title to the file name that way if there different versions of the same song they don't get replaced by the other (all this in a centralized directory).

feature request: skip artist/album from full lib scan with condition

Hi there!

I think its make sense to be able to skip folder/artist/album if

  • just do not want to search
  • already found all lyrics
  • etc

adding simple file .lrcget_ignore will be enough for my case

The main idea if I add 1 new album it seems like I need to do full lib re-scan to get new lyrics

thanks

Some suggestions

  • Refresh Button: Each time I add new music to my library, I have to refresh the library by going to the settings. It would be much easier if there were a simple 🔄 refresh button at the top to update my library.

  • Lyrics editor suggestion: Also, the new lyrics editor is nice, but it would be even better if the editor and synchronizer were in two different tabs, like on Akari's LRC Maker. One simple reason for this is that it's hard to use Alt + Enter for syncing.

  • Font size: The font size is small in the lyrics editor (maybe add the ability to change the font size?).

  • Volume adjuster.

  • Timestamp in search: Ability to view and copy the LRC (the synced lyrics) directly from the search results, similar to LRCLIB. Sometimes, there is more than one result appearing, and to compare them all, I need to see the timestamp of each in the list. Maybe adding another button next to the preview 👁 button to display the lyrics with timestamps or modifying the preview button to include this functionality would be helpful, because the default preview is read-only.

  • Drag and drop music from anywhere.

Ignore Instrumental songs

I'm tring to fetch lyrics for the track specifically:

{
 'album_name': 'B.o.B Presents: The Adventures of Bobby Ray',
 'artist_name': 'B.o.B',
 'duration': 180.48,
 'track_name': 'Airplanes (feat. Hayley Williams of Paramore)'
}

In response I get { ..., 'instrumental': True, 'plainLyrics': None, 'syncedLyrics': None}

The song has lyrics which I manually found that if I set album_name to B.o.B Presents: The Adventures of Bobby Ray - B.o.B

Since this data is embedded in mp3 tags I'm not able to actually alter them before request

Is there some way where I can query only for instrumental:False ?

[packaging] flatpak

For those of us who would prefer to use Flatpak instead of AppImage, would it be possible to distribute this as a flatpak package?

Not working on Windows 10

I have both latest version of windows & the app. When I open LRCGET.exe It doesnt work, I tried running it as admin still nothing. The app isnt working. Someone please help..

can´t remove directories in v1.0

Hi,

first, I wanted to thank the developer for creating such a useful software, it has already found many missing lrc files in my library and was super simple to use.

The new version it’s a big improvement, especially with the included player and lrc lyrics viewer, helps a lot to find if the lyrics do sync correctly. (Previously I was transferring the songs to my phone, and using poweramp to check this). Kudos!

As mentioned in the title I wanted to report that once a directory is added it can´t be removed. I already tried restarting the app, but does not allow to delete directories. I'm using the latest update in Win 10 x64.

Also, as a couple of suggestions for future releases:
-an option to only show track with or without lrc files.
-an option to search and overwrite lrc files (for those cases that the lrc was found somewhere else, like www.lyricsify.com, and lyrics are out of sync). Not sure if it could display the new found lrc files, before overwriting the old file, to check it the new result is a better synched match or not.
-would be nice if clicking on any part of the synchronized lyrics, would take you to the same time stamp of the playing track. This is supper useful to make sure lyrics are correctly synched.
-On the track’s menu, it would be nice if a checkmark under the lyric’s column, could show which track also contains embedded lyrics or not. And for those that have embedded lyrics but no lrc, display the unsynched lyrics instead when playing the track.
-a dark theme, I like the pink design, but darker themes are easier on the eyes specially for those who spend lots of hours in front of a screen. Maybe a dark background with pink accents could be added.

Thanks again for such an useful tool!

Skip tracks that already have lyrics only skips tracks that have LRC lyrics

I'm not sure if its intentional, but I was surprised to discover that the setting "Skip tracks that already have lyrics or are instrumental" only check if they have LRC lyrics and not plain lyrics.

This means that if you stop part way through (especially in a large library) and have several tracks that have plain lyrics only, they will be re-downloaded every time.

I understand that perhaps folks may want to "upgrade" and have a search that tries to get LRC lyrics each time, but perhaps that could be a seperate setting?

ALAC (m4a) File Playback Support

As I used ALAC for my music collections to iTunes, please add support to play ALAC files. I'm quite unsure if the application can play AAC files, however, as I personally don't own it.

The app does detect the file and able to read the metadata, but it unable to play the music, making it harder to check if the lyric matches with the song, or doing lyric editing and correction.

Support for songs without metadata

Hi, some of my songs are not showing up in the list. It seems that they are the ones without metadata. Some metadata can be obtained from the file name. Generally, the format is something like Artist 1 & Artist 2 - Song Name (feat. Featured Artist Name) (Remixer Name Remix)

For example, you can download a song off of https://ncs.io/music and it won't show up in the list.

unable to use the music player

currently using ubuntu 20.04: tried both deb and appimage
when play button is pressed nothing happens, i already have the mp3 and synched lrc on the same directory

Sometimes capitalisation of albums / song names messes up the matched lyrics

See for example

Album name: Just As I Am
https://lrclib.net/api/get?artist_name=Bill%20Withers&track_name=Ain%27t%20No%20Sunshine&album_name=Just%20As%20I%20Am&duration=126

Album name: Just as I am
https://lrclib.net/api/get?artist_name=Bill%20Withers&track_name=Ain%27t%20No%20Sunshine&album_name=Just%20as%20I%20am&duration=126

One returns a result with only plain lyrics while the other has both plain and synced lyrics.

These are otherwise identical matches and I personally think it should prioritise matching the one with synced lyrics!

Maybe this is the wrong place to submit an issue since the problem is the api and not the application, but thought I should let you know..

Does Not See MP3 files Flac ok

I saw this problem mentioned on a reddit post from 10 months ago but no other mention of it. Love the program great tool but need some mp3 help. Using this on windows 11.

WMA Audio Support

I'm currently using the application on Windows 10 and I've noticed that my .wma files do not appear when scanning the folders. It would be great if support for them might be added, as I have a large catalogue of .wma files from before I switched to .mp3 and .flac.

"Ran out of memory" error

I just installed it, pointed it to my music directory (just over 1TB of music, around 110k songs) and got a loading icon for several minutes until it errored out and won't get past that error. I'm on Win10 and have 32GB of RAM but when I start LRCGET it uses more and more until it errors out.

Option to filter songs

I'd like to have an option to filter out all songs with synced lyrics (so the list only shows songs with just plain text and with no lyrics), and also to filter out songs with synced and plain text lyrics.

Right now, I'll have it download all the lyrics it can automatically find, but then I go through and manually check all the ones with plain text and no lyrics because the automate won't necessarily download the synced lyrics if the the album on my computer is listed as uppercase and the album on the server is in title case, or if the album on my computer has Deluxe/Special Edition and in on the server only the normal edition is listed. Would be a whole lot faster to run through manually if I could filter out the synced lyrics that are already downloaded.

Rating System

So I don't know where to submit ideas/feature requests for lrclib, but I want to suggest that there could a rating system so that people could rate (maybe out of 5 stars) lyrics so that lrcget could factor in the rating and preferably pick the highest rating when searching for lyrics.

This would likely require an account system for lrclib which you could sign in with lrcget. I know this would likely require some work to implement but I think this would be beneficial.

Add support of syllable lyrics

Syllable lyrics is an extension of enhanced LRC format, for more see here: https://en.wikipedia.org/wiki/LRC_(file_format)#A2_extension:_word_time_tag

Example:

[00:00.00] <00:00.04> When <00:00.16> the <00:00.82> truth <00:01.29> is <00:01.63> found <00:03.09> to <00:03.37> be <00:05.92> lies 
[00:06.47] <00:07.67> And <00:07.94> all <00:08.36> the <00:08.63> joy <00:10.28> within <00:10.53> you <00:13.09> dies 
[00:13.34] <00:14.32> Don't <00:14.73> you <00:15.14> want <00:15.57> somebody <00:16.09> to <00:16.46> love

The request is to add an ability to differentiate syllable lyrics from usual "Synced" LRC files in LRCLIB and LRCGET and correctly display them in LRCGET.

Gui fails to list mp3 files with two or more artists

This issue has been described in other issues already, but the cause was not completely clear, so i thought it wise to open a specific issue. The problem is that certain music files are not recognised upon loading a certain directory. HoreaM suggested this might be due to those files having multiple artists listed in the metadata. I can confirm that this is the case, as there is an overwhelming correlation between the two.

some suggestions:

  • Use only the first artist in the metadata
  • Use the album artist instead
  • Allow the 'artist' field to be populated by an array of artists, joining them into a string when neccesary

False successful retrievals

Thanks for making this tool!

Whenever I run this on any folder tree I get a number of missing .lrc files for tracks it says 'Retrieved lyrics successfully', for example:

folder1
total items 154
successed 144
not found 10
.lrc saved 94
folder2
total items 61
successed 58
not found 3
.lrc saved 54
folder3
total items 825
successed 560
not found 265
.lrc saved 411

When I rerun it again on folders with some missing "successed" lrcs, it will show the same few songs as succeeding again, but not save any lrcs. The missing lrcs should be in albums where some .lrcs do save, so not a permission issue.

Is there a way to run this and see some verbose logs?

Edit - more info:
The very first time I ran this (on album Views by Drake), I remember it showing "Failed to find" on the tracks titled "9", "Hotline Bling", and "Views", but most other tracks on this album saving fine. Then when I rerun it again on this album, it says these 3 tracks were found successfully, but no new .lrcs show up. (also, on this album I still get a couple other failed tracks every time, so this failed -> success status change isn't happening for every failed search)

Could it be lrclib is hitting some error and caching blank/corrupt .lrcs on the first (failed) try, then showing successes on future searches, but failing to serve those bad .lrcs? My folder3 run with 411 saved .lrcs for 560 "successed" suggests this could be 2 different issues, but I don't know how big your existing .lrc cache is already.

Time Validity issue

So I found an odd issue. I get an error when searching for lyrics that the certificate is not within the validity period. If I try and go to the URL that is provided it gives me the certificate error where I can "Advance" through it. Here is the error that I am getting, it is for every song I have.
error sending request for url (https://lrclib.net/api/search?track_name=<track_name>%28Album+Version%29&artist_name=&album_name=): error trying to connect: A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file. (os error -2146762495)

App won't open

App won't open on Windows 10. I try to open the app even with admin privileges and nothing happens.

new 0.3 force close when opening in windows 10

I completly uninstall and remove data from the previous version and restarted my pc

I use LRCGET_0.3.0_x64-setup.exe

It is installing but it doesn't launch properly, it forced close

Edit: i re installed 0.2.1 and it is running normaly so thzre should be a problem with 0.3....

Dark Theme

If possible, please add dark theme. Light theme causing eye fatigue when syncing lyrics.

macOS Version GUI Bugs

First of all, thank you! This is a great little app, impressive work so far!
I just wanted to drop by and give you a few notes on some macOS issues I've found that you hopefully find helpful as you work:

  1. Can't scroll on any page. So I can never see anything past what gets loaded on the screen at the beginning.
  2. No stop button for music player, have to quit the app.

Other than that, I think it works really well. Would love to know where you are pulling these from, and if it's possible to add more sources. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.