com.github.marinm.songrec CC0-1.0 GPL-3.0+ SongRec An open-source, unofficial Shazam client for Linux, written in Rust.

Features:

- Recognize audio from an arbitrary audio file.

- Recognize audio from the microphone.

- Usage from both GUI and command line (for the file recognition part).

- Provide an history of the recognized songs on the GUI, exportable to CSV.

- Continuous song detection from the microphone, with the ability to choose your input device.

- Ability to recognize songs from your speakers rather than your microphone (on compatible PulseAudio setups).

- Generate a lure from a song that, when played, will fool Shazam into thinking that it is the concerned song.

https://raw.githubusercontent.com/marin-m/SongRec/master/packaging/Screenshot.png The GUI https://github.com/marin-m/SongRec

Add a Catalan translation (thanks to @pgiuli in issue #23)

Make the UI more clear so that it is visible that we are toggling the recognition from the speakers rather than the microphone when the monitor mode is on (see issue #149)

Fix a bug that had certain strings to be mistakenly copied at the bad places in the internationalized versions of the application, due to the fuzzy mode of msgmerge/gettext

Update the Dutch translation (thanks to @Vistaus in PR #150)

Update compilation instructions in the README.md file

Allow to compile the app with the libpulse and MPRIS module enabled on non-Linux UNIX systems such as BSD (see issue #152)

Possibly improve the compatibility of the recognize-from-speakers feature

Add a Korean translation (thanks to @MarongHappy in PR #146)

Re-integrate MPRIS compatibility code in the default builds, with an opt-in GUI option

Add a simple preference window and an about dialog

Use libpulse (when available) for displaying the list of selectable audio input devices by default, instead of alsalib for listing audio inputs and pactl for switching to a monitor mode device, so that the list of devices displays correct values on PipeWire/PulseAudio-based systems.

Make the dependencies over libpulse and DBus MPRIS fully optional, through Cargo features.

Disable MPRIS signalling in default builds, as it may interfer inopportunely with media keys control from other media players (as submitted in issue #89)

Fix build issues on non-Linux platforms (thanks to pull request #144 from @dotX12)

Add a Favourite songs list in the interface (thanks to pull request #123 from @damonhayhurst)

Add a Spanish UI translation (as submitted by @Swyter in issue #23)

Add a German UI translation (as submitted in issue #23)

Update the Italian UI translation (thanks to pull request #133 from @M0Rf30)

Add a checkbox into the graphical interface in order to disable or enable system notifications whenever recognizing a song (thanks to @damonhayhurst).

Fix the bug that previously caused the Firefox user interface menus to blink on Linux after the "Search on YouTube" feature has been used (thanks to @ducaton).

Update the French translation.

Add safety checks in order to prevent potential crashes when handling corrupt configuration files or invalid audio devices.

Change the path of the files saving user interface-related preferences in order to update a deprecated Rust crate (this may create a symbolic link from "~/.local/share/songrec" towards an preexisting "~/.local/share/SongRec" directory under Linux).

- Fix the behavior of the new "recognize" command, when recognizing from a file.

- Add album artwork, if it exists, to the desktop notification when a song is recognized (thanks to @damonhayhurst).

- Update the Dutch translation (thanks to @Vistaus).

- Introduce a new command-line interface allowing to use microphone recognition from the command line, with the "recognize" and "listen" commands (thanks to @Hummer12007), keeping older command backwards compatibility.

- Update the CSV export format in order to introduce new "track_key", "release_year" and "genre" columns (thanks to @tyd), where "track_key" is an identifier internal to the Shazam database.

- Allow exposing song metadata through the standard DBus MPRIS interface (thanks to @Hummer12007).

- Improve source code structure in order to split the dual CLI/GUI parts from the core thread communication and fingerprinting parts and from other platform-dependant utility code.

- Update certain dependent crates to more recent minor versions, among other possible things in order to accept a higher LibreSSL version.

- Add the program version without the program help output (see the "-h" or "-V", "--version" options).

- Add a Polish translation (thanks to @qarmin).

- Update the French translation according to recent changes.

- Don't crash when there is no input device available on the host machine.

- Update the Dutch translation.

- Add Japanese and Italian translations.

- Fix PipeWire compatibility.

- Add support for a possible XDG action for recognizing from a file.

- Add French and Dutch translations.

- Ensure that only one window of SongRec is present.

- Avoid to display "No match for this song" when multiple instances of SongRec would be displayed and one would be closed.

- Include a "Cargo.lock" file in the project so that it can be accepted in certain packaging systems that require freezing Rust dependencies to a known subversion.

- Change the locale sent in HTTP requests to avoid to display internationalized song titles, in certain cases.

- Fix a minor typo in the algorithm implementation that shouldn't impact recognition.

- Improve portability.

- Display a clean "Shazam servers are not reachable, are you connected?" message on the GUI when the computer has been offline, rather than showing low-level errors.

- Improve cross-platform support.

- Try to decode input files with FFMpeg when it is available on the target system, in order to support more audio and video formats when recognizing from a file.

- The song recognition history now has a right-click context menu that allows to copy the name of the songs, artists, tracks or albums, or to search previously recognized songs on YouTube.

- It is now possible to select the name of the last recognized song so that it can be copy-pasted somewhere easily.

- Add the ability to recognize songs from your speakers rather than your microphone, through a checkbox that will be visible when the functionality is available, on compatible PulseAudio setups.

- Make the application fully responsive for mobile devices using GtkFlowBox, thanks to @a33k.

- Use GtkFileChooserNative so that the application is able to graphically pick files through Flatpak without requiring further file system permissions.

- Add Flatpak packaging scripts and assets.

- Ensure that generated song lures don't last too long enough in certain cases.

- Remove the dash in the long application ID as it was incompatible with Flatpak.

Initial crates.io release

ModernToolkit HiDpiIcon Notifications Marin marin-m@users.noreply.github.com com.github.marinm.songrec.desktop audio/mpeg audio/x-wav audio/x-vorbis+ogg audio/flac