Skip to content

Instantly share code, notes, and snippets.

@ynkdir
Created December 6, 2011 16:20
Show Gist options
  • Save ynkdir/1438784 to your computer and use it in GitHub Desktop.
Save ynkdir/1438784 to your computer and use it in GitHub Desktop.
windows-live-calendar-holiday
#!vim -u
let s:calendar_list = [
\ ['アルゼンチン', 'Días festivos de Argentina', 'D%C3%ADas%20festivos%20de%20Argentina'],
\ ['オーストラリア', 'Australia Holidays', 'Australia+Holidays'],
\ ['オーストリア (ドイツ語)', 'Feiertage in Österreich', 'Feiertage%20in%20%C3%96sterreich'],
\ ['ベルギー (オランダ語)', 'Belgische feestdagen', 'Belgische+feestdagen'],
\ ['ベルギー (フランス語)', 'Calendrier des jours fériés en Belgique', 'Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20en%20Belgique'],
\ ['ブルガリア', 'Празници в България', '%D0%9F%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B8%20%D0%B2%20%D0%91%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D0%B8%D1%8F'],
\ ['ブラジル', 'Feriados no Brasil', 'Feriados+no+Brasil'],
\ ['カナダ (英語)', 'Canada Holidays', 'Canada+Holidays'],
\ ['カナダ (フランス語)', 'Calendrier des jours fériés au Canada', 'Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20au%20Canada'],
\ ['チリ', 'Días festivos de Chile', 'D%C3%ADas%20festivos%20de%20Chile'],
\ ['中国', '中国假日', '%E4%B8%AD%E5%9B%BD%E5%81%87%E6%97%A5'],
\ ['クロアチア', 'Praznici u Hrvatskoj', 'Praznici+u+Hrvatskoj'],
\ ['チェコ共和国', 'České svátky', '%C4%8Cesk%C3%A9%20sv%C3%A1tky'],
\ ['デンマーク', 'Danske helligdage', 'Danske+helligdage'],
\ ['エストニア', 'Eesti pühad', 'Eesti%20p%C3%BChad'],
\ ['フィンランド', 'Suomalaiset pyhäpäivät', 'Suomalaiset%20pyh%C3%A4p%C3%A4iv%C3%A4t'],
\ ['フランス', 'Vacances en France', 'Vacances+en+France'],
\ ['ドイツ', 'Deutsche Feiertage', 'Deutsche+Feiertage'],
\ ['ギリシャ', 'Αργίες στην Ελλάδα', '%CE%91%CF%81%CE%B3%CE%AF%CE%B5%CF%82%20%CF%83%CF%84%CE%B7%CE%BD%20%CE%95%CE%BB%CE%BB%CE%AC%CE%B4%CE%B1'],
\ ['香港', '中国假日', '%E4%B8%AD%E5%9B%BD%E5%81%87%E6%97%A5'],
\ ['ハンガリー', 'Magyar ünnepnapok', 'Magyar%20%C3%BCnnepnapok'],
\ ['インド (英語)', 'India Holidays', 'India+Holidays'],
\ ['インド (グジャラート語)', 'ભારતની રજાઓ', '%E0%AA%AD%E0%AA%BE%E0%AA%B0%E0%AA%A4%E0%AA%A8%E0%AB%80%20%E0%AA%B0%E0%AA%9C%E0%AA%BE%E0%AA%93'],
\ ['インド (ヒンズー語)', 'भारत के अवकाश', '%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4%20%E0%A4%95%E0%A5%87%20%E0%A4%85%E0%A4%B5%E0%A4%95%E0%A4%BE%E0%A4%B6'],
\ ['インド (カンナダ語)', 'ಭಾರತದ ರಜಾದಿನಗಳು', '%E0%B2%AD%E0%B2%BE%E0%B2%B0%E0%B2%A4%E0%B2%A6%20%E0%B2%B0%E0%B2%9C%E0%B2%BE%E0%B2%A6%E0%B2%BF%E0%B2%A8%E0%B2%97%E0%B2%B3%E0%B3%81'],
\ ['インド (マラヤーラム語)', 'ഇന്ത്യന്‍ അവധിദിനങ്ങള്‍', '%E0%B4%87%E0%B4%A8%E0%B5%8D%E0%B4%A4%E0%B5%8D%E0%B4%AF%E0%B4%A8%E0%B5%8D%E2%80%8D%20%E0%B4%85%E0%B4%B5%E0%B4%A7%E0%B4%BF%E0%B4%A6%E0%B4%BF%E0%B4%A8%E0%B4%99%E0%B5%8D%E0%B4%99%E0%B4%B3%E0%B5%8D%E2%80%8D'],
\ ['インド (マラーティー語)', 'भारतातील सुट्ट्या', '%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4%E0%A4%BE%E0%A4%A4%E0%A5%80%E0%A4%B2%20%E0%A4%B8%E0%A5%81%E0%A4%9F%E0%A5%8D%E0%A4%9F%E0%A5%8D%E0%A4%AF%E0%A4%BE'],
\ ['インド (タミール語)', 'இந்தியா விடுமுறைகள்', '%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%AF%E0%AE%BE%20%E0%AE%B5%E0%AE%BF%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%81%E0%AE%B1%E0%AF%88%E0%AE%95%E0%AE%B3%E0%AF%8D'],
\ ['インド (テルグ語)', 'భారతదేశ సెలవు దినాలు', '%E0%B0%AD%E0%B0%BE%E0%B0%B0%E0%B0%A4%E0%B0%A6%E0%B1%87%E0%B0%B6%20%E0%B0%B8%E0%B1%86%E0%B0%B2%E0%B0%B5%E0%B1%81%20%E0%B0%A6%E0%B0%BF%E0%B0%A8%E0%B0%BE%E0%B0%B2%E0%B1%81'],
\ ['インドネシア (英語)', 'Indonesia Holidays', 'Indonesia+Holidays'],
\ ['インドネシア (インドネシア語)', 'Hari Libur Indonesia', 'Hari+Libur+Indonesia'],
\ ['イタリア', 'Festività Italia', 'Festivit%C3%A0%20Italia'],
\ ['アイルランド', 'Ireland Holidays', 'Ireland+Holidays'],
\ ['日本', '日本の休日', '%E6%97%A5%E6%9C%AC%E3%81%AE%E4%BC%91%E6%97%A5'],
\ ['韓国', '대한민국 공휴일', '%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD+%EA%B3%B5%ED%9C%B4%EC%9D%BC'],
\ ['ラトビア', 'Latviešu svētki', 'Latvie%C5%A1u%20sv%C4%93tki'],
\ ['リトアニア', 'Lietuviškos šventės', 'Lietuvi%C5%A1kos%20%C5%A1vent%C4%97s'],
\ ['マレーシア (英語)', 'Malaysia Holidays', 'Malaysia+Holidays'],
\ ['マレーシア (マレー語)', 'Hari Kelepasan Am Malaysia', 'Hari+Kelepasan+Am+Malaysia'],
\ ['メキシコ', 'Días festivos de México', 'D%C3%ADas%20festivos%20de%20M%C3%A9xico'],
\ ['オランダ (オランダ語)', 'Nederlandse feestdagen', 'Nederlandse+feestdagen'],
\ ['ニュージーランド', 'New Zealand Holidays', 'New+Zealand+Holidays'],
\ ['ノルウェー', 'Norske helligdager', 'Norske+helligdager'],
\ ['フィリピン', 'Philippine Holidays', 'Philippine+Holidays'],
\ ['ポーランド', 'Polskie święta', 'Polskie%20%C5%9Bwi%C4%99ta'],
\ ['ポルトガル', 'Feriados em Portugal', 'Feriados+em+Portugal'],
\ ['ルーマニア', 'Sărbători din România', 'S%C4%83rb%C4%83tori%20din%20Rom%C3%A2nia'],
\ ['ロシア', 'Российские праздники', '%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B5%20%D0%BF%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8'],
\ ['セルビア語 (キリル)', 'Празници у Србији', '%D0%9F%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B8%20%D1%83%20%D0%A1%D1%80%D0%B1%D0%B8%D1%98%D0%B8'],
\ ['セルビア語 (ラテン)', 'Praznici u Srbiji', 'Praznici+u+Srbiji'],
\ ['シンガポール', 'Singapore Holidays', 'Singapore+Holidays'],
\ ['スロバキア', 'Slovenské sviatky', 'Slovensk%C3%A9%20sviatky'],
\ ['スロベニア', 'Prazniki v Sloveniji', 'Prazniki+v+Sloveniji'],
\ ['南アフリカ', 'South Africa Holidays', 'South+Africa+Holidays'],
\ ['スペイン (カタロニア語)', 'Vacances a Espanya', 'Vacances+a+Espanya'],
\ ['スペイン (スペイン語)', 'Días festivos en España', 'D%C3%ADas+festivos+en+Espa%C3%B1a'],
\ ['スウェーデン', 'Svenska helgdagar', 'Svenska+helgdagar'],
\ ['スイス (フランス語)', 'Calendrier des jours fériés en Suisse', 'Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20en%20Suisse'],
\ ['スイス (ドイツ語)', 'Feiertage in der Schweiz', 'Feiertage+in+der+Schweiz'],
\ ['タイ', 'วันหยุดของไทย', '%E0%B8%A7%E0%B8%B1%E0%B8%99%E0%B8%AB%E0%B8%A2%E0%B8%B8%E0%B8%94%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B9%84%E0%B8%97%E0%B8%A2'],
\ ['トルコ', 'Türkiye Tatil Günleri', 'T%C3%BCrkiye%20Tatil%20G%C3%BCnleri'],
\ ['ウクライナ', 'Українські свята', '%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D1%96%20%D1%81%D0%B2%D1%8F%D1%82%D0%B0'],
\ ['英国', 'UK Holidays', 'UK+Holidays'],
\ ['米国 (英語)', 'US Holidays', 'US+Holidays'],
\ ['米国 (スペイン語)', 'Días festivos en Estados Unidos', 'D%C3%ADas+festivos+en+Estados+Unidos'],
\ ['ベトナム', 'Ngày nghỉ lễ tại Việt Nam', 'Nga%CC%80y%20nghi%CC%89%20l%C3%AA%CC%83%20ta%CC%A3i%20Vi%C3%AA%CC%A3t%20Nam'],
\ ]
function! s:fetch(id)
let url = printf('https://calendar.calendar.live.com/calendar/%s/calendar.ics', a:id)
" tabnew `=url`
" for windows
" tabnew
" execute 'buffer ' . bufnr(url, 1)
" XXX: hmm, not work
let out = system('curl -k -s ' . shellescape(url))
let ics = split(out, '\r\n\|\r\|\n')
return s:parse(ics)
endfunction
" TODO: http://tools.ietf.org/html/rfc5545
function! s:parse(lines)
let events = []
for line in a:lines
if line =~ '^BEGIN:VEVENT$'
let event = {}
elseif line =~ '^END:VEVENT$'
call add(events, event)
elseif line =~ '^DTSTART;'
let _ = matchlist(line, '^DTSTART;VALUE=DATE:\(\d\{4}\)\(\d\{2}\)\(\d\{2}\)$')
let event['dtstart'] = printf('%s-%s-%s', _[1], _[2], _[3])
elseif line =~ '^SUMMARY:'
let _ = matchlist(line, '^SUMMARY:\(.*\)$')
let event['summary'] = _[1]
endif
endfor
return events
endfunction
function! s:order_by_dtstart(a, b)
let a = a:a['dtstart']
let b = a:b['dtstart']
return a < b ? -1 : a > b ? 1 : 0
endfunction
function! s:main()
for [name, id, id_escaped] in s:calendar_list
echo name
let entries = s:fetch(id_escaped)
for entry in sort(entries, 's:order_by_dtstart')
echo [entry['dtstart'], entry['summary']]
endfor
endfor
endfunction
try
call s:main()
endtry
Windows Live カレンダーヘルプセンター - 代替祝日カレンダー
http://explore.live.com/windows-live-calendar-holiday-alternative-calendars-ui
アルゼンチン,Días festivos de Argentina,D%C3%ADas%20festivos%20de%20Argentina
オーストラリア,Australia Holidays,Australia+Holidays
オーストリア (ドイツ語),Feiertage in Österreich,Feiertage%20in%20%C3%96sterreich
ベルギー (オランダ語),Belgische feestdagen,Belgische+feestdagen
ベルギー (フランス語),Calendrier des jours fériés en Belgique,Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20en%20Belgique
ブルガリア,Празници в България,%D0%9F%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B8%20%D0%B2%20%D0%91%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D0%B8%D1%8F
ブラジル,Feriados no Brasil,Feriados+no+Brasil
カナダ (英語),Canada Holidays,Canada+Holidays
カナダ (フランス語),Calendrier des jours fériés au Canada,Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20au%20Canada
チリ,Días festivos de Chile,D%C3%ADas%20festivos%20de%20Chile
中国,中国假日,%E4%B8%AD%E5%9B%BD%E5%81%87%E6%97%A5
クロアチア,Praznici u Hrvatskoj,Praznici+u+Hrvatskoj
チェコ共和国,České svátky,%C4%8Cesk%C3%A9%20sv%C3%A1tky
デンマーク,Danske helligdage,Danske+helligdage
エストニア,Eesti pühad,Eesti%20p%C3%BChad
フィンランド,Suomalaiset pyhäpäivät,Suomalaiset%20pyh%C3%A4p%C3%A4iv%C3%A4t
フランス,Vacances en France,Vacances+en+France
ドイツ,Deutsche Feiertage,Deutsche+Feiertage
ギリシャ,Αργίες στην Ελλάδα,%CE%91%CF%81%CE%B3%CE%AF%CE%B5%CF%82%20%CF%83%CF%84%CE%B7%CE%BD%20%CE%95%CE%BB%CE%BB%CE%AC%CE%B4%CE%B1
香港,中国假日,%E4%B8%AD%E5%9B%BD%E5%81%87%E6%97%A5
ハンガリー,Magyar ünnepnapok,Magyar%20%C3%BCnnepnapok
インド (英語),India Holidays,India+Holidays
インド (グジャラート語),ભારતની રજાઓ,%E0%AA%AD%E0%AA%BE%E0%AA%B0%E0%AA%A4%E0%AA%A8%E0%AB%80%20%E0%AA%B0%E0%AA%9C%E0%AA%BE%E0%AA%93
インド (ヒンズー語),भारत के अवकाश,%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4%20%E0%A4%95%E0%A5%87%20%E0%A4%85%E0%A4%B5%E0%A4%95%E0%A4%BE%E0%A4%B6
インド (カンナダ語),ಭಾರತದ ರಜಾದಿನಗಳು,%E0%B2%AD%E0%B2%BE%E0%B2%B0%E0%B2%A4%E0%B2%A6%20%E0%B2%B0%E0%B2%9C%E0%B2%BE%E0%B2%A6%E0%B2%BF%E0%B2%A8%E0%B2%97%E0%B2%B3%E0%B3%81
インド (マラヤーラム語),ഇന്ത്യന്‍ അവധിദിനങ്ങള്‍,%E0%B4%87%E0%B4%A8%E0%B5%8D%E0%B4%A4%E0%B5%8D%E0%B4%AF%E0%B4%A8%E0%B5%8D%E2%80%8D%20%E0%B4%85%E0%B4%B5%E0%B4%A7%E0%B4%BF%E0%B4%A6%E0%B4%BF%E0%B4%A8%E0%B4%99%E0%B5%8D%E0%B4%99%E0%B4%B3%E0%B5%8D%E2%80%8D
インド (マラーティー語),भारतातील सुट्ट्या,%E0%A4%AD%E0%A4%BE%E0%A4%B0%E0%A4%A4%E0%A4%BE%E0%A4%A4%E0%A5%80%E0%A4%B2%20%E0%A4%B8%E0%A5%81%E0%A4%9F%E0%A5%8D%E0%A4%9F%E0%A5%8D%E0%A4%AF%E0%A4%BE
インド (タミール語),இந்தியா விடுமுறைகள்,%E0%AE%87%E0%AE%A8%E0%AF%8D%E0%AE%A4%E0%AE%BF%E0%AE%AF%E0%AE%BE%20%E0%AE%B5%E0%AE%BF%E0%AE%9F%E0%AF%81%E0%AE%AE%E0%AF%81%E0%AE%B1%E0%AF%88%E0%AE%95%E0%AE%B3%E0%AF%8D
インド (テルグ語),భారతదేశ సెలవు దినాలు,%E0%B0%AD%E0%B0%BE%E0%B0%B0%E0%B0%A4%E0%B0%A6%E0%B1%87%E0%B0%B6%20%E0%B0%B8%E0%B1%86%E0%B0%B2%E0%B0%B5%E0%B1%81%20%E0%B0%A6%E0%B0%BF%E0%B0%A8%E0%B0%BE%E0%B0%B2%E0%B1%81
インドネシア (英語),Indonesia Holidays,Indonesia+Holidays
インドネシア (インドネシア語),Hari Libur Indonesia,Hari+Libur+Indonesia
イタリア,Festività Italia,Festivit%C3%A0%20Italia
アイルランド,Ireland Holidays,Ireland+Holidays
日本,日本の休日,%E6%97%A5%E6%9C%AC%E3%81%AE%E4%BC%91%E6%97%A5
韓国,대한민국 공휴일,%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD+%EA%B3%B5%ED%9C%B4%EC%9D%BC
ラトビア,Latviešu svētki,Latvie%C5%A1u%20sv%C4%93tki
リトアニア,Lietuviškos šventės,Lietuvi%C5%A1kos%20%C5%A1vent%C4%97s
マレーシア (英語),Malaysia Holidays,Malaysia+Holidays
マレーシア (マレー語),Hari Kelepasan Am Malaysia,Hari+Kelepasan+Am+Malaysia
メキシコ,Días festivos de México,D%C3%ADas%20festivos%20de%20M%C3%A9xico
オランダ (オランダ語),Nederlandse feestdagen,Nederlandse+feestdagen
ニュージーランド,New Zealand Holidays,New+Zealand+Holidays
ノルウェー,Norske helligdager,Norske+helligdager
フィリピン,Philippine Holidays,Philippine+Holidays
ポーランド,Polskie święta,Polskie%20%C5%9Bwi%C4%99ta
ポルトガル,Feriados em Portugal,Feriados+em+Portugal
ルーマニア,Sărbători din România,S%C4%83rb%C4%83tori%20din%20Rom%C3%A2nia
ロシア,Российские праздники,%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B5%20%D0%BF%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8
セルビア語 (キリル),Празници у Србији,%D0%9F%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B8%20%D1%83%20%D0%A1%D1%80%D0%B1%D0%B8%D1%98%D0%B8
セルビア語 (ラテン),Praznici u Srbiji,Praznici+u+Srbiji
シンガポール,Singapore Holidays,Singapore+Holidays
スロバキア,Slovenské sviatky,Slovensk%C3%A9%20sviatky
スロベニア,Prazniki v Sloveniji,Prazniki+v+Sloveniji
南アフリカ,South Africa Holidays,South+Africa+Holidays
スペイン (カタロニア語),Vacances a Espanya,Vacances+a+Espanya
スペイン (スペイン語),Días festivos en España,D%C3%ADas+festivos+en+Espa%C3%B1a
スウェーデン,Svenska helgdagar,Svenska+helgdagar
スイス (フランス語),Calendrier des jours fériés en Suisse,Calendrier%20des%20jours%20f%C3%A9ri%C3%A9s%20en%20Suisse
スイス (ドイツ語),Feiertage in der Schweiz,Feiertage+in+der+Schweiz
タイ,วันหยุดของไทย,%E0%B8%A7%E0%B8%B1%E0%B8%99%E0%B8%AB%E0%B8%A2%E0%B8%B8%E0%B8%94%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B9%84%E0%B8%97%E0%B8%A2
トルコ,Türkiye Tatil Günleri,T%C3%BCrkiye%20Tatil%20G%C3%BCnleri
ウクライナ,Українські свята,%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D1%96%20%D1%81%D0%B2%D1%8F%D1%82%D0%B0
英国,UK Holidays,UK+Holidays
米国 (英語),US Holidays,US+Holidays
米国 (スペイン語),Días festivos en Estados Unidos,D%C3%ADas+festivos+en+Estados+Unidos
ベトナム,Ngày nghỉ lễ tại Việt Nam,Nga%CC%80y%20nghi%CC%89%20l%C3%AA%CC%83%20ta%CC%A3i%20Vi%C3%AA%CC%A3t%20Nam
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment