Как переименовать файл после скачивания?

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Появилась задачка, которую не смог решить. Помогите, пожалуйста.

Суть:
Скачиваю GET запросом файл с сайта. Он скачивается с названием из запроса.
Так как файлов несколько, очень нужно их переименовывать при скачивании или после (предпочтительно конечно первый вариант).
Как реализовать так, чтобы каждый файл имел нужное мне название?

1593862445899.png

1593863319630.png
1593862080998.png

С# только потихоньку начал осваивать. 1/100% :du:

Заранее, большое спасибо.)
 
Последнее редактирование:
  • Спасибо
Реакции: SlipDez

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Появилась задачка, которую не смог решить. Помогите, пожалуйста.

Суть:
Скачиваю GET запросом файл с сайта. Он скачивается с названием из запроса.
Так как файлов несколько очень нужно их переименовывать при скачивании или после (предпочтительно конечно первый вариант).
Как реализовать так, чтобы каждый файл имел нужное мне название?


С# только потихоньку начал осваивать. 1/100% :du:

Заранее, большое спасибо.)
Один из вариантов - Скопировать файл и при копировании можно указать новое имя. https://zennolab.com/wiki/ru:actions:files

Вот статья с подобным вопросом. https://zennolab.com/discussion/threads/kak-pereimenovat-fajl-v-papke.24403/post-335157

Или вот еще https://zennolab.com/discussion/threads/kak-pereimenovat-fajl.32837/
 
  • Спасибо
Реакции: djaga

lederer

Client
Регистрация
13.04.2013
Сообщения
171
Благодарностей
85
Баллы
28
C#:
string file1 = project.Variables["profile_name"].Value;
string file2 = project.Variables["profile_name_new"].Value;
File.Move(file1, file2);
 
  • Спасибо
Реакции: material и djaga

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Или вот тема, где прямо перед гет походу дает возможность переименовать:
C#:
var req = ZennoPoster.HttpGet(
        "http://www.mobilmusic.ru/mfile/0d/4b/be/715326.jpg", // адрес картинки
        "", // прокси если нужно
        "UTF-8", // кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File, // тип файл
        30000, // ждем ответ от сервера
        "", //куки если нужно
        "", //юзерагент если нужно
        true, // использовать редирект
        3, // количество редиректов
        new String[]{}, // заголовки если нужно
         @"C:\", // куда сохранить файл
        true // использовать оригинальный УРЛ
    );

File.Move(req, @"C:\ИМЯФАЙЛА.jpg");
 
  • Спасибо
Реакции: djaga

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Или вот тема, где прямо перед гет походу дает возможность переименовать:
C#:
var req = ZennoPoster.HttpGet(
        "http://www.mobilmusic.ru/mfile/0d/4b/be/715326.jpg", // адрес картинки
        "", // прокси если нужно
        "UTF-8", // кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File, // тип файл
        30000, // ждем ответ от сервера
        "", //куки если нужно
        "", //юзерагент если нужно
        true, // использовать редирект
        3, // количество редиректов
        new String[]{}, // заголовки если нужно
         @"C:\", // куда сохранить файл
        true // использовать оригинальный УРЛ
    );

File.Move(req, @"C:\ИМЯФАЙЛА.jpg");
это переименование после ГЕТ
 
  • Спасибо
Реакции: djaga

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Огромное спасибо! За ответы!

Но без уточняющих вопросов не могу... Просто ещё не научился подключать библиотеки и не до конца понял как объявлять так, что бы в этот GET запрос на C# не нужно было повторно все вводить, а просто обращаться к основным переменным. Попытался вставить в общий код. Но начали вылезать жуткие ошибки.

59309


C#:
var Word_search = project.Variables["Word_search"].Value;
var ProfileUsetAgen = project.Profile.UserAgent;
var Word_Nam = project.Variables["Word_search"].Value;
var download_Direct = project.Directory;
string proxy = project.GetProxy();
var req = ZennoPoster.HttpGet(
        "https://images.dfasdfsdaf.com/dfasdfsdaf/dfasdfsdaf/" + Word_search + ".mp3", // адрес файла
        proxy, // прокси если нужно
        "UTF-8", // кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File, // тип файл
        30000, // ждем ответ от сервера
        "", //куки если нужно
        ProfileUsetAgen, //юзерагент если нужно
        true, // использовать редирект
        3, // количество редиректов
        new String[]{}, // заголовки если нужно
         download_Direct + @"\audio\", // куда сохранить файл
        true // использовать оригинальный УРЛ
    );

File.Move(req, download_Direct + @"\audio\" + Word_Nam + ".mp3");

Ещё несколько уточней если можно... очень важно для понимания.)

- Прокси правильно объявил? Я не знаю как проверить.
string proxy = project.GetProxy();
proxy, // прокси если нужно

- Где в профиле найти куки. Если они уже там сохранены?
Суть вопроса: как их вызвать в переменную, что бы вставить в код?
Профиль если что активирован через кубик.
"", //куки если нужно

- Что делать с заголовками? В кубике они есть, как их внести в код?
Они так же должны быть с новой строки? Как это обычно реализовано в коде?
new String[]{}, // заголовки если нужно
1593891153548.png

- Как быть с Редиректом? Откуда я пришёл?
В коде написано истина и все. Заменил на
59313

var Word_search = project.Variables["Word_search"].Value;
var Redirect = "https://wfdwfwfwf.com/find?query=" + Word_search;

Выдаёт ошибки.

- Когда задаю "выдавать заголовки и файл" выходит ошибка. Как вывести заголовок в переменную?
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.FileAndHeaders, // тип файл
Выполнение действия CSharp OwnCode. Путь содержит недопустимые знаки.
 
  • Спасибо
Реакции: SlipDez

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Спешу сообщить, что я кажется справился!

Если нашли ошибку, отпишитесь, пожалуйста.


Прикладываю код, чтобы такие, как я, смогли найти ещё один пример как это работает и вдохновиться.)
C#:
var Word_search = project.Variables["Word_search"].Value;
var ProfileUsetAgent = project.Profile.UserAgent;
var Word_Nam = project.Variables["Word_search"].Value;
var download_Direct = project.Directory;
string proxy = project.GetProxy();
string cookies = instance.GetCookie("пппппппппппп.com", true).Replace( "&", "; "); // Получаю куки из инстанса. Варианта как получить их из профиля не нашёл.
string [] additionalHeaders = new [] {  /* Объявляю заголовки */
            ProfileUsetAgent,
            "Accept: */*",
            "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Referer: https://ппппппппп/find?query=" + Word_search, // В одном из примеров с Referer было сделано вот так.
            "Connection: keep-alive"
};
var req = ZennoPoster.HttpGet(
        "https://пппппппппппп.com/words/еееееее/" + Word_search + ".mp3", // адрес файла
        proxy, // прокси если нужно
        "UTF-8", // кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.FileAndHeaders, // тип файл
        30000, // ждем ответ от сервера
        cookies, //куки если нужно
        ProfileUsetAgent, //юзерагент если нужно
        true, // использовать редирект
        3, // количество редиректов
        additionalHeaders, // заголовки если нужно
        download_Direct + @"\audio\", /* куда сохранить файл */
        false /* использовать оригинальный УРЛ */
    );

return project.Variables["res"].Value = req; // ответ получаю в переменную.

File.Move(req, download_Direct + @"\audio\" + Word_Nam + ".mp3");
 
Последнее редактирование:
  • Спасибо
Реакции: SlipDez и myndeswx

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