Search code examples
bashurlmp3wget

Is it possible to download all mp3s from a domain or URL?


I'd like to download all mp3s from the blog pinchy&friends. I tried the script

for mp3 in "http://www.pinchyandfriends.com/dl.php?mp3=*.mp3"; do
    wget "http://www.pinchyandfriends.com/dl.php?mp3=${mp3}.mp3"
    sleep 5
done

But all that results in is an attempt to download the literal http://www.pinchyandfriends.com/dl.php?mp3=*.mp3. Am I misunderstanding something about the script I wrote and/or is there a better way to do what I'm attempting? Thanks in advance.


Solution

  • You can't do it this way, you're $mp3 variable is actually: "http://www.pinchyandfriends.com/dl.php?mp3=*.mp3"

    You have to solve it this way:

    for mp3 in "title1" "title2" "title3"; do
        wget "http://www.pinchyandfriends.com/dl.php?mp3=$mp3.mp3"
        sleep 5
    done
    

    You should think how to obtain the mp3 names first.

    Edit: Here's Your solution.

     for album in $(wget -q -O- http://www.pinchyandfriends.com/ | egrep -o "/[0-9]+/[^/]+/"); do
         echo $album                                                                 
         dl_uri=$(wget -q -O- "http://www.pinchyandfriends.com$album" | egrep -o '/dl.php[^"]+')                                                                         
         wget "http://www.pinchyandfriends.com$dl_uri"  
     done
    

    This script gets the list of albums from the main page, then goes to the album page to fetch the download uri, and then uses wget to actually get the mp3