Нужно сделать скачивание файлов по ссылке

Kit101

Новичок
Регистрация
23.07.2018
Сообщения
12
Благодарностей
0
Баллы
1
Нужно значит так загружаю в txt ссылки на скачку файлов в зип архивах, например
https://abc123.ru/123.zip
https://asd451.ru/123.zip
скрипт берет первую строку переходит по ней в браузере начинается скачивание
заранее размеры файлов не известны и не известно существует ли файл по ссылке, он должен определить во первых существует ли файл по этой ссылке, если началось скачивание значит существует, далее определяет когда скачается и потом уже когда скачался переходит к другому файлу.
Названия zip могут быть одинаковые на разных сайтах
как в примере https://abc123.ru/123.zip
https://asd451.ru/123.zip
И ещё надо что бы в лог записывалось с какого сайта скачался zip с таким именем, ну понятно что с одинаковым именем они будут в папке как 123.zip 123(1).zip 123(2).zip и т.д
 

Kit101

Новичок
Регистрация
23.07.2018
Сообщения
12
Благодарностей
0
Баллы
1
уже сделали, неактуально
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
581
Баллы
93
уже сделали, неактуально
тогда ни у кого хлеб не отниму :D
стало просто интересно, как большие файлы качать....
браузер не нужен + скачивает .zip с сайтов, которые спрятаны за cloudlfare (с зеннофорума архивы качает без проблем)

C#:
var lst = project.Lists["url"];
string downloadPath = "", saveFolder, savePath;

while (true) {
if(lst.Count > 0)
{
    downloadPath = lst[0].Trim();
    lst.RemoveAt(0);
    saveFolder = Path.Combine(project.Directory, new Uri(downloadPath).Host);
    if (!Directory.Exists(saveFolder)) Directory.CreateDirectory(saveFolder);
    savePath = (Path.Combine(saveFolder, Path.GetFileName(downloadPath)));
    
    try
    {
        using (var client = new WebClient())
        {
            client.Headers.Add("User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); // На случай, если архив будет за клаудом
            client.DownloadFile(downloadPath, savePath);
            project.SendInfoToLog(string.Format("Успешно скачал [ {0} ] с сайта [ {1} ]", Path.GetFileName(downloadPath), (new Uri(downloadPath).Host)), true);
        }       
    }
    
    catch
    {
        using (StreamWriter sw = new StreamWriter(Path.Combine(project.Directory, "Errors.txt"), true))
        {   
            sw.WriteLine(downloadPath);
        }
    }
    
}

else
{   
    foreach (var directory in Directory.GetDirectories(project.Directory))
    {
         if (Directory.GetFiles(directory).Length <= 0 ) Directory.Delete(directory, true);                   
    }
    
    project.SendInfoToLog("Закончились ссылки на скачивание !");
    break;
}
}
 

slava1975

Client
Регистрация
12.09.2016
Сообщения
262
Благодарностей
17
Баллы
18
тогда ни у кого хлеб не отниму :D
стало просто интересно, как большие файлы качать....
браузер не нужен + скачивает .zip с сайтов, которые спрятаны за cloudlfare (с зеннофорума архивы качает без проблем)

C#:
var lst = project.Lists["url"];
string downloadPath = "", saveFolder, savePath;

while (true) {
if(lst.Count > 0)
{
    downloadPath = lst[0].Trim();
    lst.RemoveAt(0);
    saveFolder = Path.Combine(project.Directory, new Uri(downloadPath).Host);
    if (!Directory.Exists(saveFolder)) Directory.CreateDirectory(saveFolder);
    savePath = (Path.Combine(saveFolder, Path.GetFileName(downloadPath)));
   
    try
    {
        using (var client = new WebClient())
        {
            client.Headers.Add("User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); // На случай, если архив будет за клаудом
            client.DownloadFile(downloadPath, savePath);
            project.SendInfoToLog(string.Format("Успешно скачал [ {0} ] с сайта [ {1} ]", Path.GetFileName(downloadPath), (new Uri(downloadPath).Host)), true);
        }      
    }
   
    catch
    {
        using (StreamWriter sw = new StreamWriter(Path.Combine(project.Directory, "Errors.txt"), true))
        {  
            sw.WriteLine(downloadPath);
        }
    }
   
}

else
{  
    foreach (var directory in Directory.GetDirectories(project.Directory))
    {
         if (Directory.GetFiles(directory).Length <= 0 ) Directory.Delete(directory, true);                  
    }
   
    project.SendInfoToLog("Закончились ссылки на скачивание !");
    break;
}
}
очень нужно это решение,но не знаю с какой стороны подходить
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)