Ahoj,
zkusil bych si říct přímo o binární data:
req = requests.get(file_url, allow_redirects=True, stream=True,
headers={"Accept": "application/vnd.github.v3.raw"})
Viz https://developer.github.com/v3/git/blobs/#custom-media-types
S requests ani GITem ale nedělám.
Nicméně tohle mi jsem v rychlosti otestoval a fungovalo mi
Zdraví
Michal
Dne 08.05.2018 v 11:01 ZdPo Ster napsal(a):
Ahojte,
viem stiahnut velky subor z z githubu takto:
file_content = requests.get(file_url, allow_redirects=True)
file_data = base64.b64decode(file_content.content)
open(output, 'wb').write(file_data)
Kedze to dlho trva, chcem tam implementovat progressbar a tu zacinaju
moje problemy ;-). Nasiel som ze by malo fungovat nieco taketo:
file_size = 19335882 # toto viem vopred
req = requests.get(file_url, allow_redirects=True, stream=True)
block_size = 1024
num_bars = file_size / (block_size*2)
bar = Bar(f'Downloading {filename}', max=num_bars,
suffix='%(percent).1f%% - %(eta)ds')
bytes_transferred = 0
with open(output, "wb") as file:
for chunk in req.iter_content(chunk_size=block_size):
bytes_transferred+= len(chunk)
if chunk:
file.write(chunk)
bar.next()
bar.finish()
print(bytes_transferred)
Moje problem: Velkost prenesenych dat nesedi s velkostou suboru
(26640760 vs 19335882 t.j. progress bar nezobrazuje korektny progress)
z dovodu, ze github namiesto suboru posiela subor zabaleny v json a
encodovany v base64.
Workaround by mohol byt, ze ak viem velkost finalneho suboru, pokusim
sa vypocitat velkost json filu (req.headers.get('Content-Length') v
tomto pripade na githube nefunguje :-( ). Z neho by som po stiahnuti
do pamate extrahoval content, dekodoval ho a az potom ulozil...
Otazkou je ci nie je inteligentnejsi sposob ako to urobit...
PS: moja testovacia url je:
https://api.github.com/repos/tesseract-ocr/tessdata/git/blobs/b01dab8de8174496a0012bf85296943b3e7c81d7
Zd.
_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python
Visit: http://www.py.cz
_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python
Visit: http://www.py.cz