скрипт для скачивания
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: скрипт для скачивания
кем "им"?
походу я, как и парадокс, не вижу чего-то, что видите вы...
походу я, как и парадокс, не вижу чего-то, что видите вы...
Убей их всех! Бог потом рассортирует...
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- проходил мимо
Re: скрипт для скачивания
хм, нельзя быть таким невнимательным, в пред. моем сообщении было:lissyara писал(а):кем "им"?
походу я, как и парадокс, не вижу чего-то, что видите вы...
Гость писал(а):Код: Выделить всё
sleep=100 get-pre-url() { curl $1 -s | sed -n 's/.*<form[[:space:]]*id="ff"[[:space:]]*action="\(.*\)"[[:space:]]*method="post">.*/\1/p' | xargs -I% curl %#dlt -so- -d dl.start=Free } get-url() { while get-pre-url $1 | grep -qi "try[[:space:]]*again"; do sleep 60 done get-pre-url $1 | sed -n 's/.*form[[:space:]]*name="dlf"[[:space:]]*action="\([^\"]*\)".*/\1/p' } download-url() { echo Sleeping for $sleep seconds before downloading ${1:?Error} sleep $sleep curl $1 -O } multi-dl() { for arg; { download-url $(get-url $arg) } } multi-dl $@
-
- проходил мимо
Re: скрипт для скачивания
oops, здесь должно быть "\([^"]*\)", а не "\(.*\)", иначе .* может скушать то, что находится за кавычкой.Гость писал(а):Код: Выделить всё
*action="\(.*\)"[[:space:]]*
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
>Гость
ты так много всего комментировал
что я так понял то не скрипт а какое то исправление чего то
ты так много всего комментировал
что я так понял то не скрипт а какое то исправление чего то
-
- ст. сержант
- Сообщения: 344
- Зарегистрирован: 2008-09-17 2:23:21
Re: скрипт для скачивания
Гость, выложи рабочий вариант, вместе с /bin/sh, не ленись.
И перепиши все на wget, докачка должна работать.
Ну а по поводу
И перепиши все на wget, докачка должна работать.
Ну а по поводу
хули тут можно сказать? Рассказать где пирожки лежат, или сам знаешь? ))у мя качает и без этого, зачем временные файлы?, поиск по curl(1) не осилил?, У меня и без `-d mirror=' работает., это можно все сделать одним sed(1)'ом
-
- проходил мимо
Re: скрипт для скачивания
ну, если тебе нужен только заголовок, то вот: http://wiki.lissyara.su/wiki/Rapidfetch.shMAK писал(а):Гость, выложи рабочий вариант, вместе с /bin/sh, не ленись.
Код: Выделить всё
(~). rapidfetch.sh
usage: rapidfetch.sh [-s sec] url [url...]
(~). rapidfetch.sh http://rapidshare.com/files/147657184/Hot_Noizes_-_People_-_Machine
s__2008__CDR.rar.html
10 minutes left
9 minutes left
8 minutes left
7 minutes left
6 minutes left
5 minutes left
4 minutes left
3 minutes left
2 minutes left
1 minutes left
Sleeping for 100 seconds before downloading:
http://rs90cg2.rapidshare.com/files/147657184/2720783/Hot_Noizes_-_People_-_Machines__2008__CDR.rar
Hot_Noizes_-_People_-_Machines__2008__CDR.rar 100% of 67 MB 212 kBps 00m00s
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
я так чувсвую что скоро кто то доусовершенствует так что и количество секунд ожидания тоже будет парситься)
чисто теоретичеси оно как то зависит от размера файла
чисто теоретичеси оно как то зависит от размера файла
-
- проходил мимо
Re: скрипт для скачивания
пока проблема в том как приделать буффер. Вот эти функции как-то странно себя ведут внутри get-direct-url():paradox писал(а):я так чувсвую что скоро кто то доусовершенствует так что и количество секунд ожидания тоже будет парситься)
чисто теоретичеси оно как то зависит от размера файла
Код: Выделить всё
pipe-to-vector() {
# pipe-to-vector vector
local IFS=''
local i
while read line; do
eval $1_$((i+=1))=\$line
done
}
vector-to-pipe() {
# vector-to-pipe vector
local IFS=''
local i
while eval [ \$$1_$((i+=1)) ]; do
eval echo \$$1_$i
done
}
Код: Выделить всё
try-url() {
get-status $1 |
pipe-to-vector buf
if vector-to-pipe buf | grep -qi "try[[:space:]]*again"
then
vector-to-pipe buf |
sed -n 's|.*in[[:space:]]*about[[:space:]]\(.*\)\.</p>|\1 left|p' >&2
sleep 60
try-url $1
else
sleep=$(vector-to-pipe buf | sed -n 's|.*var[[:space:]]*c=\([^[:space:]]*\);.*|\1|p')
vector-to-pipe buf
return
fi
}
- MASiK
- лейтенант
- Сообщения: 625
- Зарегистрирован: 2008-09-19 20:09:41
- Откуда: Оттуда
- Контактная информация:
Re: скрипт для скачивания
во чё нарыл
http://www.markontech.com/2006/12/22/do ... -and-bash/
http://forums.fedoraforum.org/showthread.php?t=162611
http://www.reviewingit.com/index.php/content/view/47/2/ (не понял но вроде что-то по теме)
http://m0ds-ubuntu.blogspot.com/2008/01 ... r-for.html (в гет для премиумов)
Ну вот чем мог тем помог
http://www.markontech.com/2006/12/22/do ... -and-bash/
http://forums.fedoraforum.org/showthread.php?t=162611
http://www.reviewingit.com/index.php/content/view/47/2/ (не понял но вроде что-то по теме)
http://m0ds-ubuntu.blogspot.com/2008/01 ... r-for.html (в гет для премиумов)
Ну вот чем мог тем помог
Самурай
- Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: скрипт для скачивания
покочану и покочерыжке. © lissyara
-
- проходил мимо
Re: скрипт для скачивания
И правда! Чего-то мне ни один из них не понравился. Наваял свой, ради пробы пистона: rfetch.pylissyara писал(а):питон - ф топку.
надо бы его опробовать на винде с wget, но че-то под рукой нет виртуалок с ней
- Alex Keda
- стреляли...
- Сообщения: 35465
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: скрипт для скачивания
мне кажется, или на шелле меньше размером? ))
Убей их всех! Бог потом рассортирует...
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
вообщем все сведеться скоро к тому что я на C/C++ все это дело напишу...))
-
- проходил мимо
Re: скрипт для скачивания
да: таймер с отсчетом в реальном времени, пара исключений (file not found и тп) и возможность отослать в фон по ^Z. А main() и usage() только места много занимают, но пользы никакой.lissyara писал(а):мне кажется, или на шелле меньше размером? ))
Надо попробовать прикрутить поддержку rapidshare.DE + tesseract для распознавания капчи. Но перед этим tesseract надо натренировать на rapidshare'овские капчи, или epic fail неизбежен.
Или может быть есть способ скачать DE в обход капчи?
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
попробовал на 2.3 питоне
ничего не пашет
или ему токо 3 0 подавай?
ничего не пашет
или ему токо 3 0 подавай?
-
- проходил мимо
Re: скрипт для скачивания
было б интересно глянуть на реализацию на lisp'е или elisp'еparadox писал(а):вообщем все сведеться скоро к тому что я на C/C++ все это дело напишу...))
да, писалось с расчетом на 3.0.paradox писал(а):или ему токо 3 0 подавай?
3.X и 2.X не совместимы.
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
лисс ставь на сервак 3питон)))))
-
- проходил мимо
Re: скрипт для скачивания
Код: Выделить всё
#! /usr/bin/env python-shared2.5
Код: Выделить всё
File "./rfetch.py", line 35
print('\r' + line % i, end = '')
^
SyntaxError: invalid syntax
-
- проходил мимо
Re: скрипт для скачивания
вот для 2.X, но я не проверялГость писал(а):Код: Выделить всё
File "./rfetch.py", line 35 print('\r' + line % i, end = '') ^ SyntaxError: invalid syntax
Код: Выделить всё
--- rfetch3.0.py
+++ rfetch2.6.py
@@ -1,9 +1,9 @@
-#! /usr/bin/env python-shared3.0
+#! /usr/bin/env python-shared2.6
# usage: rfetch.py url [url...]
import sys, os
import time, re
-import urllib.request
+import urllib2
def fetch(url):
url, counter = suck(url)
@@ -32,7 +32,8 @@
# do not print anything unless we are in foreground
# and connected to a controlling terminal
if os.getpgrp() == os.tcgetpgrp(0):
- print('\r' + line % i, end='')
+ print('\r' + line % i),
+ sys.stdout.flush()
time.sleep(update)
def suck(url):
@@ -41,14 +42,14 @@
if url.find('rapidshare.de') >= 0:
raise NotImplementedError('rapidshare.DE is unsupported')
elif data.lower().find('file could not be found') >= 0:
- raise urllib.error.URLError('file not found')
+ raise urllib2.URLError('file not found')
elif data.lower().find('contain illegal content') >= 0:
- raise urllib.error.URLError('file has been blocked')
+ raise urllib2.URLError('file has been blocked')
url = re.search('id="ff"\s*action="([^"]*)"', data).group(1)
while True:
data = url2str(url, 'dl.start=Free')
if data.lower().find('already downloading a file') >= 0:
- raise urllib.error.URLError('already downloading one file')
+ raise urllib2.URLError('already downloading one file')
elif data.lower().find('reached the download limit') >= 0:
# grab ticket and wait
wait = int(re.search('about\s*(\d*)\s*minutes', data).group(1))
@@ -61,7 +62,7 @@
def url2str(url, data=None):
'''fetch url and return its content as a string'''
- f = urllib.request.urlopen(url, data)
+ f = urllib2.urlopen(url, data)
data = f.read().decode("utf-8", "replace")
return(data)
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
Код: Выделить всё
File "./rfetch.py", line 38
sys.stdout.flush()
^
IndentationError: unexpected indent
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
убрал флуш
все вроде работает
стянуло
не красиво без флуша
но жить можно)
зы
неплохо было бы что бы линк который вытягивался показывало на екран
обьясняю почему
есть ситуации когда закачку нужно прервать
но сессия на рапиде еще живет какое то время
и на этот момент еще можно сделать
все вроде работает
стянуло
не красиво без флуша
но жить можно)
зы
неплохо было бы что бы линк который вытягивался показывало на екран
обьясняю почему
есть ситуации когда закачку нужно прервать
но сессия на рапиде еще живет какое то время
и на этот момент еще можно сделать
Код: Выделить всё
wget -c
-
- проходил мимо
Re: скрипт для скачивания
а применял патч командой patch(1)? Пистон очень притязателен к пробелам/табам перед выражениями, т.к. они является способом их группировки в блоки.paradox писал(а):Гость писал(а):Код: Выделить всё
File "./rfetch.py", line 38 sys.stdout.flush() ^ IndentationError: unexpected indent
Код: Выделить всё
(~). patch rfetch.py patch-rfetch.py
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- rfetch3.0.py
|+++ rfetch2.6.py
--------------------------
Patching file rfetch.py using Plan A...
Hunk #1 succeeded at 1.
Hunk #2 succeeded at 32.
Hunk #3 succeeded at 42.
Hunk #4 succeeded at 62.
done
(~). ./rfetch.py http://rapidshare.com/files/147657184/Hot_Noizes_-_People_-_Machines__2008__CDR.rar.html
sleeping... 41 seconds remain^C
такой вариант сойдет?paradox писал(а):неплохо было бы что бы линк который вытягивался показывало на екран
обьясняю почему
есть ситуации когда закачку нужно прервать
но сессия на рапиде еще живет какое то время
и на этот момент еще можно сделать
Код: Выделить всё
--- rfetch2.6.py
+++ rfetch2.6.py
@@ -8,6 +8,8 @@
def fetch(url):
url, counter = suck(url)
status(counter, 1, 'sleeping... %3d seconds remain')
+ if os.getpgrp() == os.tcgetpgrp(0):
+ print('\r' + url)
os.spawnlp(os.P_WAIT, 'fetch', sys.argv[0], url)
def main():
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: скрипт для скачивания
я ручками патчила применял патч командой patch(1)? Пистон очень притязателен к пробелам/табам перед выражениями, т.к. они является способом их группировки в блоки
там кстати 2.5 питон а не 2.6
пойдеттакой вариант сойдет?