Ребята, помогите кусок шаба перевести на C#.
Слишком огромный получается шаб из-за этих переборов цен.
Вобщем вкратце, это парсер одного сайта и там стоит ограничение на показ товаров, чтобы его обойти я делаю переборку по интервалам цен, подставляю новые значения в фильтр цен и заново парсю.
В идеале мне нужно еще более мелкие интервалы, но получается просто гигантский шаб, страшно открывать)
Хотя бы дайте алгоритм как это сделать, интервалы я сам запилю.
Чтобы запихать что то на C# надо знать, что именно запихивать. Много в шаблоне зависит от правильного построения Т.З и логики работы. Этот мега Switch явно не дружит с этими понятиями и к чему его применить тем более не понятно. Лопнул мой монитор
Чтобы запихать что то на C# надо знать, что именно запихивать. Много в шаблоне зависит от правильного построения Т.З и логики работы. Этот мега Switch явно не дружит с этими понятиями и к чему его применить тем более не понятно. Лопнул мой монитор
Что палить сайт который парсишь, это не параноя случайно зовётся.
Сделай таблицу соответствий и получай нужное тебе новое значение и делай проход для сбора.
Что палить сайт который парсишь, это не параноя случайно зовётся.
Сделай таблицу соответствий и получай нужное тебе новое значение и делай проход для сбора.
Во первых на чём парсинг get или web морда?
Если проблема с интервалами то не надо городить SuperSwitch для ветвления, а получать уже готовый интервал из таблицы соответствий ( что угодно или что умеем из списока, таблицы, базы) и подставить его в текущий запрос или Url.
Альтернативный вариант , это ещё лучше изучить сайт и возможно есть потайная дверца для облегчения всего этого.
Во первых на чём парсинг get или web морда?
Если проблема с интервалами то не надо городить SuperSwitch для ветвления, а получать уже готовый интервал из таблицы соответствий ( что угодно или что умеем из списока, таблицы, базы) и подставить его в текущий запрос или Url.
Альтернативный вариант , это ещё лучше изучить сайт и возможно есть потайная дверца для облегчения всего этого.
есть кубики которые конвертяся в C# или у тя там особый случай ??
\
P.S. я как и говорил и раельно я не скачивал но не думаю чтобы человек вилдив по твоим словам часть шаблога в таком размере бесплатно делать не будет
Во первых на чём парсинг 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. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
На сколько я вижу по шаблону ТС - веб парсинг (не эффективно... переделывать лучше сразу на 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. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
На сколько я вижу по шаблону ТС - веб парсинг (не эффективно... переделывать лучше сразу на 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. А уже дальше вернуть результат выполнения сниппета в переменные проекта. Пример:
Спасибо! Мне дал другой человек именно такое решение как у вас) А на гетах уже делал и слишком сайт замороченный, не выходит его гетами у меня по нормальному юзать, быстрее через морду спарсить.