Нужно выкачать большую картинку с сайта, на сайте она хранится в виде плиток 256*256 пикс
Нашел под эту задачу готовый скрипт, он работает, но есть проблема, точнее 2
1 сайт периодически на запрос выдает ошибку и скрипт останавливается.
это самая главная проблема, так как приходится руками перезапускать
Traceback (most recent call last): File "C:\gigapandown\gigapanDownloader.py", line 95, in <module> h = urlopen(url) File "C:\Python27\lib\urllib.py", line 87, in urlopen return opener.open(url) File "C:\Python27\lib\urllib.py", line 213, in open return getattr(self, name)(url) File "C:\Python27\lib\urllib.py", line 350, in open_http h.endheaders(data) File "C:\Python27\lib\httplib.py", line 1038, in endheaders self._send_output(message_body) File "C:\Python27\lib\httplib.py", line 882, in _send_output self.send(msg) File "C:\Python27\lib\httplib.py", line 844, in send self.connect() File "C:\Python27\lib\httplib.py", line 821, in connect self.timeout, self.source_address) File "C:\Python27\lib\socket.py", line 557, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): IOError: [Errno socket error] [Errno 11001] getaddrinfo failed
2 хорошо бы еще распараллелить загрузку, а то плитки грузятся в 1 поток крайне медленно (
но это уже фантазии, и решить хотя бы 1ую проблему, уже было бы замечательно
вот сам цикл загрузки плиток
или лучше весь скрипт выложить?
#loop around to get every tile for j in xrange(ht): for i in xrange(wt): filename = "%04d-%04d.jpg"%(j,i) pathfilename = str(photo_id)+"/"+filename if not os.path.exists(pathfilename) : url = "%s/get_ge_tile/%d/%d/%d/%d"%(base,photo_id, level,j,i) progress = (j)*wt+i+1 print '('+str(progress)+'/'+str(wt*ht)+') Downloading '+str(url)+' as '+str(filename) h = urlopen(url) if 200 == h.code : fout = open(pathfilename,"wb") fout.write(h.read()) fout.close() else: print '('+str(progress)+'/'+str(wt*ht)+') Downloading error '+str(url)+' http code '+str(h.code) ++errors
главная беда в том, что питон я не знаю, в свое время в универе все писал на делфи, но и было это давненько