Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Скрипт для скачивания по списку. (python + wget) [RSS Feed]

#1 Ноя. 2, 2008 17:32:45

DJ_Baldey
От:
Зарегистрирован: 2008-10-27
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт для скачивания по списку. (python + wget)

решил вот тут задачку одну, может кому пригодится:

#!/usr/bin/python
# -*- coding:utf-8 -*-

###########################################################
“”“ Скрипт для скачивания по списку
с ресурсов Disland и Интернета.
Имеет автоматическую очистку ссылок
от текстового ”мусора“.
Не поддерживает:
наличие 2-х ссылок в одной строке.
наличие в ссылке пробела
(воспринимает как конец ссылки).
ссылки, отделенные от прочего текста
не пробелом или концом строки,
а каким-либо другим символом.
Требования: python2.4 или выше, wget

автор: Крамаренко Григорий aka DJ_Baldey
special for users www.dsvload.net and www.python.su
”“”
###########################################################

import os
import sys
import linecache

global downDIR,linklist,WGET,mask1,mask2,numb1,numb2,suff1,suff2

###########################################################
# настраиваемые пользователем данные: #


# папка назначения:

downDIR=“/home/DJ_Baldey/Disland/”
# список файлов:
linklist=“/home/DJ_Baldey/.bin/test.list”
“”“ ключи для wget
-c возобновить загрузку частично загруженного файла.
–tries=ЧИСЛО установить ЧИСЛО повторных попыток (0 без ограничения).
для просмотра остальных ключей введите в консоли wget –help
”“”

keys=“-c –tries=0”
“”" Для ссылок вида (1) http://dsv.data.cod.ru/2071542852
и (2) http://dsv2.data.cod.ru/32514456644:
mask1(2) - маска определения ссылки
numb1(2) - количество символов в ссылке
suff1(2) - суффикс (имитация нажатия кнопки)
“”"

mask1="http://dsv.data.cod.ru/"
numb1=33
suff1=“?submit=1”
mask2="http://dsv2.data.cod.ru/"
numb2=35
suff2=“?submit=1”

###########################################################
# далее логика скрипта #

WGET=“wget ” + keys + “ –directory-prefix=” + downDIR + “ ”
noLink=False
ListFull=True

if os.path.getsize(linklist) < 1:
ListFull=False

def readfile():
global fileBuff
fileBuff = # очищаем список
f = open(linklist, “r”, 1)
for line in f:
if len(line) > 1:
fileBuff.append(line) # добавляем в список строку из файла
f.close()

def writefile():
Blank= # объявляем пустой список
f = open(linklist, “w+b”)
f.writelines(Blank) # очищаем файл
f.close()
f = open(linklist, “a+b”)
for line in fileBuff:
if len(line) > 1:
f.write(line) # добавляем в файл из переменной построчно
f.close()

def downlistfile(url):
f = open(linklist + “.downloads”, “a+b”)
print>>f, url # добавляем закаченные ссылки в файл
f.close()

def readlink():
global FILE, URL, noLink
FILE = “”
URL = “”
linecache.clearcache() # очищаем кэш
line1 = linecache.getline(linklist, 1) # первая строка в файле linklist
line1 = line1.strip() # без пробелов
# проверяем на присутствие ссылки

noLink = False
if line1.count(“ftp://”) < 1 and line1.count("http://") < 1:
noLink = True
print “строка в списке не содержит ссылки”
else:
# очищаем начало строки вплоть до начала ссылки
if line1.count(“ftp://”) < 1:
line1 = line1[line1.find("http://"):]
else:
line1 = line1[line1.find(“ftp://”):]
# очищаем конец строки (ссылка не должна содержать пробелы)
if line1.count(“ ”):
line1 = line1[:line1.find(“ ”)]
# вычисляем ссылки, выбираемые по маске
if line1.count(mask1) > 0:
line1 = line1 + suff1
elif line1.count(mask2) > 0:
line1 = line1 + suff2
else:
# имя скачиваемого файла (включая путь)
FILE = downDIR + line1[line1.rfind(“/”) + 1:]
URL = line1

def download(url):
os.popen(WGET + url,“w”)

while ListFull:
if os.path.getsize(linklist) < 1:
ListFull = False
break
readlink()
if noLink:
pass
else:
print “ссылка:”, URL
print “будет сохранен как:”, FILE
download(URL)
downlistfile(URL)
readfile()
fileBuff = fileBuff
writefile()



Офлайн

#2 Ноя. 2, 2008 19:58:35

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт для скачивания по списку. (python + wget)

Ы!
Но яб взял pycurl =)



Офлайн

#3 Ноя. 26, 2008 06:43:32

Nird
От:
Зарегистрирован: 2008-11-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт для скачивания по списку. (python + wget)

Смысл сего творения? у wget есть ключик -i <имя файла со списком ссылок>



Отредактировано (Ноя. 26, 2008 06:43:56)

Офлайн

#4 Дек. 2, 2008 16:17:38

DJ_Baldey
От:
Зарегистрирован: 2008-10-27
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт для скачивания по списку. (python + wget)

смысл в том, чтобы уже в процессе закачки иметь возможность добавлять ссылки в список. а это актуально для пользователей обменников типа data.cod.ru.



Офлайн

#5 Дек. 6, 2008 16:58:51

Nird
От:
Зарегистрирован: 2008-11-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт для скачивания по списку. (python + wget)

DJ_Baldey
смысл в том, чтобы уже в процессе закачки иметь возможность добавлять ссылки в список. а это актуально для пользователей обменников типа data.cod.ru.
ммм не пользовался этим обменником. Сейчас зашел посмотрел, обычные ссылки, создаешь файл urllist кидаешь туда хоть 1000 ссылок wget -c -i urllist <enter> оно качает, пока качает открываешь этот же файл и еще хоть тыщу ссылок дописывай. Я чего-то не понимаю?



Офлайн

  • Начало
  • » Network
  • » Скрипт для скачивания по списку. (python + wget)[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version