getmusic

A music aggregator engine for downloading/streaming free music albums and popular youtube / spotify playlists from the terminal.

MIT License

Stars
11
Committers
4

GETMUSIC

Why must i pay for what makes me Happy ? Why can't i GETMUSIC for free ? Let us set music Free.

Supported Engines

Supported music engines include:

  • SongsLover
  • Mp3Juices
  • NaijaMusic
  • AceMusic
  • JustNaija

View all supported engines here

Development

Clone the respository

Usage

Search

  • Engines can be searched with query string.

    import pprint

    from engine.songslover import SongsLover 
    from engine.justnaija import JustNaija
    from engine.naijamusic import NaijaMusic
    from engine.mp3juices import Mp3Juices
    from engine.ace import Ace

    search_args = ('Donda 2',1)
    jn = JustNaija()
    mj = Mp3Juices()
    ace = Ace() 
    sl = SongsLover()
    nm = NaijaMusic()

    slresults = sl.search(*search_args)
    jnresults = jn.search(*search_args)
    aceresults = ace.search(*search_args)
    mjresults = mj.search(*search_args)
    nmresults = nm.search(*search_args)

    results = dict(
              Songslover=slresults,
              JustNaija=jnresults,
              AceMusic=aceresults,
              NaijaMusic=nmresults,
              Mp3Juices=mjresults,
              )

    # pretty print the result from each engine
    for k, v in results.items():
        print(f"-------------{k}------------")
        for result in v:
            pprint.pprint(result)

Fetch

  • Latest Items can be fetched from engines based on categories eg. latest albums, tracks, gospel etc. Each engine allowed category is defined.

    import pprint

    from engine.songslover import SongsLover 
    from engine.justnaija import JustNaija
    from engine.naijamusic import NaijaMusic

    jn = JustNaija()
    sl = SongsLover()
    nm = NaijaMusic()
    
    # check the allowed category method to see the categories allowed for each engine
    slresults = sl.fetch(category='albums',page=1)
    jnresults = jn.fetch(category='album' ,page=1)
    nmresults = nm.fetch(category='albums-eps',page=1)

    results = dict(
              Songslover=slresults,
              JustNaija=jnresults,
              NaijaMusic=nmresults,
              )

    # pretty print the result from each engine
    for k, v in results.items():
        print(f"-------------{k}------------")
        for result in v:
            pprint.pprint(result)

TODO's

  • TODO: Creates Enum for some objects and results items.
  • TODO: Create a Caching Mechanism for results.
  • TODO: Handle Engine Errors and Exceptions.
  • TODO: Make Request Handling Asynchronous.
  • TODO: Seperate Engine's parse single object method from search method.
  • TODO: Add more Music Engines.
  • TODO: Scrape some existing Engines for more track details. eg. Songslover,NaijaMUsic,JustNaija for track duration and genre.
  • TODO: Put A Summary for every Engine.
  • TODO: Add a deezer/spotify/youtube search and download via url engine.
  • TODO: Proper Results clean up. Removing unnecesary characters appended to titles and proper formating of other results parameters.

Contributing

Want to contribute to Getmusic? Awesome! Check out the contributing guidelines to get involved.