:notes: Cross-platform music player

Overview

Exaile

Build Status Translate with Weblate

Exaile is a music player with a simple interface and powerful music management capabilities. Features include automatic fetching of album art, lyrics fetching, streaming internet radio, tabbed playlists, smart playlists with extensive filtering/search capabilities, and much more.

Exaile is written using Python and GTK+ and is easily extensible via plugins. There are over 50 plugins distributed with Exaile that include advanced track tagging, last.fm scrobbling, support for portable media players, podcasts, internet radio such as icecast and Soma.FM, ReplayGain, output via a secondary output device (great for DJs!), and much more.

For more information see https://www.exaile.org/

Comments
  • Port to Gtk3/PyGobject/GST 1.x

    Port to Gtk3/PyGobject/GST 1.x

    Start from: https://bugs.launchpad.net/exaile/+bug/846379

    Some blockers I can think of for PyGI/GTK3:

    • [X] I don't want to not have a way to select output devices, and GST 1.x got rid of the property probe interface. See https://bugzilla.gnome.org/show_bug.cgi?id=678402 (which is marked as resolved, but it's not clear to me whether it is or not) -> FIXED in Gst 1.4
    • [ ] For Windows and OSX (both of which I use, and hope to continue to support), we currently rely on the GStreamer SDK for python bindings to GTK. As far as I can tell, it doesn't support GTK3 or GST 1, and still has the old PyGTK bindings on it. I could be wrong though.
    • [ ] Right now, I don't care enough about this to do it, and besides Johannes there isn't anyone else actively doing work on the project. Will probably want to push this off as long as we can, until more people join the project.
    Type: enhancement Help wanted GTK3/GST1.x 
    opened by thiblahute 43
  • [gapless playback] exaile mutes playback if FLAC is played after one or two MP3 files (details unclear)

    [gapless playback] exaile mutes playback if FLAC is played after one or two MP3 files (details unclear)

    Sometimes when exaile plays music from large playlists (randomly play songs, repeat everything active), it does the following:

    1. The song which was started plays until the end
    2. exaile loads the next song (and file, according to logging). This includes title information (above playlists) and cover, title length (progress bar below playlists).
    3. In some cases exaile does not start playing the song. In fact the progress bar is stuck at 0:00 seconds though it should play (and it is not paused).
    4. after some time exaile suddently starts playing the file (often just the last 1…3 seconds of the file) and then switches to step 2. again.

    When clicking somewhere after 3. happened into the progress bar makes exaile behave normal and play the file.

    I keep on running into this problem for quite a while but I am unsure how to reproduce it. The only thing I found out is that it only affects huge playlists. So it seems like exaile reacts special on some rare files (file types?). This could also be an issue with some gstreamer plugin, I don't know for sure.

    It looks like this primarily affects flac files. When they are played often the first few seconds go missing. In this case the progress bar misses some seconds (e.g. 0:01 and 0:03). It looks to me like exaile desperately tries to play a file the moment it should start without caring whether it is already loaded. I might be wrong but it looks to me like a caching (and: hard disk file access time) issue.

    This does not happen with VLC media player nor with totem (gnome's default media player using gstreamer). So it seems to be an issue with exaile only.

    opened by genodeftest 27
  • RTL control bar is reversed

    RTL control bar is reversed

    No physical DVD/Video player has its controllers set from right-to-left.

    FORCE LTR WIDGET DIRECTION.

    See: http://sourceforge.net/p/smplayer/bugs/584/ https://git.gnome.org/browse/ekiga/commit/?id=76c9b23 https://trac.gajim.org/changeset/5f8bfea2054a

    Type: enhancement 
    opened by GreenLunar 22
  • Need to split out the msys pieces from building a release

    Need to split out the msys pieces from building a release

    As discussed on IRC.... this really needs to be done. One of the things holding back release(s) is that it's difficult to build a full release unless you're on Windows, because of the msys dependency which is constantly changing.

    Ideally, the msys stuff could be packaged separately into something that could be reused and repackaged from Linux. Then, all we would need to do is push a tag, and travis would magically bundle everything together and push a release to github.

    One thought is to use pyinstaller in a more controlled way. We could bundle the source code of exaile with the installer, using the same base pyinstaller exe each time. This base could be primed with all of the builtin imports we need (somehow?), and the external stuff too. If the stub just executed the main exaile source, we wouldn't need to rebuild the pyinstaller exe each time.

    More ideas welcome. And.. I need to put together a VM with msys so we can get 4.0 out the door.

    Type: enhancement Platform: Windows Component: build system 
    opened by virtuald 20
  • [WIP] Improve build: Makefile and more tests in Travis CI

    [WIP] Improve build: Makefile and more tests in Travis CI

    Missing items:

    • [x] (optional) Run documentation and style checks only on one machine, preferably a separate one
    • [x] build all the code to check whether it compiles
    • [x] add sphinx to docker images (see exaile/exaile-testimg#2)
    • [x] build sphinx documentation during tests
    • [ ] add pychecker to docker images (see exaile/exaile-testimg#2)
    • [ ] check code style using pychecker
    • [x] put built .pyc / .pyo files where we can write them.

    Code style:

    $ pycodestyle --exclude=plugins/daapserver/spydaap/*.py --max-line-length=160 --statistics --count --ignore=E203,E241,E265,E266,E305,E402,E722,E731,E741,W293,W503 .
    

    Deferred:

    • [ ] add pytest-flakes to docker images (through pip install, see exaile/exaile-testimg#2
    opened by genodeftest 18
  • TypeError upon exit

    TypeError upon exit

    Hello,

    I'm seeing an regression between 11885d6 (20170907) and 9ba2cc8 (20171020). Every time I'm quitting exaile via File -> Quit Exaile menu item, I get this in terminal:

    Exception TypeError: "'NoneType' object is not callable" in <object repr() failed> ignored
    Exception TypeError: "'NoneType' object is not callable" in <object repr() failed> ignored
    

    Here is the full log with --debug, but it doesn't seem contain any clues about the error: https://dpaste.de/BDWQ/raw

    opened by mexicarne 18
  • Namespace Gst not available

    Namespace Gst not available

    Can't start on xubuntu 12.04 (maybe after update), version from PPA. ~$ exaile Traceback (most recent call last): File "/usr/local/lib/exaile/exaile.py", line 68, in <module> main() File "/usr/local/lib/exaile/exaile.py", line 65, in main exaile = main.Exaile() File "/usr/local/lib/exaile/xl/main.py", line 254, in __init__ _do_heavy_imports() File "/usr/local/lib/exaile/xl/main.py", line 51, in _do_heavy_imports gi.require_version('Gst', '1.0') File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 48, in require_version raise ValueError('Namespace %s not available' % namespace) ValueError: Namespace Gst not available

    ~$ exaile --version Exaile 4.0.0dev

    Git version also suddenly don't work, but don't got the output (sorry).

    opened by ghost 18
  • Add Preferences shortcuts to the player

    Add Preferences shortcuts to the player

    I was wondering if it was possible to add shortcuts from the preferences to the main player. For example, I'd like to 'Disallow playing new tracks when another track is playing' when I am actively DJing. I'd love to actively add a shortcut to the main player, on the bottom line where all it seems to do currently is display 'x songs showing, yzzx in collection' on the bottom right

    As a sidenote, is it possible to disable that line or change what is displayed on that particular line?

    This might also help with another issue I raised in the past (#708) about actively be able to change the delay between songs. If I can add a shortcut to the main player, I can easily a delay time in (milli)seconds and change it as I DJ

    Environment

    • Operating System and version: Windows 10
    • Exaile Version: 4.0.2 GStreamer: 1.16.0 GTK+: 3.24.8 GTK+ theme: Adwaita Locale: English_United States 1252 Mutagen: 1.40.0 PyGObject: 3.32.1 Python: 2.7.16
    Type: enhancement Help wanted Good first issue Component: plugin 
    opened by phalgunlolur 17
  • Exaile 4 Windows Installer flagged as Trojan

    Exaile 4 Windows Installer flagged as Trojan

    Steps to Reproduce (for bugs)

    1. Download the RC4 installer at https://github.com/exaile/exaile/releases/download/4.0.0-rc4/exaile-4.0.0-rc4.exe
    2. Run it on Windows 10
    3. Windows Defender kicks in and Quarantine the file
    4. Here's a screenshot.

    Expected Behavior

    The Installer should not be flagged :)

    Current Behavior

    Exaile cannot be installed.

    Possible Solution

    I've looked up this issue and it seems that other open source software has run into it as well. Obviously we should look into the release process to make sure that it does not contain virus/trojan, but I'm leaning towards Windows Defender flagging some unsigned binaries right now.

    Environment

    • Operating System and version: Windows 10 version 1809
    • Exaile Version: 4.0.0 RC4
    opened by dangmai 17
  • MP3 tags not read

    MP3 tags not read

    MP3 tags not read

    Steps to Reproduce (for bugs)

    Add folder to collection.

    Expected Behavior

    Tags should be properly imported for all supported media files.

    Current Behavior

    Tags for ogg and flac files work just fine, but all MP3 files show up without any tag information.

    Further information

    • Probably not a problem with mutagen per se since other programs that use it (I tested puddletag) work without problems.
    • Interestingly, if I edit the tag info within exaile, it shows up correctly afterwards.

    Environment

    • Operating System and version: Debian testing (buster), x86_64
    • Exaile Version: 4.0.0-rc2
    • mutagen-1.41.1
    Type: bug Type: regression 
    opened by ghost 17
  • Segmentation fault when adding too many files from sftp mounted dir

    Segmentation fault when adding too many files from sftp mounted dir

    Exaile crashes when adding too big files to the playlist

    Steps to Reproduce (for bugs)

    1. Mount a directory with mp3s using sftp (e.g. gigolo)
    2. Browse to the directory within the files tab in exaile
    3. Try to move them in the playlist (size of all mp3s was around 71MByte

    Expected Behavior

    Should not crash

    Current Behavior

    Segmentation fault

    Environment

    source: git exaile branch: master commit: e2543b4588e30f415766b67e55ee9235fc444593

    Type: bug 
    opened by jondoe1337 17
  • Upgrade Licensing to CC-BY-4.0 to be compatible with Debian FSG

    Upgrade Licensing to CC-BY-4.0 to be compatible with Debian FSG

    To be compatible with Debian Free Software Guidelines CC-BY-2.0 needs to be upgraded to CC-BY-4.0 See https://wiki.debian.org/DFSGLicenses#Creative_Commons_Attribution-ShareAlike_3.0_Unported_.28CC_BY-SA_3.0.29

    @mathbr Do you agree?

    opened by luzip665 0
  • winmmkeys: Use pynput; remove support for other modules

    winmmkeys: Use pynput; remove support for other modules

    pynput seems to be way to go for multimedia keys support on Windows, now that keyboard doesn't work anymore (see https://github.com/exaile/exaile/issues/830).

    I suppose pyHook might still work, but I haven't tested it in a long time. Being an extension module, pyHook is more annoying to deal with compared to pynput (which uses ctypes), so let's just settle on pynput.

    I haven't tested this with the installer; was hoping to test using a CI build, but apparently this needs a new SDK build (due to requirements.txt change), which in turn requires this to be merged to master first.

    opened by sjohannes 0
  • xl/trax: search_tracks: sleep only when running in secondary thread

    xl/trax: search_tracks: sleep only when running in secondary thread

    When processing the tracks in search_tracks generator, yield the current thread's timeslice only when running in the secondary (non-main) thread. This prevents unnecessary slow-downs in the main thread, where we want to finish the operation as fast as possible (especially under python 3.11 on linux, where time.sleep(0) introduced additional overhead).

    Fixes #832.

    opened by rokm 3
  • Upgrade Icecast plugin to use https://dir.xiph.org/yp.xml

    Upgrade Icecast plugin to use https://dir.xiph.org/yp.xml

    Upgrading Icecast plugin to use https://dir.xiph.org/yp.xml for retrieving stations. Fixes #829

    For now it is quite slow. And some optimizations and cleaning needs to be done.

    But can someone check if it works correct and as before?

    opened by luzip665 4
  • Track start/end events not triggered for not local streams on track change

    Track start/end events not triggered for not local streams on track change

    Steps to Reproduce (for bugs)

    1. Enable the OSD plugin (to better appreciate the issue)
    2. Add a radio playlist, e.g. any SomaFM playlist
    3. Play it
    4. Wait for a new track to be parsed

    Expected Behavior

    I'd expect to be notified of the track change via OSD

    Current Behavior

    OSD doesn't notify the track change

    Possible Solution

    I'm proposing this PR. I'm not sure that's the best way to "save" the current track prior to tags changing.

    Environment

    • Operating System and version: Slackware Linux 15.0
    • Exaile Version: Exaile 4.1.2-beta1+70fa4d1
    opened by eri-trabiccolo 0
Releases(4.1.2)
Owner
Exaile
A cross platform audio player
Exaile
A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

A small project where I identify notes and key harmonies in a piece of music and use them further to recreate and generate the same piece of music through Python

null 5 Oct 7, 2022
Music player - endlessly plays your music

Music player First, if you wonder about what is supposed to be a music player or what makes a music player different from a simple media player, read

Albert Zeyer 482 Dec 19, 2022
Music player and music library manager for Linux, Windows, and macOS

Ex Falso / Quod Libet - A Music Library / Editor / Player Quod Libet is a music management program. It provides several different ways to view your au

Quod Libet 1.2k Jan 7, 2023
SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats

SU Music Player — The first open-source PyTgCalls based Pyrogram bot to play music in voice chats Note Neither this, or PyTgCalls are fully

SU Projects 58 Jan 2, 2023
This is an OverPowered Vc Music Player! Will work for you and play music in Voice Chatz

VcPlayer This is an OverPowered Vc Music Player! Will work for you and play music in Voice Chatz Telegram Voice-Chat Bot [PyTGCalls] ⇝ Requirements ⇜

null 1 Dec 20, 2021
XA Music Player - Telegram Music Bot

XA Music Player Requirements ?? FFmpeg (Latest) NodeJS nodesource.com (NodeJS 17+) Python (3.10+) PyTgCalls (Lastest) MongoDB (3.12.1) 2nd Telegram Ac

RexAshh 3 Jun 30, 2022
❤️ Hi There Im Cozmo Music Bot A next gen powerful telegram group Music bot for get your Songs and music @Venuja_Sadew

?? Cozmo MUSIC ?? Cozmo Music is a Music powerfull bot for playing music on telegram voice chat groups. Requirements FFmpeg NodeJS nodesource.com Pyth

Venuja Sadew 3 Jan 8, 2022
Okaeri-Music is a telegram music bot project, allow you to play music on voice chat group telegram.

Okaeri-Music is a telegram bot project that's allow you to play music on telegram voice chat group

Wahyusaputra 1 Dec 22, 2021
Okaeri-Music is a telegram music bot project, allow you to play music on voice chat group telegram.

??️ PROJECT MUSIC,THIS IS MAINTAINED Okaeri-Music is a telegram bot project that's allow you to play music on telegram voice chat group Features ?? Th

Okaeri-Project 2 Dec 23, 2021
NovaMusic is a music sharing robot. Users can get music and music lyrics using inline queries.

A music sharing telegram robot using Redis database and Telebot python library using Redis database.

Hesam Norin 7 Oct 21, 2022
A Music Player Bot for Discord Servers

A Music Player Bot for Discord Servers

Halil Acar 2 Oct 25, 2021
Stevan KZ 1 Oct 27, 2021
An 8D music player made to enjoy Halloween this year!🤘

HAPPY HALLOWEEN buddy! Split Player Hello There! Welcome to SplitPlayer... Supposed To Be A 8DPlayer.... You Decide.... It can play the ordinary audio

Akshat Kumar Singh 1 Nov 4, 2021
A music player designed for a University Project.

A music player designed for a University Project. Very flexibe and easy to use, a real life working application with user friendly controls. Hope u enjoy!!

Aditya Johorey 1 Nov 19, 2021
A Quick Music Player Made Fully in Python

Quick Music Player Made Fully In Python. Pure Python, cross platform, single function module with no dependencies for playing sounds. Installation & S

null 1 Dec 24, 2021
Vixtify - Python Controlled Music Player

Strumm Sound Playlist : Click me to listen Welcome to GitHub Pages You can use the editor on GitHub to maintain and preview the content for your websi

Vicky Kumar 2 Feb 3, 2022
Anki vector Music ❤ is the best and only Telegram VC player with playlists, Multi Playback, Channel play and more

Anki Vector Music ?? A bot that can play music on Telegram Group and Channel Voice Chats Available on telegram as @Anki Vector Music Features ?? Thumb

Damantha Jasinghe 12 Nov 12, 2022
Klangbecken: The RaBe Endless Music Player

Klangbecken Klangbecken is the minimalistic endless music player for Radio Bern RaBe based on liquidsoap. It supports configurable and editable playli

Radio Bern RaBe 8 Oct 9, 2021
A simple music player, powered by Python, utilising various libraries such as Tkinter and Pygame

A simple music player, powered by Python, utilising various libraries such as Tkinter and Pygame

PotentialCoding 2 May 12, 2022