Что нового

Скачать файл по ссылке

kop9000

Новичок
Сообщения
6
Репутация
0
Мне нужно следующее

у меня в текстовом файле ok.txt есть ссылка. что мне нужно

1) читать первую строку из текстового файла ok.txt в этой папке C:\Users\TBOIR\Desktop\nav и записать данные первой строки в переменную
2) использовать эту самую переменную как ссылка для скачивания
3) сохранить скачанный файл main.mp3 в папку C:\Users\TBOIR\Desktop\nav

какой код для этого нужен
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Re: Сложный код скачивания

kop9000

Правила обязательного оформления тем в разделе "Стол заказов"

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Сложный код скачивания" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
 
Автор
K

kop9000

Новичок
Сообщения
6
Репутация
0
Re: Сложный код скачивания

извините. я даже незнаю как ещё назвать тему. пожалуйста переименуйте его сами
 

joiner

Модератор
Локальный модератор
Сообщения
3,401
Репутация
596
Re: Сложный код скачивания

OffTopic:
Название темы, например, "Скачать файл по ссылке"
В описании привести пример текстового файла, который содержит интернет ссылку.
 
Автор
K

kop9000

Новичок
Сообщения
6
Репутация
0
Вот формат запроса.
PHP:
// Документация: https://tech.yandex.ru/speechkit/cloud/doc/guide/concepts/tts-http-request-docpage
https://tts.voicetech.yandex.net/generate?text=Наш%20текст%20гот+ов&format=mp3&lang=ru-RU&speaker=zahar&emotion=good&key=<API‑ключ>
 

Tempo

Скриптер
Сообщения
603
Репутация
197
Если я вас правильно понял

Код:
Global $sTxtPath = @DesktopDir & "\nav\ok.txt", $sDownloadPath = @DesktopDir & "\nav\Main.mp3", $sURL

If Not FileExists($sTxtPath) Then Exit MsgBox(16, "Ошибка", "Файл не найден.")
$sURL = FileReadLine($sTxtPath)
If Not $sURL Or @error > 0 Then Exit MsgBox(16, "Ошибка", "Не удалось прочитать файл.")
InetGet($sURL, $sDownloadPath, 1 + 16)
If Not @error Then
	MsgBox(64, "Успех", "Загрузка завершена.")
Else
	MsgBox(16, "Ошибка", "Ошибка загрузки.")
EndIf
 
Автор
K

kop9000

Новичок
Сообщения
6
Репутация
0
да всё верно но почему-то выскакивает ошибка
 

Tempo

Скриптер
Сообщения
603
Репутация
197
kop9000 сказал(а):
Ошибка загрузки

Посмотрите что возвращает FileReadLine и проверьте верная ли ссылка

Код:
Global $sTxtPath = @DesktopDir & "\nav\ok.txt", $sDownloadPath = @DesktopDir & "\nav\Main.mp3", $sURL

If Not FileExists($sTxtPath) Then Exit MsgBox(16, "Ошибка", "Файл не найден.")
$sURL = FileReadLine($sTxtPath)
If Not $sURL Or @error > 0 Then Exit MsgBox(16, "Ошибка", "Не удалось прочитать файл.")
MsgBox(0, "", $sURL)
ClipPut($sURL)
InetGet($sURL, $sDownloadPath, 1 + 16)
If Not @error Then
	MsgBox(64, "Успех", "Загрузка завершена.")
Else
	MsgBox(16, "Ошибка", "Ошибка загрузки.")
EndIf
 

joiner

Модератор
Локальный модератор
Сообщения
3,401
Репутация
596
kop9000 [?]
Ошибка загрузки
ссылка на файл должна быть прямая, а не переход на страницу выбора или ожидания
типа такой
https://www.dropbox.com/s/ku4ly0rwtd9ua6e/песня.mp3?dl=1
или такой
https://www.сайт.com/путь/песня.mp3
еще момент, если требуется авторизация, то это опять же другой код
ошибка может быть и от маленькой скорости инета, или сайт вовремя не ответил
 
Автор
K

kop9000

Новичок
Сообщения
6
Репутация
0
Tempo сказал(а):
kop9000 сказал(а):
Ошибка загрузки

Посмотрите что возвращает FileReadLine и проверьте верная ли ссылка

Код:
Global $sTxtPath = @DesktopDir & "\nav\ok.txt", $sDownloadPath = @DesktopDir & "\nav\Main.mp3", $sURL

If Not FileExists($sTxtPath) Then Exit MsgBox(16, "Ошибка", "Файл не найден.")
$sURL = FileReadLine($sTxtPath)
If Not $sURL Or @error > 0 Then Exit MsgBox(16, "Ошибка", "Не удалось прочитать файл.")
MsgBox(0, "", $sURL)
ClipPut($sURL)
InetGet($sURL, $sDownloadPath, 1 + 16)
If Not @error Then
	MsgBox(64, "Успех", "Загрузка завершена.")
Else
	MsgBox(16, "Ошибка", "Ошибка загрузки.")
EndIf

да всё правильно ошибка так и появляется
 

Tempo

Скриптер
Сообщения
603
Репутация
197
kop9000 сказал(а):
да всё правильно ошибка так и появляется

А в принципе InetGet работает? Попробуйте с вашей ссылкой

