Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Скрипты для скачивания файлов
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Aug 14, 2017 04:12    Post subject: Reply with quote

А есть ли скрипт (или кто-то сможет сваять), который скачивает файлы по ссылкам из текстовых файлов, причем сохраняет их в определенные папки, чьи названия должны браться из текстовых файлов, где записаны ссылки? Пример: есть файлы "example1.txt" и "example2.txt", в первом файле записаны 3 ссылки, в другом - 11 ссылки. Хотелось бы чтобы можно было выделить эти текстовые файлы, нажать на кнопку скрипта и на другом панеле создаются папки "example1" и "example2" и по соответствующим ссылкам в первом папке скачиваются 3 файлов, а на другом - 11 файлов. Для меня это было бы очень удобно. Для информации: у меня есть много текстовых файлов с списками ссылок, по которым хотелось бы организовать удобное скачивания файлов в соответствующие папки. Ссылки все записаны построчно, кроме ссылок больше ничего нет, но могут быть пустые строки в конце файлов. Кодировка таких файлов - ANSI.
К слову, если кто знает такую программу, которая делает то же самое, то можно не писать скрипт, а просто подсказать её название, главное чтобы там можно было выбирать сразу несколько текстовых файлов и все файлы по ссылкам должны скачиваться в папки, соответствующие этим текстовым файлам.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 04:50    Post subject: Reply with quote

BeardFury78
Вряд ли есть программа, задача специфическая. Скачиваемые Файлы бинарные, или есть текстовые?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Aug 14, 2017 04:57    Post subject: Reply with quote

Flasher
Это изображения, обычно jpg,png,gif. Каких-то других файлов нет, в том числе и текстовые.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 05:15    Post subject: Reply with quote

BeardFury78
Закодированных ссылок типа http%3A%2F%2Fsite.com%2F нет?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Aug 14, 2017 05:21    Post subject: Reply with quote

Flasher
Нет. Могут встречаться ссылки с https, это ничего?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 05:30    Post subject: Reply with quote

BeardFury78
Ничего. Заготовка есть. Завтра скину.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Aug 14, 2017 05:31    Post subject: Reply with quote

Flasher
Ок. Потестировать смогу только вечером.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Mon Aug 14, 2017 09:49    Post subject: Reply with quote

Вот в этой программе есть такая возможность.

http://wincmd.ru/plugring/clipwork.html
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 13:26    Post subject: Reply with quote

Zmy
Тяжеловатая программка. Почитал help (DownloadFromFile) и не увидел там такой возможности.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Mon Aug 14, 2017 14:31    Post subject: Reply with quote

Как нету?
Вот, создаём файл с таким содержимым.

http://progman13.wincmd.ru/downloads/wdx_TrID_Identifier_1.0.zip ||C:\Temp\111\
http://progman13.wincmd.ru/downloads/wlx_CSVView_0.9.2_Beta.zip ||C:\Temp\222\
http://wincmd.ru/files/1236825/wdx_firstByte-0.3.zip ||C:\Temp\333\

И запускаем команду

C:\Temp\ClipWork.exe DownloadFromFile 5 C:\List.txt
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 14:38    Post subject: Reply with quote

Zmy
Так это и не запрашивалось.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Mon Aug 14, 2017 14:44    Post subject: Reply with quote

Точно, извиняюсь. Невнимательно прочитал вопрос.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Aug 14, 2017 16:05    Post subject: Reply with quote

BeardFury78
Code:
'•••••••••••••••••••••••••••• VBS •••••••••••••••••••••••••••
' Скачивание бинарных файлов по ссылкам выбранных txt-списков
' в создаваемые при необходимости папки c их базовыми имёнами

' Параметры: %WL "<путь получателя>"
' Ключ на протоколирование ошибок: /l
'••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••

Option Explicit : Dim List, Path, Log, Title, FSO, Dic, Reg, _
F, HTTP, URL, FN, Name, Ext, FType, File, All, Fold, FLog, Cnt

With WSH.Arguments
  If .Count Then List = .Item(0) : Path = .Item(1) Else WSH.Quit
  Log = .Named.Exists("l")
End With : Title = " Скачивание файлов"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dic = CreateObject("Scripting.Dictionary")
Set Reg = New RegExp : Reg.IgnoreCase = True
Reg.Global = True : Reg.MultiLine = True
Reg.Pattern = "^\s*(https?://[^\r\n\s]+)"
Set HTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
HTTP.Option(4) = 13056 : HTTP.Option(6) = True
HTTP.Option(12) = True : HTTP.Option(14) = 5

