CRON. Календарь ежедневно сверяется с consultant.ru.
Для отслеживания изменений, можно нажать кнопку Watch. Кнопка Star даст мне знать, что репозиторий кому-то интересен и есть смысл его обновлять каждый год.
Будние дни с 2020-03-30 по 2020-05-08 - нерабочиие (карантин)
2020-06-24 - День празднования 75-й годовщины Победы в Великой Отечественной войне
2020-07-01 — День голосования по поправкам в Конституцию РФ
Все эти дни вынесены в json поле "nowork2020"
Подробно про изменения календаря в 2020 в описании к пулл реквесту #5
2013 2014 2015 2016 2017 2018 2019 2020 2021
2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
{
"holidays": [
"2017-01-01",
"2017-12-31"
],
"preholidays": [
"2017-02-22",
"2017-03-07",
"2017-11-03"
],
"nowork2020": [
"2020-03-30",
"2020-03-31",
"2020-06-24"
]
}curl -o src/main/resources/calendar.json https://raw.githubusercontent.com/d10xa/holidays-calendar/master/json/calendar.json
task downloadCalendar
downloadCalendar.doLast {
def f = file("$projectDir/src/main/resources/calendar.json")
new URL('https://raw.githubusercontent.com/d10xa/holidays-calendar/master/json/calendar.json')
.withInputStream { i -> f.withOutputStream { it << i } }
}
Исходный код страниц можно взять из браузера. Пример прямых ссылок для chrome:
view-source:https://www.superjob.ru/proizvodstvennyj_kalendar/2019/
view-source:https://www.consultant.ru/law/ref/calendar/proizvodstvennye/2019/
Как альтернативный вариант, можно использовать headless chrome:
mkdir html
export YEAR=2019
chromium --headless --disable-gpu --dump-dom "https://www.superjob.ru/proizvodstvennyj_kalendar/$YEAR" > "html/superjob$YEAR.html"
chromium --headless --disable-gpu --dump-dom "https://www.consultant.ru/law/ref/calendar/proizvodstvennye/$YEAR/" > "html/consultant$YEAR.html"
Запуск парсера superjob:
export YEAR=2019
./gradlew runSuperjob --args="--input $PWD/html/superjob$YEAR.html --output $PWD/json/superjob$YEAR.json"
Запуск парсера consultant:
export YEAR=2019
./gradlew runConsultant --args="--input $PWD/html/consultant$YEAR.html --output $PWD/json/consultant$YEAR.json"
Объединение в общий файл calendar.json
./gradlew mergeJson