Код:
InetGet("URL", @DesktopDir & "\Test.mp3")
If @error Then MsgBox(0, "", "Ошибка загрузки.")
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
kop9000
:Rulz:
Правила обязательного оформления тем в разделе "Стол заказов"

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Модератор.





Продолжаем игнорировать предупреждающие сигналы, далее будет :Ban:
 

Tyr

Новичок
Сообщения
43
Репутация
4
Код:
$hProxyURL = 'http.my.proxy.com:8080'
$hIEproxyPass = 0  
$hLoginURL = ''
$hPassURL = ''

If $CmdLine[0] = 0 Then
  ConsoleWrite('empty critical param')  
  Exit
EndIf

If $CmdLine[1] = 'help' Then
   ConsoleWrite('param 1 = file directory\name ' & @CRLF &  'param 2 = out directory ' & @CRLF &  'param 3 = login (if param 3 = np then no proxy)' & @CRLF &  'param 4 = password ' & @CRLF &  'param 5 = proxy:port ') 
   Exit
EndIf

If $CmdLine[0] < 2 Then
	$hdir = @ScriptDir & '\CRL\';'S:\CERT\'
  ConsoleWrite('param 2 - empty ... Use ' &  $hdir & @CRLF) 
Else 
 $hdir = $CmdLine[2] & '\'
EndIf

$hFileURL = FileOpen($CmdLine[1])
If $hFileURL = -1 Then
    MsgBox(4096, 'Ошибка', 'Что со списком URL?')
    Exit
EndIf

If $CmdLine[0] < 3 Then
   ConsoleWrite('param 3 Login - empty' & @CRLF &  'export proxy settings IE' & @CRLF) 
Else 
  $hLoginURL = $CmdLine[3]
  $hIEproxyPass = 2  
EndIf

If $CmdLine[0] < 4 Then
  ConsoleWrite('param 4 password - empty ' & @CRLF & $hPassURL)  
Else 
 $hPassURL = $CmdLine[4]
EndIf

If $CmdLine[0] < 5 Then
   ConsoleWrite('param 5 proxy - empty... Use: ' & $hProxyURL & @CRLF)  
   Else 
 $hProxyURL = $CmdLine[5]
EndIf

;ConsoleWrite($hIEproxyPass & @CRLF & $hProxyURL& @CRLF &  $hLoginURL & @CRLF &  $hPassURL)

if $CmdLine[0] > 2  Then
	if $CmdLine[3] = "np" Then
		ConsoleWrite("No proxy mode" & @CRLF) 
		Else 
	HttpSetProxy($hIEproxyPass,$hProxyURL, $hLoginURL, $hPassURL)
    EndIf
EndIf

While 1
	
   $sLine = FileReadLine($hFileURL)
    If @error = -1 Then ExitLoop
;MsgBox(4096, 'Успех', $sLine)
$LensLine = StringLen($sLine) ;измерили строку
$nsLine = $LensLine - StringInStr($sline,'/',0,-1) ;поиском слева (-1) нашли первое вхождение разделителя и вычли из длины ссылки
$fName = StringRight($sLine, $nsLine); обрезали до разделителя слева
;MsgBox(4096, 'Имя файла', $fName) ; & $nsLine &'-'& $LensLine
Local $hDownload = InetGet($sLine, $hdir & $fName, 1, 1) ;скачали
 ;ConsoleWrite($fName & @CRLF)  
Do
    Sleep(250)
Until InetGetInfo($hDownload, 2) ; Проверка выполнения полной загрузки.
Local $aData = InetGetInfo($hDownload) ; Возвращает всю информацию.
InetClose($hDownload) ; Закрывает дескриптор, чтобы освободить ресурсы.
ConsoleWrite($fName & ' size: ' &  $aData[1] & ' rezult: ' & $aData[3] & @CRLF )
        
WEnd
ConsoleWrite($fName & ' size: ' &  $aData[1] & ' rezult: ' & $aData[3] & @CRLF )
FileClose($hFileURL)


Мой полностью рабочий вариант с параметрами работающий через командную строку. Работает при кучах ограничений и стабильно качает файлы
Заложил 5 параметров:
1-й – «Путь\имяЛистаURL.Расширение» - обязательный . Если первым параметром передаётся help , то выводится описание параметров
2-ой – «ПутьВыгрузки» . При отсутствие данного параметра файлы загружаются в дирректорию скрипта в подкатолог CRL
3-й – Логин . Если вмето логина ввести np , то будет использован режим без proxy
4-й – Пароль
5-й – ПроксиСервер:Порт . Если не заполнен, то будет использован тот что зашит в коде

Пример команд
S:\CERT\CRLdownload.exe help
S:\CERT\CRLdownload.exe "S:\CERT\CRL\CRLlist.txt"
S:\CERT\CRLdownload.exe "S:\CERT\CRL\CRLlist.txt" "S:\CERT\CRL" np
S:\CERT\CRLdownload.exe "S:\CERT\CRL\CRLlist.txt" "S:\CERT\CRL" iamuser passvord01
S:\CERT\CRLdownload.exe "S:\CERT\CRL\CRLlist.txt" "S:\CERT\CRL" iamuser passvord01 http://vip-proxypac.comsa.com:8582/ProxyNTLM.pac
 
Верх