Set List = FSO.OpenTextFile(List,,,-1)
Do : File = List.ReadLine
  If StrComp(FSO.GetExtensionName(File), "txt", 1) = 0 Then
    If Len(File) > 259 Then File = "\\?\" & File
    If FSO.GetFile(File).Size Then
      With FSO.OpenTextFile(File) All = .ReadAll : .Close :End With
      Fold = FSO.BuildPath(Path, FSO.GetBaseName(File))
      If Len(Fold) > 259 Then Fold = "\\?\" & Fold
      If Reg.Test(All) And Not FSO.FolderExists(Fold) Then FSO.CreateFolder Fold
      If Log Then FLog = Left(File, InStrRev(File, ".") - 1) & " Errors.txt" :_
      Dim LogFile : Set LogFile = FSO.CreateTextFile(FLog, 1)
      For Each URL in Reg.Execute(All)
        URL = URL.SubMatches(0) : FN = ""
        If Not Dic.Exists(URL) Then
          HTTP.Open "GET", URL, False
          HTTP.SetRequestHeader "Pragma", "no-cache" : Dic.Add URL, ""
          HTTP.SetRequestHeader "Cache-Control", "no-cache" : HTTP.Send
          HTTP.WaitForResponse 5, True : URL = HTTP.Option(1)
          FType = HTTP.GetResponseHeader("Content-Type")
          If HTTP.Status = 200 And InStr(FType, "text/html") = 0 Then
            On Error Resume Next
            Name = HTTP.GetResponseHeader("Content-Disposition")
            If Err.Number = 0 Then FN = Split(Name & """", """")(1)
            On Error GoTo 0 : If FN = "" Then FN = FSO.GetFileName(URL) :_
            FN = Mid(FN, InStrRev(FN, "?") + 1)
            Ext = FSO.GetExtensionName(FN)
            If Ext = "" Or IsNumeric(Ext) Then
              Ext = Mid(FType, InStrRev(FType, "/") + 1)
              If Len(Ext) Then FN = FN & "." & Ext
            End If : F = FSO.BuildPath(Fold, FN)
            If Len(F) > 259 And Left(F, 1) <> "\" Then F = "\\?\" & F
            If Not FSO.FileExists(F) Then
              With CreateObject("SAPI.SpFileStream")
                .Format.Type = 1 : .Open F, 3, True
                .Write HTTP.ResponseBody : .Close
              End With : Cnt = Cnt + 1
            End If
          ElseIf Log Then LogFile.WriteLine URL
          End If : HTTP.Abort
        End If
      Next : If Log Then LogFile.Close :_
      If FSO.GetFile(FLog).Size = 0 Then FSO.DeleteFile FLog
    End If
  End If
Loop Until List.AtEndOfStream : List.Close : If Cnt Then _
MsgBox "Число скачанных файлов: " & Cnt, 4160, Title Else _
MsgBox "Нет подходящих объектов!", 4144, Title

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Aug 30, 2017 06:17; edited 5 times in total
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Mon Aug 14, 2017 16:36    Post subject: Reply with quote

Я тут сделал небольшую программку. Из выделенных списков URL создать папки, и загрузить все ссылки в именные папки.
У неё два обязательных параметра.

Command:
C:\Temp\DownloadFromFile.exe
Parameters:
"%T" 0 %P%S

https://cloud.mail.ru/public/8hPg/984s3oDba
.


Last edited by Zmy on Thu Aug 17, 2017 14:29; edited 3 times in total
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Tue Aug 15, 2017 04:15    Post subject: Reply with quote

По итогам тестирования.
Скрипт от Flasher по началу работал нормально, папки как положено создались, туда качались файлы, но потом появилась ошибка:
Quote:
Строка: 32
Символ: 61
Ошибка: Время ожидания операции истекло
Код: 80072EE5
Источник: WinHttp.WinHttpRequest

и на этом скрипт прекратил работу, остальные файлы из списков остались не скачанными. Решил посмотреть, что там в скрипте, увидел эту строку:
Quote:
HTTP.WaitForResponse 5, True : URL = HTTP.Option(1)

решил поменять 5 на 50 и после этого все теперь скачивается, больше не появилось ни одной ошибки. И еще обнаружил, что после завершения работы скрипта в папках встречаются файлы размером в 162 байтов и вьювер ничего не показывает после их открытия. Я открыл их блокнотом и оказалось, что они содержат этот текст:
Quote:
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

Я посмотрел по именам таких файлов в списке ссылок, проверил эти ссылки в браузере и они все действительно выдают ошибку 404. Было бы хорошо внести такую правку, чтобы такие файлы не создавались или удалялись после завершения скрипта, так как они только замусоривают папки. Замерял скорость скачивания: скрипт работал 20:49, скачано 505 мб, средняя скорость выходит 424 кб/с. В целом скриптом остался доволен, все файлы были скачаны как положено, причем нету ни одного отсутствующего файла (сверял количество ссылок в файлах с количеством файлов в папках), просмотрел файлы в режиме эскизов, не встретил ни одного битого или незавершенного файла. Спасибо большое за скрипт.

Программа от Zmy работает как нужно, не заметил ни одной ошибки, все файлы скачиваются в нужные папки, нету файлов с размером в 162 байтов, в целом нету ни одного нарекания. Также потестил скорость скачивания: скрипт работал 23:21 с., скачано 505 мб, средняя скорость получается 378 кб/с, что немного пониже чем у скрипта, но это не критично. Тоже работой программы остался доволен, спасибо большое за работу.
Решил забрать оба варианты в коллекцию, буду чередовать их, на случай если один из вариантов по каким-то причинам откажется работать. Спасибо еще раз Flasher и Zmy!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Next
Page 7 of 10

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group