Package: cplayer
CPlayerCommand LinePython playeris a minimalist song player written with Python
(github), this application offers a wide range of functionality to
enhance your music listening, playlist management, filtering and searching songs and more using keyboard shortcuts.Below, you'll find a comprehensive list of keyboard shortcuts and their corresponding actions within the application,
and additional configurations:keyboard shortcuts and customized configurations.Only tested in Linux.Table of contentsFeaturesGet startedInstallationUninstallationUsageOptionsTODOKnown issuesReports and DebuggingDevelopersSet up the Git hooks custom directoryBasic configurationTestingAdvanced configurationStatic code analysis toolsPython static checkersRun manuallyLicenseChangelogFeaturesGUI customization.If your system does not support the icons used you can set them manually in~/.config/cplayer/config.yaml.Keyboard shortcuts customization.Create multiple playlists and manage then.Multiple ways to navigate through the playlist including jumping by position, filtering, manual displacements,
sorting, etc.Download song from a YouTube URL (--url).Get startedInstallationThis application can be simply installed by running:pipinstallcplayerif you want to install from a source distribution:gitclonehttps://github.com/eccanto/cplayercdcplayer/
pipinstall.UninstallationTo uninstall the application you can usepip:pipuninstallcplayerUsageTo run the application you must run the command line:cplayerBy default the application will load the last playlist if it exists, otherwise the application will use the current
path to load the.mp3files from the directory (not recursively).Options$ cplayer --help

Usage: cplayer [OPTIONS]

  Command Line Python player CLI.

  This command line tool plays music files from a specified directory or last
  used playlist.

  Examples:

      - Play music from the current directory or the last used playlist if it
      exists:

        $ cplayer

      - Play music from a specific directory:

        $ cplayer --path /path/to/music_directory

      - Download song from YouTube

        $ cplayer --url 'https://www.youtube.com/watch?v=xyz'

  For more information, visit https://github.com/eccanto/cplayer

Options:
  -p, --path PATH  Path to the directory containing your music files.
  -u, --url TEXT   URL of the song to download from YouTube.
  --version        Show the version and exit.
  --help           Show this message and exit.TODOAdd favorites feature.Add option to restore default configurations.Add confirmation dialog to remove/add songs.Add "recent" sections: recent folders, recent playlists, recent songs.Known issuestmuxsubpanels may cause the application dimensions to be incorrect.Reports and DebuggingThe application uses a log file located at~/.cplayer/logfile.logto report and debug errors. The log file contains
detailed information about all errors that occur while the application is running, including the time and date of the
error, the error message, and the stack trace.To view the log file, you can use a text editor or a terminal emulator, e.g.:tail-f~/.cplayer/logfile.logThe log file can be used to report and debug errors.DevelopersThis project usetoxandpytestto run the library tests.Set up the Git hooks custom directoryAfter cloning the repository run the following command in the repository root, this ensures that library tests are run
before each push into the repository to maintain the quality of the project:gitconfigcore.hooksPath.githooksBasic configurationInstall development python requirementspipinstall-rrequirements_dev.txtTestingSimply run "tox" to execute all the library tests.toxto run the tests for a particular Python version, you can do:tox-epy38to clean the test environment:tox-ecleanto publish the pypi package:tox-epublishAdvanced configurationBy defaulttoxwill look for the python versions available on the system, and will run the compatibility tests on
the detected ones, and skip the versions not found. To ensure that compatibility tests are run for all Python
versions, the following steps must be followed:InstallpyenvInstall python versions:forpython_versionin"3.7""3.8""3.9""3.10""3.11";dopyenvinstall${python_version};doneEnable python versions:pyenvlocal"3.7""3.8""3.9""3.10""3.11"Reinstall virtualenv (if necessary)# uninstall virtualenvpipuninstallvirtualenv
sudoaptpurgepython3-virtualenv# install virtualenvpipinstallvirtualenvInstall development python requirements (if necessary)pipinstall-rrequirements_dev.txtStatic code analysis toolsThese are the static analysis tools that will help us to follow good practices and style guides of our source code. We
will be using the following tools, which will be executed when generating a new push in the repository (git hooks).Python static checkersTools used:brunette: A best practice Python code formatter.isort: Python utility / library to sort imports alphabetically, and automatically
separated into sections and by type.prospector: Prospector is a tool to analyze Python code and output information
about errors, potential problems, convention violations and complexity.Tools executed by Prospector:pylint: Pylint is a Python static code analysis tool which looks for programming
errors, helps enforcing a coding standard, sniffs for code smells and offers simple refactoring suggestions.bandit: Bandit is a tool designed to find common security issues.dodgy: It is a series of simple regular expressions designed to detect
things such as accidental SCM diff checkins, or passwords or secret keys hard coded into files.mccabe: Complexity checker.mypy: Mypy is an optional static type checker for Python.pydocstyle: pydocstyle is a static analysis tool for checking compliance
with PythonPEP 257.pycodestyle: pycodestyle is a tool to check your Python code against
some of the style conventions inPEP 8.pyflakes: Pyflakes analyzes programs and detects various errors.pyroma: Pyroma is a product aimed at giving a rating of how well a Python
project complies with the best practices of the Python packaging ecosystem, primarily PyPI, pip, Distribute etc,
as well as a list of issues that could be improved.twine: Thetwine checkcommand is used to perform various checks on a
Python package distribution before uploading it to thePython Package Index(PyPI) using twine.Run manuallytox-echeck_codeLicenseMITChangelog1.0.0 - Initial version.1.0.1:refactor: Update documentation.fix: Default playlist loading.feat: Add--versioncommand line argument.1.0.2:feat: Download song from a YouTube URL (--url).1.1.0:fix: Update the application when a song is broken.feat: Add log details when downloading a song.1.1.1:fix: Store absolute paths of the songs in the playlist file.refactor: Change keyboard shortcuts (vimstyle).1.1.2:fix: Handle error when song files are not found.documentation: Add development documentation.refactor: Enable log file.1.1.3:refactor: Update requirements compatibility.1.1.4:refactor: Update application compatibility.1.1.5:fix: Apply background and primary color from local configuration file.1.2.0:feat: Add displacement to the last position with:$.feat: Add synchronization feature to take a directory path and synchronize its files with the current playlist,
if the directory contains previously deleted songs they are not re-added.