Skip to content

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

License

Notifications You must be signed in to change notification settings

derhnyel/getmusic

Repository files navigation

GETMUSIC

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

logo


Getmusic is a package that gives you access to a variety of music from your favourite artists. It lets you query popular music download sites and scrape for artists, songs and albums titles, download links to albums and tracks and albums/tracks details.

Supported Engines

Supported music engines include:

  • SongsLover
  • Mp3Juices
  • NaijaMusic
  • AceMusic
  • JustNaija

View all supported engines here

Development

Clone the respository

  • Clone this repo git clone git@github.com:derhnyel/getmusic.git

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages