[Модуль] Simple Calendar (app_calendar)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Календарь/менеджер задач

Сообщение Dark_Veter » Пт дек 26, 2014 2:06 pm

Можно попробовать парсить производственный календарь (например http://www.superjob.ru/proizvodstvennyj_kalendar/2014/), и тогда уже определять выходной день или рабочий. Давно уже думаю об этом, но пока как-то руки не дошли.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
LocalBrownie
Сообщения: 66
Зарегистрирован: Пт июл 11, 2014 11:08 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: Календарь/менеджер задач

Сообщение LocalBrownie » Пт дек 26, 2014 2:30 pm

Производственный календарь - это конечно хорошо, но зависимости возникают. Напр. зависимость от наличия интернета на момент парсинга, от авторов сайта (вдруг формат поменяют?). Этот календарь удобен для определения "плавающих" выходных - пасха, например, или перенесённых выходных. А большую часть - "стационарные" :) я бы просто вбил в систему.
Я когда-то давно писал небольшую прогу-скедуллер для запуска разных сервисов в разное время в зависимости от дня недели и от дат. Там всё организовал просто - папка с файлами расписаний для понедельника-воскресенья с именами напр. mon.txt, tue.txt и т.д. и отдельно для дат 1_1.txt, 3_8.txt (т.е первое января, 8-е марта .....)
Тут тоже можно что-то похожее сделать для "стационарных", но проще было-бы дёргать скрипт.
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Календарь/менеджер задач

Сообщение Dark_Veter » Пт дек 26, 2014 2:32 pm

Так парсить можно один раз в год, и допустим просто в календаре праздники обновлять :-). А по поводу изменения формата, это да. Хотя я уже года три пользуюсь этим календарем на работе и формат еще не изменился.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
LocalBrownie
Сообщения: 66
Зарегистрирован: Пт июл 11, 2014 11:08 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: Календарь/менеджер задач

Сообщение LocalBrownie » Пт дек 26, 2014 2:45 pm

Перенесённые выходные за год обычно никто не определяет, а насчёт формата, то я имел в виду внутренний формат html-ки. Accuweather, например раньше частенько страдал всякими мелкими изменениями, после которых парсер отказывался работать. Тег, например поменяли, а я как-раз на него опирался при поиске.
Сделать определение плавающих и перенесённых было-бы, конечно, просто замечательно, но пока не понятно как.
Посмотрим что Сергей по этому поводу скажет - может хоть стационарные встроенными средствами получится прикрутить...
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Календарь/менеджер задач

Сообщение Dark_Veter » Пт дек 26, 2014 2:51 pm

Так я насколько знаю, производственный календарь составляется на год вперед, вот сейчас например за 2015 год доступен уже. Хотя может я и ошибаюсь. Но допустим даже раз в неделю парсить можно, или раз в день. А по поводу формата я понял, я и говорю о том, что он у меня уже на работе года 3 на атс парситься при звонке, для определения рабочего дня.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
LocalBrownie
Сообщения: 66
Зарегистрирован: Пт июл 11, 2014 11:08 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: Календарь/менеджер задач

Сообщение LocalBrownie » Пт дек 26, 2014 3:04 pm

О, действительно, всё уже расписано наперед, даже переносы! Надо парсер делать! :)
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Календарь/менеджер задач

Сообщение Dark_Veter » Пт дек 26, 2014 4:28 pm

Примерно так можно распарсить, может кто исправит, написал на скорую руку.

Код: Выделить всё

$year = date('Y');
$month = getMonthName();
$day = date('d');

$url = 'http://www.superjob.ru/proizvodstvennyj_kalendar/' . $year . '/';

$result = file_get_contents($url);

preg_match_all('/<td class="pk_container">(.*)<\/td>/isU', $result, $matches, PREG_PATTERN_ORDER);

foreach ($matches[1] as $value) {
    if (strripos($value, '<div class="pk_header">' . $month . '</div>')) {
            break;
    }
}

preg_match_all('/<div class="(.?)">' . $day . '<\/div>/isU', $value, $matches, PREG_PATTERN_ORDER);

if ($matches[1][0] == '') {
    print_r('Рабочий');
}
elseif ($matches[1][0] == 'pk_holiday pie') {
    print_r('Выходной');
}
elseif ($matches[1][0] == 'pk_preholiday pie') {
    print_r('Предпраздничный');
}


function getMonthName() {
    $mN = date('m');

    $monthAr = array(
        1 => 'Январь',
        2 => 'Февраль',
        3 => 'Март',
        4 => 'Апрель',
        5 => 'Май',
        6 => 'Июнь',
        7 => 'Июль',
        8 => 'Август',
        9 => 'Сентябрь',
        10 => 'Октябрь',
        11 => 'Ноябрь',
        12 => 'Декабрь'
    );

    return $monthAr[(int) $mN];
}
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Календарь/менеджер задач

Сообщение Ivan » Вс дек 28, 2014 5:43 pm

Я скоро выложу синхронизатор гугл календаря. Прелесть его в том что можно подключать любой сторонний календарь разных празников стран итд. Там есть и производственный.
Причем формат там один и Апи гугловское. Если что то поменяют то нужно заменить только библиотеку
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
jeks0n
Сообщения: 43
Зарегистрирован: Пт дек 26, 2014 6:37 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Календарь/менеджер задач

Сообщение jeks0n » Вс дек 28, 2014 5:53 pm

Ivan писал(а):Я скоро выложу синхронизатор гугл календаря.
ждем... очень надо )
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: Календарь/менеджер задач

Сообщение Ivan » Вс дек 28, 2014 5:55 pm

Это скорей будет импорт. Еще в календаре есть категории но они не выводятся. Их какраз и буду использовать для разных календарей. Еще хочется более красивый и функциональный вывод. Чего сейчас нет :(
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Ответить