Пишем простой менеджер загрузок на python

Пишем простой менеджер загрузок на python

@webware

t.me/webware

Приветствую всех, эта рубрика моих никому не нужных разработок. И сегодня мы с вами будем писать простой менеджер загрузок или сценарий для загрузки больше кол-ва файлов. Попробую объяснить для чего это. Представьте что у вас есть ссылки на загрузку музыки(их очень много), вы же не будете переходить по каждой ссылке и скачивать? Мы автоматизируем этот процесс. В файле будут ссылки на скачку, а сценарий скачает их за нас.


!Пишу на python3!

Идея статьи в том, чтобы улучшить знания python читателя(возможно он откроет для себя что-то новое).

Вот такие библиотеки я буду юзать для реализации того, что я хочу.

import requests
import random
import glob
import os
import shutil

Введем списки для работы:

site = []
files = []

Теперь реализуем чтение ссылок из файла:

handle = open('sites.txt') # Читаем файл
for x in handle: #Записуем содержимое файла в список
    site.append(x)
site = map(lambda s: s.strip(), site) # Удаляем из списка \n
site = list(site) # Конвертим в тип list(список)

Теперь напишем загрузку файлов:

for x in site:
    if x == '': # Если будет пустой элемент пропустить
        continue
    ran = random.randint(1,999999) # Рандомное число в переменную присваем

    handle = open(str(ran) + '.unknow',"wb") # Открываем на запись файл с именем(рандомное число) и форматом .unknown
    ufr = requests.get(x)
    handle.write(ufr.content) # Скачиваем и записуем содержимое файла
    handle.close()

Так как скачанные файлы имеют формат .unknown, возможно пользователь захочет изменить формат файлов, тк.к может он скачивал .mp3:

formats = input("На какой формат изменить скачанные файлы? => ")

Теперь в текущей директории мы будем искать файлы формата .unknown:

for file in glob.glob("*.unknow"):
    files.append(file)

Теперь будем менять .unknown на формат, который указал пользователь:

for x in files:
    ran = random.randint(1,999999)
    shutil.copy(x, str(ran) + '.' + formats)

Удаляем .unkown файлы:

for x in files:
    os.remove(x)

И будем печатать, что все успешно:

print ('done')

Весь код:

import requests
import random
import glob
import os
import shutil

site = []
files = []

handle = open('sites.txt')
for x in handle:
    site.append(x)
site = map(lambda s: s.strip(), site)
site = list(site)



for x in site:
    if x == '':
        continue
    ran = random.randint(1,999999)

    handle = open(str(ran) + '.unknow',"wb")
    ufr = requests.get(x)
    handle.write(ufr.content)
    handle.close()

formats = input("На какой формат изменить скачанные файлы? => ")

for file in glob.glob("*.unknow"):
    files.append(file)

for x in files:
    ran = random.randint(1,999999)
    shutil.copy(x, str(ran) + '.' + formats)

for x in files:
    os.remove(x)

print ('done')

В sites.txt должны быть прямые ссылки, вот пример:

https://api.soundcloud.com/tracks/450378462/stream?client_id=7UodytM4nnvd8JmPdgaMgcu2DYGdiZrT
https://api.soundcloud.com/tracks/450379818/stream?client_id=7UodytM4nnvd8JmPdgaMgcu2DYGdiZrT

Спасибо за внимание!

Источник codeby.net

Report Page