Как достать переменную Page.Url из C# сниппета?

svidskiy

Новичок
Регистрация
10.12.2023
Сообщения
2
Благодарностей
1
Баллы
1
Как достать переменную Page.Url из C# сниппета? Банально через project.Variables получить нельзя. Все можно получить кроме Page: Directory, GlobalVariables, Xml, Json, Environment.
 
  • Спасибо
Реакции: Pierre Paul Jacques

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
126
Благодарностей
34
Баллы
28
Привет, BAZAg и svidskiy,

Спасибо за предоставленный ранее код. Использование instance.ActiveTab.URL; действительно работает для получения текущего URL страницы. Однако я хочу понять, как я мог бы использовать специфическую переменную окружения {-Page.Url-} в коде C#. Моя цель - не только получить URL, но и понять, как использовать переменные окружения ZennoPoster в более широком контексте.

По моим исследованиям и попыткам до сих пор кажется, что доступ к переменным окружения через C# не документирован или не поддерживается так же прямо или полноценно, как доступ к "Custom" переменным. Если у кого-то есть информация о том, как получить переменные, такие как {-Page.Url-}, напрямую в скрипте C#, это будет очень ценной информацией.

С уважением,
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 026
Благодарностей
544
Баллы
113
Привет, BAZAg и svidskiy,

Спасибо за предоставленный ранее код. Использование instance.ActiveTab.URL; действительно работает для получения текущего URL страницы. Однако я хочу понять, как я мог бы использовать специфическую переменную окружения {-Page.Url-} в коде C#. Моя цель - не только получить URL, но и понять, как использовать переменные окружения ZennoPoster в более широком контексте.

По моим исследованиям и попыткам до сих пор кажется, что доступ к переменным окружения через C# не документирован или не поддерживается так же прямо или полноценно, как доступ к "Custom" переменным. Если у кого-то есть информация о том, как получить переменные, такие как {-Page.Url-}, напрямую в скрипте C#, это будет очень ценной информацией.

С уважением,
{-Page.Url-} = instance.ActiveTab.URL;
{-Page.Domain-} = instance.ActiveTab.Domain;
{-Page.Text-} = instance.ActiveTab.DomText;

И так далее.

Это в первую очередь не переменные а свойства, и никто тебе на прямую с ними работать не даст.
 
  • Спасибо
Реакции: Pierre Paul Jacques

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
126
Благодарностей
34
Баллы
28
Уважаемый Шерминатор,

Хочу сердечно поблагодарить вас за разъяснения по поводу переменных окружения в ZennoPoster. Я потратил целый час, исследуя документацию и форум, пытаясь интегрировать эти переменные в свой скрипт C#, но без успеха. Ваше объяснение стало для меня настоящим открытием!

Благодаря вашему ответу я понял фундаментальное различие между переменной и свойством объекта, что было не так очевидно для меня, начинающего, особенно из-за их представления в интерфейсе ZennoPoster, которые находятся рядом. Я заметил тире, но не понял их значение, что и привело меня в заблуждение.

Это сообщение написано с помощью GPT для перевода, так что прошу прощения за любые необычные обороты. Уверяю вас, я не робот, и это не автоматический ответ от проекта Zenno, haha. К счастью, я еще не научился использовать их для самостоятельной отправки сообщений, еще раз спасибо вам тысячу раз!

Желаю вам прекрасного дня!
 
  • Спасибо
Реакции: Sergodjan и Sherminator

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
126
Благодарностей
34
Баллы
28
Ниже я поделюсь с вами блоком кода, который в данный момент использую. Благодаря вашим советам, я смог сделать его более эффективным и удобным. Раньше я часто использовал несколько блоков кода Sharp, но теперь обойдусь одним блоком!

Я все еще новичок в Zenno и программировании на C#, но уже доволен результатом. Если у вас есть какие-то советы по оптимизации этого кода, я бы с удовольствием их выслушал!

Как вы могли заметить, я также обращаюсь к искусственному интеллекту, чтобы он написал для меня комментарии к коду. Это двойная выгода: я получаю не только мемо о своем коде, но и сохраняю контекст для последующих изменений. Так что вот, продолжайте делиться знаниями и опытом, и вместе мы станем лучше!


Проверка URL на Medium и добавление в список:
// Проверка URL на Medium и добавление в список

// 1. Получение URL из вкладки "Medium"
string url = project.ExecuteMacro(instance.GetTabByAddress("Medium").URL);

// 2. Присвоение полученного URL переменной "J_Url_Post"
project.Variables["J_Url_Post"].Value = url;

// 3. Проверка, является ли URL пустым или содержит ли он слово "edit"
if (string.IsNullOrEmpty(url) || url.Contains("edit"))
{
    // Отправка сообщения об ошибке в системный лог
    string message = string.IsNullOrEmpty(url) ? "\nURL пуст.\n" : "\nURL содержит слово 'edit'.\n";
    project.SendToLog(message, ZLog.Info, false, ZColor.Red);

    // Прерывание процесса с исключением, сигнализирующим о проблеме
    throw new Exception("\n\nОтладчик!");
}

// 4. Добавление полученного URL в список "Links - Medium"
project.Lists["Links - Medium"].Add(url);

// 5. Логирование для указания на то, что статья была опубликована
project.SendToLog("Статья опубликована.", ZLog.Info, false);




/*
Этот блок кода выполняет две операции: он проверяет, была ли статья опубликована на Medium, и если да, то добавляет ее в определенный список.

1. Процесс начинается с получения URL статьи из конкретной вкладки "Medium". Затем этот URL присваивается переменной проекта 'J_Url_Post' для последующего использования.

2. Выполняется условная проверка, чтобы убедиться, что URL не пустой и не содержит слово "edit", которое является индикатором того, что статья все еще находится в режиме черновика. Если URL не проходит эту проверку, в системный журнал записывается сообщение об ошибке, и генерируется исключение для сигнализации о проблеме и прерывания процесса.

3. Если URL действителен, он добавляется в список "Links - Medium" для последующей обработки (связь с другими сайтами).

Такой подход обеспечивает эффективное управление статьями на Medium, фильтруя те, которые еще не готовы к публикации, и компилируя список допустимых статей. Это упрощает управление контентом и автоматизацию связанных с проектом процессов в ZennoPoster.
*/

Я приведу вам скриншот различных блоков, которые я использовал раньше для выполнения той же операции, которую сейчас выполняю только с одним блоком кода C#.
117871
 

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