[SOLVED] Как вставить в значение по умолчанию значение переменной

jiks

Client
Регистрация
01.11.2015
Сообщения
28
Благодарностей
3
Баллы
3
Делаю парсинг фото из вк и имена даются следуя такому шаблону "n+1". В шаблон грузится урл группы и выпаршиваются все фотки из нее. Но при следующем запуске имена файлам даются начиная с 1 и файлы перезаписываются, а хотелось бы, чтобы список продолжился.
Да, понимаю, что можно распределить по папкам - 1 папка - 1 группа, но меня такой вариант не устраивает.
 

Gamma

Client
Регистрация
14.05.2016
Сообщения
83
Благодарностей
10
Баллы
8
самое простое - сделать так, если я вас правильно понял, тогда названия не будут соприкасаться...
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Не понятно, надо по порядку или просто рандом? Если по порядку, то можно сгенерировать в список числа, и брать из списка с удалением. А если рандом, то есть хорошая такая переменная TickCount в переменных окружении.
 

Aviatikor

Client
Регистрация
30.01.2016
Сообщения
91
Благодарностей
30
Баллы
18
Нужен числовой указатель на начало старта, поэтому, предполагаю два варианта:
1. При завершении шаблона(успешного и неуспешного) сохранять номер итерации в файл и при новом запуске брать это число и увеличивать.
2. Вот ещё вариант на С# - сканировать папку с файлами и парсить значение файлов на нумерацию, положить в список, отсортировать по убыванию и вернуть первое большее число. На выходе получим число к которому можно прибавлять 1 для создания новых файлов. Поставьте экшн в начале шаблона и он будет сканировать папку при старте и получать итератор. Единственное нужно подобрать регулярку для вашего вида нумерации файлов, несколько примеров я привёл в коде.
Код:
string dir = project.Variables["dir"].Value; // Путь к папке с файлами
string[] files = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly);
string regex = @"(?<=\D)\d+?(?=\.)"; // для файлов test1.txt - здесь применить регулярку для получения нумерации файла
List<int> list = new List<int>();
int num = 0;
foreach (string file in files)
{
    string name = file.Replace(dir, "");
    string res = Regex.Match(name, regex).Value;
    num = Convert.ToInt32(res);
    list.Add(num);
}
list.Sort(); // сортирует по возрастанию
list.Reverse(); // переворачиваем список
return list[0]; // возвращаем первое значение списка

// (?<=\D)\d+?(?=\.)    // если файл test1.txt
// (?<=\()\d+?(?=\)\.)  // если файл test(1).txt
// (?<=-)\d+?(?=\.)     // если файл test-1.txt
// (?<=+)\d+?(?=\.)     // если файл test+1.txt
// (?<=_)\d+?(?=\.)     // если файл test_1.txt
Экшн вернёт значение в переменную, которую нужно указать в кубике - Положить результат в переменную, не забудьте снять галочку - не возвращать значение...
И ещё момент нужно будет указать путь к папке либо через настройки, либо через переменные, либо напрямую в кубике, первая строчка - string dir = ... // Путь к папке с файлами
Думаю разберётесь, приложу несколько скринов.




 
  • Спасибо
Реакции: rosnordic и jiks

jiks

Client
Регистрация
01.11.2015
Сообщения
28
Благодарностей
3
Баллы
3
Нужен числовой указатель на начало старта, поэтому, предполагаю два варианта:
1. При завершении шаблона(успешного и неуспешного) сохранять номер итерации в файл и при новом запуске брать это число и увеличивать.
Вот! Именно это решение и использую! Аж стыдно, что сам не допер :dd:
И за С# отдельное спасибо, хоть и не пригодилось. Ну может кому-то еще понадобится
 
  • Спасибо
Реакции: Aviatikor

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