Вставая по утрам, хотелось видеть текущий прогноз погоды. Причем так, как мне удобно и со временем заката. Также не хотелось лишний раз лезть в интернет и тратить на это время. Хотелось, чтобы прогноз был сразу показан на экране телефона, но без лишних виджетов, занимающих лишнее пространство на экране и создающих неудобства. И я решил создать приложение которое будет выводить данные о любой информации и не только по прогнозам, а вообще о всем в автоматическом режиме, как это делает Cron с помощью Wget. Так на свет появилось приложение GETauto.


Приложение использует регулярные выражения, поэтому я решил рассказать о использующихся регулярных выражениях и о том, как они могу упростить жизнь, как с использованием GETauto так и без него.

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

Параметры регулярных выражений можно посмотреть тут: https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Regular_expression

Основное что будем использовать, это экранирование символом "\", запоминание ленивым выражением всего что в пределах скобок "(.+?)", либо пропуск элементов до совпадения тем же выражением, но без скобок ".+?" и вывод результатов $1...$9 и т.д.


Для каждого запроса есть три строчки. В первой, указывается URL адрес запроса. Во второй, регулярное выражение в формате аналогично preg_match() на php. В третий, указывается то, что вставляем из регулярного выражения, где $1 (1 — это номер) номер вставки аналогично номерам элементов массива из preg_match(). Если 2 и 3 строчки не заполнены, то выводится просто полученный HTML код. Если не заполнена 3 строчка, то выводятся все элементы массива. Там же можно задать время ежедневных запросов. Чтобы запрос выводил Push уведомления, необходимо проставить галочку в поле: «To send notifications of result GET request»

preg_match() — подробнее по ссылке: http://php.net/preg_match


Программа может сама включать Wi-Fi и/или мобильный интернет, если он не был до этого включен и отключать его, после выполнения запроса. Также программа может включать Bluetooth в момент, когда появляется Push уведомление, созданное программой. И выключает Bluetooth, если уведомление убрано.

Курсы валют Центробанка по расписанию


1-е поле:
http://www.cbr.ru/scripts/XML_daily.asp
2-е поле:
USD.+?\<Value\>(.+?)\<.+?EUR.+?\<Value\>(.+?)\<
3-е поле:
USD $1 / EUR $2

Прогноз погоды по расписанию


В программе можно задать получение прогноза погоды по расписанию. При этом можно задать автоматическое включение Wi-Fi и / или мобильного интернета. Когда данные будут получены, всё автоматически отключится.

Прогноз погоды на СЕЙЧАС:

1-е поле:
http://api.worldweatheronline.com/free/v2/weather.ashx?q=Moscow,RU&format=json&lang=ru&num_of_days=1&key={id}
2-е поле:
value\"\: \"(.+?)\".*?temp_C\"\: \"(.+?)\".*?windspeedKmph\"\: \"(.+?)\".*?sunrise\"\: \"(.+?)\ .*?sunset\"\: \"(.+?)\"
3-е поле:
$2° $3км/ч $5 $1

Прогноз погоды на 5 дней (отрывается при нажатии на Push уведомление):


1-е поле:
http://api.worldweatheronline.com/free/v2/weather.ashx?q=Moscow,RU&format=json&num_of_days=5&lang=ru&tp=24&key={id}
2-е поле:
sunrise\"\: \"(.+?)\".+?sunset\"\: \"(.+?)\".+?date\"\: \"(.+?)\".+?\«humidity\»\: \"(.+?)\".+?lang_ru.+?value\"\: \"(.+?)\".+?\«pressure\»\: \"(.+?)\".+?\«tempC\»\: \"(.+?)\".+?windspeedKmph\"\: \"(.+?)\"
3-е поле:
$3\nТемпература: $7° C $5\nДавление: $6 Па ветер: $8 км/ч влажность: $4\nРассвет в $1 и закат в $2\n\n

Город можно указать любой, написав его название на английском. Вместо {id} указывается личный идентификатор вида 77f623e3d2037315a4ae0ccc1cf91 (на сайте называется «key») полученный на сайте бесплатно и сразу после регистрации: developer.worldweatheronline.com/auth/register

И ссылка получает вид http://api.worldweatheronline.com/free/v2/weather.ashx?q=Moscow,RU&format=json&num_of_days=5&lang=ru&tp=24&key=77f623e3d2037315a4ae0ccc1cf91 (ссылка не работает из-за неверного ключа, а дана только для примера)

