ho originariamente pubblicato questo come parte della questione ... (poster senza newbie StackOverflow fa mai questo;)
dal c'era una clamorosa mancanza di risposte. Qui si va:
sono stato in grado di venire con il seguente script python di farlo, ma ogni input sarebbe apprezzato =) (Questo è il mio primo tentativo di codice Python quindi ci potrebbe essere un modo migliore)
import os
import urllib2
import urllib
cmServerURL = 'http://<serverURL>:<port>/<path-to-cache.manifest>'
# download file code taken from stackoverflow
# http://stackoverflow.com/questions/22676/how-do-i-download-a-file-over-http-using-python
def loadURL(url, dirToSave):
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(dirToSave, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100./file_size)
status = status + chr(8)*(len(status)+1)
print status,
f.close()
# download the cache.manifest file
# since this request doesn't include the Conent-Length header we will use a different api =P
urllib.urlretrieve (cmServerURL+ 'cache.manifest', './cache.manifest')
# open the cache.manifest and go through line-by-line checking for the existance of files
f = open('cache.manifest', 'r')
for line in f:
filepath = line.split('/')
if len(filepath) > 1:
fileName = line.strip()
# if the file doesn't exist, lets download it
if not os.path.exists(fileName):
print 'NOT FOUND: ' + line
dirName = os.path.dirname(fileName)
print 'checking dirctory: ' + dirName
if not os.path.exists(dirName):
os.makedirs(dirName)
else:
print 'directory exists'
print 'downloading file: ' + cmServerURL + line,
loadURL (cmServerURL+fileName, fileName)
C'è una mancanza di "questionario" nella tua domanda, ma il codice sembra funzionare in Python, anche se alcune parti potrebbero essere semplificate. Inoltre ci sono librerie chiamate urlgrabber e richieste che potrebbero facilitare il processo di salvataggio del file. –
Grazie per il feedback Mikko controllerò le librerie che hai menzionato per ulteriori sviluppi. Quindi, in pratica, non si conosce una libreria per scaricare l'elenco di risorse all'interno di un file cache.manifest. Sfortunatamente, la parola chiave che più conta in questo post è "cache.manifest" che evidentemente non è stata ancora aggiunta come parola chiave. Non avendo un punteggio di 1500 non riesco ad aggiungerlo. >.
rockhowse
Poiché l'analisi e il download del manifest della cache sono solo 50 righe di codice Python, non vedo perché qualcuno dovrebbe creare una libreria di nicchia solo per questo scopo :) –