#!/usr/bin/python
# Rips mp3s from bleep.com
# by mOther, Aug 07 2007
import urllib
import re
import sys
def bleep_get_title_and_key(release, track):
release_dash_track = "%s-%02d" % (release, track)
url = "http://www.bleep.com/player.php?track=" + release_dash_track
response = urllib.urlopen(url)
page = response.read()
title = None
key = None
pattern = re.compile("title=([^&]+)&")
match = pattern.search(page)
if match:
title = match.group(1)
pattern = re.compile("key=([^\"]+)\"")
match = pattern.search(page)
if match:
key = match.group(1)
return title, key
def bleep_get_album_and_artist(release):
album = None
artist = None
url = "http://www.bleep.com/current_item.php?selection=" + release
response = urllib.urlopen(url)
page = response.read()
pattern = re.compile('target="bleep1">([^<]+)(
)+([^<]+)
')
match = pattern.search(page)
if match:
album = match.group(3)
artist = match.group(1)
return album, artist
def bleep_save_cover_image(release, album, artist):
pretty_release = release[:-3]
filename = artist + " - " + album + ".jpg"
print("Downloading: " + filename)
url = "http://www.bleep.com/pack101/" + pretty_release + ".jpg"
response = urllib.urlopen(url)
f = open(filename, "wb")
f.write(response.read())
f.close()
def bleep_save_mp3(key, filename):
url = "http://listen.bleep.com/player.php?key=" + key
print("Downloading: " + filename)
response = urllib.urlopen(url)
f = open(filename, "wb")
f.write(response.read())
f.close()
def usage():
print("""
Usage: bleep_ripper.py [ [ ] ]
To rip mp3s from bleep.com, first find the track or release you want
on bleep. Then, hover over the Play link on one of the tracks. It will
look something like this:
http://www.bleep.com/player.php?track=PURE194DL_DM-01
In this case, PURE194DL is the release ID.
If you do not specify first_track or last_track, it rips all tracks.
If you specify only first_track, it rips from that track to the last track.
If you specify first_track and end_track, it rips tracks in the specified range.
(To rip a single track, specify the same track for first and last.)
""")
def main():
if len(sys.argv[1:]) == 1:
release = sys.argv[1]
first_track = 1
last_track = 99
elif len(sys.argv[1:]) == 2:
release = sys.argv[1]
first_track = int(sys.argv[2])
last_track = 99
elif len(sys.argv[1:]) == 3:
release = sys.argv[1]
first_track = int(sys.argv[2])
last_track = int(sys.argv[3])
else:
usage()
sys.exit(1)
release = release.upper()
if release[-3:] != "_DM":
release += "_DM"
album, artist = bleep_get_album_and_artist(release)
if not album or not artist:
print("Couldn't find release '" + release + "'.")
sys.exit(1)
bleep_save_cover_image(release, album, artist)
track = first_track
while track <= last_track:
title, key = bleep_get_title_and_key(release, track)
if not title or not key or not album or not artist:
break
title = title.replace("+", " ")
title = urllib.unquote(title)
filename = artist + " - " + album + " - " + ("%02d - " % (track))
filename += title + ".mp3"
bleep_save_mp3(key, filename)
track += 1
main()