Помогите на C# перевести кусок шаблона

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
Ребята, помогите кусок шаба перевести на C#.
Слишком огромный получается шаб из-за этих переборов цен.
Вобщем вкратце, это парсер одного сайта и там стоит ограничение на показ товаров, чтобы его обойти я делаю переборку по интервалам цен, подставляю новые значения в фильтр цен и заново парсю.

В идеале мне нужно еще более мелкие интервалы, но получается просто гигантский шаб, страшно открывать)

Хотя бы дайте алгоритм как это сделать, интервалы я сам запилю.

Вот кусок от шаба.
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
ни чё кусок шаба, по весу 108 кб, это что там запрятал такое )))
 

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
ни чё кусок шаба, по весу 108 кб, это что там запрятал такое )))
так я и говорю фигня получается) полюбому все это в один кубик можно запихнуть на C# тока я не знаю как)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
так я и говорю фигня получается) полюбому все это в один кубик можно запихнуть на C# тока я не знаю как)
Чтобы запихать что то на C# надо знать, что именно запихивать. Много в шаблоне зависит от правильного построения Т.З и логики работы. Этот мега Switch явно не дружит с этими понятиями и к чему его применить тем более не понятно. Лопнул мой монитор :aq:
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 881
Баллы
113

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
к сожалению в
Чтобы запихать что то на C# надо знать, что именно запихивать. Много в шаблоне зависит от правильного построения Т.З и логики работы. Этот мега Switch явно не дружит с этими понятиями и к чему его применить тем более не понятно. Лопнул мой монитор :aq:
К сожалению весь шаб показать не могу, дабы не палить, но впринципе я добавил пару блоков, которых должно хватить чтобы понять логику.
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
Что палить (facepalm) сайт который парсишь, это не параноя случайно зовётся.
Сделай таблицу соответствий и получай нужное тебе новое значение и делай проход для сбора.
 

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
Что палить (facepalm) сайт который парсишь, это не параноя случайно зовётся.
Сделай таблицу соответствий и получай нужное тебе новое значение и делай проход для сбора.
как именно это сделать?:ce:
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
Да я серьезно) Если кому не трудно помогите как сделать. Абстрактные советы мне никак не помогают:dy:
Во первых на чём парсинг get или web морда?
Если проблема с интервалами то не надо городить SuperSwitch для ветвления, а получать уже готовый интервал из таблицы соответствий ( что угодно или что умеем из списока, таблицы, базы) и подставить его в текущий запрос или Url.
Альтернативный вариант , это ещё лучше изучить сайт и возможно есть потайная дверца для облегчения всего этого.
 

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
Во первых на чём парсинг get или web морда?
Если проблема с интервалами то не надо городить SuperSwitch для ветвления, а получать уже готовый интервал из таблицы соответствий ( что угодно или что умеем из списока, таблицы, базы) и подставить его в текущий запрос или Url.
Альтернативный вариант , это ещё лучше изучить сайт и возможно есть потайная дверца для облегчения всего этого.
Альтернативные уже испробованы, с ними еще сложнее все.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 040
Баллы
113
есть кубики которые конвертяся в C# или у тя там особый случай ??
\
P.S. я как и говорил и раельно я не скачивал но не думаю чтобы человек вилдив по твоим словам часть шаблога в таком размере бесплатно делать не будет
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 768
Благодарностей
2 415
Баллы
113
Во первых на чём парсинг get или web морда?
Если проблема с интервалами то не надо городить SuperSwitch для ветвления, а получать уже готовый интервал из таблицы соответствий ( что угодно или что умеем из списока, таблицы, базы) и подставить его в текущий запрос или Url.
Альтернативный вариант , это ещё лучше изучить сайт и возможно есть потайная дверца для облегчения всего этого.
На сколько я вижу по шаблону ТС - веб парсинг (не эффективно... переделывать лучше сразу на get).
На сколько я понял, то требуется не менять логику, а просто переделать её на С#.

Первое что приходит в голову на данную тему - это:
1. Определить переменные.
Код:
int first_price = Convert.ToInt32(project.Variables["first_price"].Value);
int price_1 = Convert.ToInt32(project.Variables["price_1"].Value);
int price_2 = Convert.ToInt32(project.Variables["price_2"].Value);

2. Дальше уже переделывать первый уровень условий например в таком виде.
Код:
if (first_price<50){

} else if (first_price<100){

} else if (first_price<200){

} else if (first_price<300){

} else if (first_price<400){

} else if (first_price<500){

} else if (first_price<600){

} else if (first_price<700){

} else if (first_price<800){

} else if (first_price<900){

} else if (first_price<1000){

}

3. Дальше внутри каждого блока первого уровня нужно дописать второй уровень условий и что будет происходить с переменными если условие верное. Пример:
Код:
if (first_price<50){
} else if (first_price<100){
    if (price_2==50) {
    price_1 = price_1 + 50;
    price_2 = price_2 + 50;  
    }
} else if (first_price<200){
    if (price_2==100) {
    price_1 = 100;
    price_2 = 200;  
    }
} else if (first_price<300){
    if (price_2==200) {
    price_1 = 200;
    price_2 = 300;  
    }
} else if (first_price<400){
    // по аналогии как выше
} else if (first_price<500){
// по аналогии как выше
} else if (first_price<600){
// по аналогии как выше
} else if (first_price<700){
// по аналогии как выше
} else if (first_price<800){
// по аналогии как выше
} else if (first_price<900){
// по аналогии как выше
} else if (first_price<1000){
// по аналогии как выше
}

4. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
Код:
project.Variables["price_1"].Value = price_1.ToString();
project.Variables["price_2"].Value = price_2.ToString();
project.Variables["first_price"].Value = first_price.ToString();

Другое дело что врятли это самое оптимальное решение... Хотя оно и соответствует задаче которая была задана в начале топика.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 881
Баллы
113
На сколько я вижу по шаблону ТС - веб парсинг (не эффективно... переделывать лучше сразу на get).
На сколько я понял, то требуется не менять логику, а просто переделать её на С#.

Первое что приходит в голову на данную тему - это:
1. Определить переменные.
Код:
int first_price = Convert.ToInt32(project.Variables["first_price"].Value);
int price_1 = Convert.ToInt32(project.Variables["price_1"].Value);
int price_2 = Convert.ToInt32(project.Variables["price_2"].Value);

2. Дальше уже переделывать первый уровень условий например в таком виде.
Код:
if (first_price<50){

} else if (first_price<100){

} else if (first_price<200){

} else if (first_price<300){

} else if (first_price<400){

} else if (first_price<500){

} else if (first_price<600){

} else if (first_price<700){

} else if (first_price<800){

} else if (first_price<900){

} else if (first_price<1000){

}

3. Дальше внутри каждого блока первого уровня нужно дописать второй уровень условий и что будет происходить с переменными если условие верное. Пример:
Код:
if (first_price<50){
} else if (first_price<100){
    if (price_2==50) {
    price_1 = price_1 + 50;
    price_2 = price_2 + 50; 
    }
} else if (first_price<200){
    if (price_2==100) {
    price_1 = 100;
    price_2 = 200; 
    }
} else if (first_price<300){
    if (price_2==200) {
    price_1 = 200;
    price_2 = 300; 
    }
} else if (first_price<400){
    // по аналогии как выше
} else if (first_price<500){
// по аналогии как выше
} else if (first_price<600){
// по аналогии как выше
} else if (first_price<700){
// по аналогии как выше
} else if (first_price<800){
// по аналогии как выше
} else if (first_price<900){
// по аналогии как выше
} else if (first_price<1000){
// по аналогии как выше
}

4. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
Код:
project.Variables["price_1"].Value = price_1.ToString();
project.Variables["price_2"].Value = price_2.ToString();
project.Variables["first_price"].Value = first_price.ToString();

Другое дело что врятли это самое оптимальное решение... Хотя оно и соответствует задаче которая была задана в начале топика.
Ничесе, замарочился.
 
  • Спасибо
Реакции: BAZAg

sanchessam

Client
Регистрация
13.10.2016
Сообщения
72
Благодарностей
4
Баллы
8
На сколько я вижу по шаблону ТС - веб парсинг (не эффективно... переделывать лучше сразу на get).
На сколько я понял, то требуется не менять логику, а просто переделать её на С#.

Первое что приходит в голову на данную тему - это:
1. Определить переменные.
Код:
int first_price = Convert.ToInt32(project.Variables["first_price"].Value);
int price_1 = Convert.ToInt32(project.Variables["price_1"].Value);
int price_2 = Convert.ToInt32(project.Variables["price_2"].Value);

2. Дальше уже переделывать первый уровень условий например в таком виде.
Код:
if (first_price<50){

} else if (first_price<100){

} else if (first_price<200){

} else if (first_price<300){

} else if (first_price<400){

} else if (first_price<500){

} else if (first_price<600){

} else if (first_price<700){

} else if (first_price<800){

} else if (first_price<900){

} else if (first_price<1000){

}

3. Дальше внутри каждого блока первого уровня нужно дописать второй уровень условий и что будет происходить с переменными если условие верное. Пример:
Код:
if (first_price<50){
} else if (first_price<100){
    if (price_2==50) {
    price_1 = price_1 + 50;
    price_2 = price_2 + 50; 
    }
} else if (first_price<200){
    if (price_2==100) {
    price_1 = 100;
    price_2 = 200; 
    }
} else if (first_price<300){
    if (price_2==200) {
    price_1 = 200;
    price_2 = 300; 
    }
} else if (first_price<400){
    // по аналогии как выше
} else if (first_price<500){
// по аналогии как выше
} else if (first_price<600){
// по аналогии как выше
} else if (first_price<700){
// по аналогии как выше
} else if (first_price<800){
// по аналогии как выше
} else if (first_price<900){
// по аналогии как выше
} else if (first_price<1000){
// по аналогии как выше
}

4. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
Код:
project.Variables["price_1"].Value = price_1.ToString();
project.Variables["price_2"].Value = price_2.ToString();
project.Variables["first_price"].Value = first_price.ToString();

Другое дело что врятли это самое оптимальное решение... Хотя оно и соответствует задаче которая была задана в начале топика.
Спасибо! Мне дал другой человек именно такое решение как у вас) А на гетах уже делал и слишком сайт замороченный, не выходит его гетами у меня по нормальному юзать, быстрее через морду спарсить.
 

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