Нужен С# для парсинга, готов заплатить за помощь

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
733
Благодарностей
485
Баллы
63
Ситуация такая:
Получаю через гет запрос массив данных, который нужно обработать по 3 параметрам и сохранить в файл в нужном формате

Пример данных:
{"response":{"count":640,"items":[{"id":136065911,"first_name":"Егор","last_name":"Матвеев","is_closed":false,"can_access_closed":true,"can_write_private_message":0,"last_seen":{"time":1566284526,"platform":4},"followers_count":5374,"track_code":"9371b182Tn9T-1SZkzeI5l46J_UkV-4aK2PdNNyWZHcSPP9PuugpFhP-BfGUPY2waP3MdrZShhQtYN00"},{"id":214972965,"first_name":"Сашка","last_name":"Шмидт","is_closed":true,"can_access_closed":false,"can_write_private_message":0,"last_seen":{"time":1566284400,"platform":4},"track_code":"2c0bfae7-7NuCMgrOYRyw5kqK6_Rn9npNqs72OrMY2OMX2gRdgec2ilSkxs8giTKr-rAK0easecwqDvY"},{"id":143987129,"first_name":"Егор","last_name":"Герасимов","is_closed":false,"can_access_closed":true,"can_write_private_message":1,"last_seen":{"time":1566237230,"platform":4},"followers_count":3294,"track_code":"6ce0f590PLNwrtNoPl0Cp1wfNe04oc3j4qcKKK6QGHRvV4gsGXJb2jarjlhqCFKvZtrWbaKkpe3kpAoo"},

1)Нужно оставить строки с параметром "can_write_private_message":1, (с 0 удалить),
2)Удалить все строки с followers_count": - больше 3000
3)Оставить строки в диапазоне недели Unix time на момент выполнения кубика, в строках это параметр "last_seen":{"time":1566284526," (неделя это 604800)

Сохранить списком в формате id "0000000",name "Name"
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C#:
var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
   
    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;
   
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    var name = Regex.Match(line, @"(?<=first_name"":"").*?(?="")").Value.Trim();
   
    FileSystem.FileAppendString(project.Directory + "\\Result.txt", "id \"" + id + "\",name \"" + name + "\"", true);
}
 
  • Спасибо
Реакции: one и Dmitriy Ka

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
733
Благодарностей
485
Баллы
63
C#:
var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
  
    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;
  
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    var name = Regex.Match(line, @"(?<=first_name"":"").*?(?="")").Value.Trim();
  
    FileSystem.FileAppendString(project.Directory + "\\Result.txt", "id \"" + id + "\",name \"" + name + "\"", true);
}
Все круто, почти то что надо, а можно сделать, чтобы результат сохранялся не в файл, а в список "Список ID" (у меня потом идет чистка ID от пересечений разных групп), напиши в ЛС WMR или QIWI скину благодарчик
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Все круто, почти то что надо, а можно сделать, чтобы результат сохранялся не в файл, а в список "Список ID"
C#:
var listID = project.Lists["ListID"];

var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
   
    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;
   
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    var name = Regex.Match(line, @"(?<=first_name"":"").*?(?="")").Value.Trim();
   
    //FileSystem.FileAppendString(project.Directory + "\\Result.txt", "id \"" + id + "\",name \"" + name + "\"", true);
   
    listID.Add("id \"" + id + "\",name \"" + name + "\"");
}
 
  • Спасибо
Реакции: Dmitriy Ka и one

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
733
Благодарностей
485
Баллы
63
C#:
var listID = project.Lists["ListID"];

var response = project.Variables["Response"].Value;

var list = new List<string>();
var regex = new Regex(@"\{""id"":.*?(?=""})");
regex.Matches(response).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));

for (int i = 0; i < list.Count; i++)
{
    var line = list[i];
    var followers_count = Regex.Match(line, @"(?<=followers_count"":)\d+.*?").Value.Trim();

    var last_seen = Regex.Match(line, @"(?<=time"":)\d+.*?").Value.Trim();
    long time = DateTimeOffset.Now.ToUnixTimeSeconds() - int.Parse(last_seen);
  
    if (string.IsNullOrEmpty(followers_count)) followers_count = "0";
    if (line.Contains("can_write_private_message\":0") || int.Parse(followers_count) > 3000 || time > 604800) continue;
  
    var id = Regex.Match(line, @"(?<=id"":)\d+.*?").Value.Trim();
    var name = Regex.Match(line, @"(?<=first_name"":"").*?(?="")").Value.Trim();
  
    //FileSystem.FileAppendString(project.Directory + "\\Result.txt", "id \"" + id + "\",name \"" + name + "\"", true);
  
    listID.Add("id \"" + id + "\",name \"" + name + "\"");
}
Привет, ответь в ЛС
 

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