Если перед вами, однажды встанет задача как скачать массово файлы используя Python, при этом имея готовые ссылки на эти файлы, в текстовом файле готовым списком, в качестве одного из вариантов решения, этот пост
Не так давно, захотелось мне скачать из vk все фотки скопом, свои и из группы, на всякий случай. После поисков был найден скрипт vk_photos, и в контексте стоявшей задачи, скачать все фото профиля через скрипт vk_photos, я стал разбираться. Пройдя по шагам через, успешную авторизацию, более или менее успешного создания файла со списком файлов картинок, но на этапе скачивания я застопорился. Скрипт просто не качал фотографии. И судя по поиску решений, не только у меня. В итоге у меня есть файл с ссылками, который можно подчистить удалив id пользователя или оставить как есть, но нет возможности скачать. В конечном итоге, был создан простой однопоточный скрипт на Python, который открывает указанный в нем файл со списком ссылок, создает нужные папки и скачивает туда по очереди все фотографии.
import urllib.request import uuid import os import sys list_file = '200603209.txt' #Name of the link list file ext_file = '.jpg' #Extension of downloaded files filename, file_extension = os.path.splitext(list_file) try: if os.stat(list_file).st_size > 0: print("Processing...") if not os.path.isdir('dwlds'): os.makedirs('dwlds') print('Folder dwlds created') elif not os.path.isdir('dwlds/'+filename): os.makedirs('dwlds/'+filename) print('Folder '+filename+' created') with open(list_file) as file: while (line := file.readline().rstrip()): rndname = str(uuid.uuid4()) print("File from:" + line + " - \n Saved as: " + str(rndname)+ ext_file) urllib.request.urlretrieve(line, "dwlds/"+filename+"/"+str(rndname) + ext_file) else: print("Empty URL file ... exiting") sys.exit() except OSError: print("URL file missing ... exiting") sys.exit()
Из минусов:
— нет многопоточности, но это осознанный шаг, чтобы избежать блокировок и пр..
— нет автоматического определения расширения файлов, из-за разнообразия ссылок.
— при битой ссылке, скрипт прерывается, но если это не делать, проблем больше.
В идеале, имея заготовку, можно заточить скрипт под свои конкретные нужды, но это в идеале и полностью самостоятельно. В данном примере, перед публикацией, скрипт был сильно упрощен. Были отброшены разбивка по имени файла, очистка списка ссылок от id и пр. Осталось только создание папки dwnlds в которой создается папка одноименная имени файлу, папка, куда и скачиваются файлы.
В скрипте указываем имя файла со списком и расширение скачиваемых файлов. Далее они переименовываются случайным образом и помещаются в новую папку.
К этой записи нет комментарий. Ваш будет первым!