Что нового

[Сеть, интернет] Получить имя файла из ссылки

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Нужно получить файл с тем именем если бы я просто в браузере на ссылку нажал.
Код:
$2 = BinaryToString(InetRead("http://retre.org/?c=229&s=01&e=01&u=3381165&h=a0e88e979188a91d97d8758490750880"))
$start = StringInStr($2,'<a href="')
$end = StringInStr($2,'"',-1,2,$start)
$link = StringMid($2,$start,$end-$start)
$link = StringReplace($link,'<a href="',"")
$4 = BinaryToString(InetRead($link))
ConsoleWrite(@CRLF&$4)
 
Автор
G

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Пару дней Целый день залипал в гугле и справке, допер таки как передать куки и авторизоваться на сайте, иначе для каждой серии нужно получать ссылку с retre.org что не есть гуд (сериалов то огого ;D).
Получилось следующее:
Код:
#include <Array.au3>
#include <File.au3>
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "http://www.lostfilm.tv/nrdr.php?c=191&s=02&e=04") ; c=191 № сериала, s=02 № сезона, e=04 № эпизода(эта ссылка перенаправит на retre.org(пример ссылки в 1-ом посте)
$sCookies=FileRead("lfc.txt") ; файл с печеньками
$oHTTP.SetRequestHeader("Cookie",$sCookies)
$oHTTP.Send()
$HTMLSource = $oHTTP.Responsetext
$ArrUrls = StringRegExp($HTMLSource, 'href.?="(http://.*?)"', 3) ; ищем все ссылки
$DupDel = _ArrayUnique($ArrUrls) ; удаляем дубликаты, потому что получаем по 2 ссылки на 1 торрент
$fw=_FileWriteFromArray("txt.txt",$DupDel,1) ; сохраняем ссылки в файл
FileClose($fw)
Но все же непонятно, как скачать файлы с исходными именами.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
gloss [?]
с исходными именами
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
;...
$oHTTP.Send()
ConsoleWrite($oHTTP.getResponseHeader("Content-Disposition") & @CR)  ; смотреть тут - filename
;...
 
Автор
G

gloss

Ленивое кодило
Сообщения
155
Репутация
5
Вот такой получился замороченный код :smile:
Спасибо Garrett за подсказку!
Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "http://www.lostfilm.tv/nrdr.php?c=191&s=02&e=04")
$sCookies=FileRead("lfc.txt")
$oHTTP.SetRequestHeader("Cookie",$sCookies)
$oHTTP.Send()
$oHTTP.WaitForResponse
$HTMLSource = $oHTTP.Responsetext
$start = StringInStr($HTMLSource,'<a href="')
$end = StringInStr($HTMLSource,'"',-1,2,$start)
$link = StringMid($HTMLSource,$start,$end-$start)
$link = StringReplace($link,'<a href="',"")
$oHTTP.Open("GET",$link)
$oHTTP.Send()
$oHTTP.WaitForResponse
$rh=$oHTTP.GetResponseHeader("Content-Disposition")
$start=StringInStr($rh,'filename="')
$end=StringInStr($rh,'"',-1,2,$start)
$StringMid=StringMid($rh,$start,$end-$start)
$StringMid = StringReplace($StringMid,'filename="',"")
$4 = BinaryToString(InetRead($link))
$fo=FileOpen($StringMid,2)
$fw=FileWrite($fo,$4)
FileClose($fw)
 
Верх