Skip to content
Search and play any song from terminal
Branch: develop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
logo
playx Youtube playlist bug fix. Jun 11, 2019
.gitignore Add media files to ignore May 15, 2017
CONTRIBUTING.md Add example to CONTRIBUTING.md Jul 31, 2018
LICENSE Add MIT license May 16, 2018
README.md GIF updated Feb 21, 2019
example.playx Move Playxlist to playlist module Dec 13, 2018
playx.gif GIF updated Feb 21, 2019
requirements.txt Remove package versions from requirements.txt Aug 22, 2018
setup.py Updated package requirements. Feb 21, 2019

README.md

Search and play any song from terminal.

playx in action

playx

  1. Philosophy
  2. Requirements
  3. Installation
  4. Features
  5. Usage
  6. Example
  7. Contribution
  8. TO-DO
  9. Acknowledgements

Philosophy

Play any songs that come in your mind.

Hoping to make it an awesome music assistant


Requirements/Dependencies

  1. Python3.x

  2. pip3

  3. MPV

Note: These dependencies in linux can be installed in other variants.
For arch linux, you can use pacman package manager accordingly.


Installation

  • Run the following command in the root directory to install playx.
pip install -e .
  • Or install using setup.py as:
python setup.py install

Features

  • play by query
  • play by youtube url
  • play a youtube playlist
  • play a billboard chart
  • play a spotify playlist
  • play from soundcloud playlist
  • play from JioSaavn playlist
  • play from gaana playlist.
  • play from local playlist
  • cache support
  • CLI using mpv
  • auto generate playlist

Usage

For now, the application is in development phase.

usage: playx [-h] [-p] [-n] [-auto] [-d] [-l] [--pl-start PL_START]
             [--pl-end PL_END]
             [song [song ...]]

playx - Search and play any song that comes to your mind. If you have any
issues, raise an issue in the github (https://github.com/NISH1001/playx) page

positional arguments:
  song                  Name or youtube link of song to download

optional arguments:
  -h, --help            show this help message and exit
  -p, --play-cache      Play all songs from the cache. The cache is located at
                        ~/.playx/songs/ by default
  -n, --no-cache        Don't download the song for later use.
  -auto, --auto         Auto generate playlist
  -d, --dont-cache-search
                        Don't search the song in the cache.
  -l, --lyrics          Show lyircs of the song.
  --pl-start PL_START   Start position in case a playlist is passed. If passed
                        without a playlist it has no effect.
  --pl-end PL_END       End position in case a playlist is passed. If passed
                        without a playlist it has no effect.

Example

Play by song name

playx man sold world nirvana

This plays the song titled "The man who sold the world by Nirvana"

Play by youtube link

playx https://www.youtube.com/watch?v=4zLfCnGVeL4

This plays the song The Sound of Silence.

Play by soundcloud links

playx https://api.soundcloud.com/tracks/232673157

This plays soundcloud track

Play from youtube playlist

playx https://www.youtube.com/playlist?list=PLwg22VSCR0W6cwuCKUJSkX72xEvYXS0Zx

This plays the songs from my personal (and public) playlist named Chilld and Wisdom.

Play from a Billboard Chart

playx hot-100

This plays the songs from Billboards hot-100 chart. The billboard charts can be found here

Play from spotify playlist

playx https://open.spotify.com/playlist/37i9dQZF1DX5Ozry5U6G0d

This plays the songs from Spotify Summer Party playlist.

Play from soundcloud playlist

playx https://soundcloud.com/devintracy/sets/goodafternoon

This plays the songs from SoundCloud playlist

Play from JioSaavn playlist

playx https://www.jiosaavn.com/featured/magical-amit-trivedi/IGYxX3V4T7w_

This plays songs from the JioSaavn playlist

Play from local playlist

The local playlist should have an extension .playx in order for us to recognize it as a playlist.

playx example.playx

This plays a playlist named example.playx

For a playlist every line is considered an entry. Refer to example.playx.

Auto-Generate Playlist

playx --auto

This will automatically generate a playlist by using the frequency of songs played that has been logged in the log file.
Note: This will improve in future releases using more robust method (like Markov Chains)


Cache Directory Structure

By default, playx creates a directory in the home as ~/.playx (which is a hidden folder). Structure is like:

.playx
    |- songs/
    |- logs/

songs: This stores all the songs downloaded by playx
logs: This stores the log for user activities of songs that are searched and played with creation date. This will be used for recommendation of songs in future version


Contributions

Contributions are warmly welcome. Please do go through CONTRIBUTING.


TO-DO

  • caching of downloaded songs (if the song exists locally, play it right away else play from youtube)
  • speed up the whole search->download->convert->play process
  • stream/play while downloading the song
  • play all the songs from the cache
  • search lyrics
  • play from youtube playlist
  • play from local playlist (may be a list of song names)
  • play from other playlist (spotify, billboard, etc.)
  • log activity
  • auto generate playlist
  • use Markov Chains to improve auto-playlist
  • use Factorization Machines to improve auto-playlist
  • use logs to create simple recommendations

Acknowledgements

  • Thanks to Deepjyoti Barman for doing all the major contributions (parallelizing streaming + downloads , playlist, logger)
  • Thanks to Mirza Zulfan for logo for playx. It's neat (and cool)
  • Thanks to Mattwmaster58 for creating packaging structure with setup file
You can’t perform that action at this time.