diff --git a/README.md b/README.md index 899e23e..aa589ec 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,14 @@ A Python package to fetch song lyrics from [paroles.net](https://www.paroles.net ### Command Line Interface -After installation, you can use the command line interface: +After installation, you can use the command line interface with two formats: +1. Single argument with dash separator: +```bash +paroles-scraper "Artist Name - Song Title" +``` + +2. Two separate arguments: ```bash paroles-scraper "Artist Name" "Song Title" ``` @@ -37,6 +43,7 @@ paroles-scraper "Artist Name" "Song Title" ### Examples ```bash +paroles-scraper "SCORPIONS - SEND ME AN ANGEL" paroles-scraper "Ed Sheeran" "Shape of You" paroles-scraper "Imagine Dragons" "Believer" ``` diff --git a/paroles_net_scraper/paroles_net_scraper.py b/paroles_net_scraper/paroles_net_scraper.py index 27ae1f4..2614a91 100644 --- a/paroles_net_scraper/paroles_net_scraper.py +++ b/paroles_net_scraper/paroles_net_scraper.py @@ -125,25 +125,44 @@ def search_song(artist, song_title): def main(): parser = argparse.ArgumentParser(description='Fetch song lyrics from paroles.net') - parser.add_argument('artist', help='Artist name') - parser.add_argument('song', help='Song title') + parser.add_argument('query', help='Artist and song in format "ARTIST - SONG TITLE" or separate artist and song arguments') + parser.add_argument('song', nargs='?', help='Song title (optional if using ARTIST - SONG format)') parser.add_argument('--search', action='store_true', help='Use search functionality instead of direct URL construction') args = parser.parse_args() + # Handle both input formats: + # 1. Single argument: "ARTIST - SONG TITLE" + # 2. Two arguments: ARTIST SONG_TITLE + if args.song is None: + # Single argument format: split on " - " + if " - " in args.query: + artist, song = args.query.split(" - ", 1) + else: + print("Error: Please provide artist and song in format 'ARTIST - SONG TITLE'") + return + else: + # Two argument format: artist and song provided separately + artist = args.query + song = args.song + + # Strip any leading/trailing whitespace + artist = artist.strip() + song = song.strip() + if args.search: # First search for the song to get the correct URL - search_result = search_song(args.artist, args.song) + search_result = search_song(artist, song) if search_result.startswith("http"): # Extract artist and song from the URL print(f"Found song at: {search_result}") # For simplicity, we'll still call get_song_lyrics with original params - lyrics = get_song_lyrics(args.artist, args.song) + lyrics = get_song_lyrics(artist, song) print(lyrics) else: print(search_result) # Print error message else: - lyrics = get_song_lyrics(args.artist, args.song) + lyrics = get_song_lyrics(artist, song) print(lyrics)