Анекдоты по кнопке


Получение топа 10 анекдотов лучше сделать нажатием по иконке, чтобы получать его в нужное время.

Ежедневный ТОП 10 анекдотов (отрывается при нажатии на Push уведомление):

1-е поле:
http://www.anekdot.ru/rss/export_j.xml
2-е поле:
CDATA\[(.+?)\]
3-е поле:
$1\n\n

Этим возможности программы не ограничиваются представленными запросами. При чем, информация может выводиться с помощью тех же уведомлений на умные часы. А для большего удобства по мимо автоматического включения и отключения интернета предусмотрено и автоматическое включение и отключение Bluetooth в зависимости от того отображается ли уведомление.


Также можно выводить любую информацию с любых сайтов или просто делать запросы по указанным адресам (например для открытия ворот гаража, управления светом в квартире и т.д.) и создать свой экран с иконками для выполнения запросов.

Программа в Google Play: ссылка

Если интересен данный проект, прошу поделиться регулярными выражениями (3-и строки: источник, регулярное выражение, вывод результатов).

Комментарии (13)


  1. kesn
    28.02.2016 20:02

    Выглядит круто, но у меня на android 5.1.1 вылетает


    1. vshishakin
      28.02.2016 20:06

      Вылетает когда находитесь в приложении или когда создали ярлыки? Если запускаете через ярлыки, то это нормально. Они выполняют запрос и закрываются.

      Если нет, не могли поподробнее, а лучше с видео или скриншотами в личку.


      1. kesn
        28.02.2016 20:34

        В личку с телефона неудобно… Просто само приложение не запускается, вот: http://imgur.com/1OIpXdw


        1. vshishakin
          28.02.2016 20:41

          Установите: https://play.google.com/store/apps/details?id=com.tortel.syslog

          И пришлите, пожалуйста, LOG, сделанный сразу после сбоя: feedback@engwords.net


  1. alexyr
    28.02.2016 21:33

    Первое, о чем подумалось, когда увидел фразу "поэтому я решил рассказать о использующихся регулярных выражениях и о том, как они могу упростить жизнь":
    xkcd


  1. RinNas
    28.02.2016 23:00
    +1

    Есть уже готовое моб. приложение AnyBalance, которое умеет получать информацию с более 1000 сайтов, причём исходники таких скриптов есть на Гитхабе.


    1. vshishakin
      29.02.2016 08:28

      Не спорю, что что-то есть, но делал для себя и как мне удобно.


  1. igors48
    29.02.2016 08:53
    +1

    Посмотрите в сторону XPath. Он поудобнее регулярки будет для получения контента. Есть плагины позволяющие получить XPath прямо в браузере.


    1. vshishakin
      29.02.2016 08:58

      Спасибо! Но мне с регулярками привычнее и очень нужно автоматическое включение и отключение интернета. Да и для умных часов иногда необходимо автоматическое включение Bluetooth (теряется связь, если постоянно включен BT на телефоне), чтобы уведомления получать. Например о погоде с утра. Я встаю, а у меня уже на часах прогноз погоды.


  1. flash_usb
    29.02.2016 08:58
    +2

    Думаю, стоит подкорректировать формулировки в интерфейсе, сейчас они слишком дословно переведены с русского. В английском другой порядок слов, и частица «to» здесь не нужна:

    • GET request and receive notify automatically > Make GET requests and receive notifications automatically
    • To send notifications of result GET request > Send notifications with GET request result
    • To switch on and off Wi-Fi automatically > Turn Wi-Fi on and off automatically
    • To switch on and off mobile Internet automatically > Turn mobile data connection on and off automatically
    • Switch on and off Bluetooth when displaying notification > Turn Bluetooth on and off when displaying notification
    • Run the application in the background when the devices boots to work the GET request > Run application in the background on startup to perform the requests


    1. vshishakin
      29.02.2016 09:01

      Спасибо! В следующем релизе переведу.


  1. dosbear
    29.02.2016 12:01

    Люблю регулярные выражения. Приложение для меня будет полезным. У меня 5.1.1, приложение запустилось и работает штатно.


    1. vshishakin
      29.02.2016 13:15

      Спасибо за информацию.