Pull to refresh
Comments 17
У меня вопрос. Сразу оговорюсь, я не эксперт в веб программировангии. Как Вам удалось аутентификацию Капчи пройти?
Если пользователь не авторизован, то ему выведется капча.
Я написал комментарий в примере:
Скрытый текст
/* Получаем ссылку на капчу и выводим окно ввода пользователю */
        case ST_PRE_RES + 1:
            var recaptchaUid = aData.match(/challenge\s*:\s*'(\S+?)'/);
            if (recaptchaUid) {
                this.loginData[LOGIN_POST] += "&recaptcha_challenge_field=" + encodeURIComponent(recaptchaUid[1]);
                this.openCaptchaDialog(this.id, this.user, "https://www.google.com/recaptcha/api/image?c=" + recaptchaUid[1]);
                return false;
            }
            this.onError();
            break;


imageРасширение для Хабры давно написано мной больше года назад.

image

Там не только счётчики, но и полноценный просмотр данных, сортировка данных и возможность комментирования, ставить карму и т.д., работа offline.

Сейчас добиваю (тестирую) новую версию с новыми возможностями + версия для Firefox уже готова, тестирую.

Вот скрин, когда на полный экран, реализована возможность показывать только новые комментарии, а старые скрывать — экономит кучу времени на чтение обновлений. То есть. если например, для статьи в 300 комментариев завтра напишут только 2 или 3 новых комментария в разных местах, то их можно будет мгновенно прочитать, не тратя времени на перемещение по всем 300 комментариям.

image
Цель топика не написать расширение для Хабры.
Основная идея была показать, как написать скрипт для X-Notifier.
Угу, понял.

Да, x-notifier интересная вещичка.

Просто ваши слова без учёта x-notifier мной были поняты так, что скрипта подобного нет и всё тут :-)

Он позволяет получать уведомления о новых письмах, сообщениях, да о чем угодно с различных сервисов в одном месте. Для него написано множество скриптов (Gmail, Яндекс.Почта, Google+, Facebook, Twitter и прочих). Но скрипта для Хабра, до сих пор никто не написал, пора исправить это недоразумение!


Наверное, было бы понятнее (если не вчитываться), если так:

Он позволяет получать уведомления о новых письмах, сообщениях, да о чем угодно с различных сервисов в одном месте. Для x-notifier написано множество плагинов (Gmail, Яндекс.Почта, Google+, Facebook, Twitter и прочих), но для Хабра до сих пор никто не написал, пора исправить это недоразумение!
В программе скрипты называются именно скриптами для браузерного плагина/расширения x-notifier. Плагины для плагина как-то масло масляное получается
А где же версия для firefox? Вы сказали год назад, что рабоаете над над ней.
Сейчас поддерживаются браузеры Firefox и Chrome. Есть какие-то сложности с написанием скрипта под разные браузеры?
Я просто не тестировал в других браузерах, видимо разработчик X-Notifier тоже.
Но, вот цитата с сайта плагина:
Even though your browser is not in the list,
you can use the script if you use one account for that script.

Попробуйте, если будут баги, то поправлю.
Спасибо за инструкцию, благодаря ей написал скрипт для сайтов StackExchange.
Только вот две вещи мне остались непонятны:
1) можно ли как-то задавать параметры по умолчанию (например, чтоб обновление было не раз в 10 минут, а раз в час)?
2) на что влияет возвращается ли true или false в результате работы каждого этапа? Почему в каких-то случаях следующий этап запускается вручную, а в каких-то — нет?
Рад что кому то пригодилась эта писанина))
1) Это конфигурируется в настройках плагина (Options -> Check interval), по умолчанию свое значение, кажется, задавать нельзя.
2) Каждая стадия это инт. Когда мы возвращаем false, мы инкрементируем значение стадии на 1. К примеру тут в стадии ST_PRE_RES + 1 я делаю return false; и перехожу к следующей стадии ST_PRE_RES + 2. Если я не хочу переходить к следующей стадии, а сразу перейти к конкретному этапу то я присваиваю значение this.stage = ST_LOGIN; и возвращаю процесс. return true; это просто завершение.

Я рекомендую посмотреть исходники плагина и можете посмотреть то что я понаписал, я думаю станет немного яснее.
Если будут вопросы, то пишите, помогу)
Спасибо за пояснения! Касательно стадий — не сразу обратил внимание на дефолтные id стадий, оказывается ST_PRE и ST_PRE_RES как раз на единицу отличаются, потому в ST_PRE можно возвращать false.
Свой первый скрипт я уже написал, вроде хорошо работает.

Но вот над вторым скриптом все думаю. Хочу, чтобы X-Notifier уведомлял меня о новых отзывах на Google Play о моем приложении. API у Google Play нет, так что тут лишь парсить страницы выйдет. Но вот умеют ли скрипты X-Notifier хранить какие-то переменные до следующего запуска? Например, сохранить дату последнего отзыва, чтобы при следующей проверке определить появились ли новые отзывы или нет.
Можете использовать cookieManager, я его не использовал, но вы можете посмотреть примеры тут.
Похоже, cookieManager в последних версиях плагина X-Notifier отсутствует (или отсутствует в Chrome-версии плагина).
Кстати, обнаружил, что некоторые значения по умолчанию можно задавать в скрипте, например, var defaultInterval=120;.

Над вторым скриптом все бьюсь — научился получать данные об отзывах и извлекать их. Но вот с авторизацией в Google есть проблемы — взял за основу код от Gmail, авторизация срабатывает. Но вот потом надо как-то перейти на страницу с отзывами Google Play, а скрипт страницы GMail'a получает.
Можете показать код? Может смогу помочь.
Посмотрите так же что у вас стоит правильный параметр для service здесь
this.loginData=["https://accounts.google.com/ServiceLoginAuth?service=mail", "Email","Passwd","PersistentCookie=yes"];
Решил еще один скрипт написать и снова столкнулся с той же проблей — логика перехода между шагами (this.stage) по-прежнему не ясна. В каких-то случаях return false автоматически добавляет +1 к номеру шага. Но в каких-то шагах нет. Например, если в ST_LOGIN_RES вернуть false, то ST_LOGIN_RES+1 автоматически не запустится. Еще в каких-то случаях, видимо, запуск this.getHtml приводит к увеличению шага на 1 (наверное, когда завершается выполнение получения HTML-страницы). Но в каких-то случаях вообще используется return this.process(aData, aHttp), а в каких-то — return this.baseProcess(aData, aHttp).

В получении данных мне нужно было сделать несколько getHtml запросов (без получения результата) и один getHtml для последующего использования в getCount. Но предсказать что в этом случае попадет как aData в getCount невозможно — судя по всему то, что завершится первым.
Only those users with full accounts are able to leave comments. Log in, please.