Форум сайта python.su
собственно сабж, а вот код:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import urllib2
import sys, re, os, argparse
from urllib import urlretrieve
parser = argparse.ArgumentParser(description='audioposk.com music downloader')
parser.add_argument("-artist", type=str, help='example: the-offspring or papa-roach, rammstein. \
Script download all tracks from first page')
args = parser.parse_args()
def progressBar(count, blockSize, totalSize):
percent = int(count*blockSize*100/totalSize)
sys.stdout.write("%2d%%" % percent)
sys.stdout.write("\b\b\b")
sys.stdout.flush()
def getTrack(fullPath, goodName):
sys.stdout.write(goodName + '...')
urlretrieve(fullPath, goodName, reporthook=progressBar)
print "\n"
def downloadTrack(artist):
tracks_url = 'http://www.audiopoisk.com/artist/'+artist+'/'
html = urllib2.urlopen(tracks_url).read()
regex = re.compile(r'/files/'+artist+r'/.+\.mp3')
tracks = set(regex.findall(html))
for track in tracks:
fullPath = 'http://www.audiopoisk.com' + track
goodName = urllib2.urlopen(fullPath).info().get('Content-Disposition')[22:-1]
goodName = goodName.replace(' (audiopoisk.com)', '')
getTrack(fullPath, goodName)
#urlretrieve(fullPath, goodName)
if __name__ == '__main__':
downloadTrack(args.artist)
Отредактировано funnyman (Июнь 30, 2013 19:44:54)
Офлайн
В функции getTrack вы используется urlretrive с reporthook арументом, а в функции downloadTrack вы используете urlretrive без аргумента retportooh, возможно, причина в этом.
Офлайн
Переделал код
def downloadTrack(artist):
tracks_url = 'http://www.audiopoisk.com/artist/'+artist+'/'
html = urllib2.urlopen(tracks_url).read()
regex = re.compile(r'/files/'+artist+r'/.+\.mp3')
tracks = set(regex.findall(html))
for track in tracks:
fullPath = 'http://www.audiopoisk.com' + track
goodName = urllib2.urlopen(fullPath).info().get('Content-Disposition')[22:-1]
goodName = goodName.replace(' (audiopoisk.com)', '')
#getTrack(fullPath, goodName)
print tracks
sys.stdout.write(goodName + '...')
urlretrieve(fullPath, goodName, reporthook=progressBar)
Отредактировано funnyman (Июль 1, 2013 10:38:17)
Офлайн