On-line: Haz, tnsr2, гостей 2. Всего: 4 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 250
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 12.03.21 23:18. Заголовок: Чтение ICS-формата, возможно ли?


После долгих боёв, с помощью уважаемого SergKis, мне удалось организовать считывание из csv файла в массив, который далее можно заносить в базу данных. Но выяснилась следующая проблема: Google Calendar и прочие, особенно Horde Groupware, экспортируют календари только в формате ics. А там совершенно другой формат, теговый.

Пример:
 
BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME: Test Calendar
PRODID:-//The Horde Project//Horde iCalendar Library//EN
BEGIN:VEVENT
UID:19970901T130000Z-123402@example.com
DTSTAMP:19970901T130000Z
DTSTART:19970401T163000Z
DTEND:19970402T010000Z
SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
UID:20070423T123432Z-541111@example.com
DTSTAMP:20070423T123432Z
DTSTART;VALUE=DATE:20070628
DTEND;VALUE=DATE:20070709
SUMMARY:Festival International de Jazz de Montreal
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]


постоянный участник




Пост N: 3608
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.03.21 23:38. Заголовок: Dr. Oldwarez Такой ..


Dr. Oldwarez
Такой файл читать не трудно, конкретно isc не читал, но файлы *.m3u читал с помощью oKeyData() из hmg
пример формирования dbf из m3u тут Скрытый текст

похожим образом можно прочитать тэги isc

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3609
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.03.21 00:22. Заголовок: PS примеры m3u файло..


PS
примеры m3u файлов (реальных) тут смотреть https://proiptv.top/

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 251
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 13.03.21 00:51. Заголовок: SergKis пишет: но ф..


SergKis пишет:

 цитата:
но файлы *.m3u читал с помощью oKeyData() из hmg



Спасибо. А что это за функция такая - oKeyData()? Я её в документации не видел

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3610
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.03.21 00:59. Заголовок: Dr. Oldwarez пишет А..


Dr. Oldwarez пишет
 цитата:
А что это за функция такая - oKeyData()?


см. http://clipper.borda.ru/?1-4-0-00001336-000-0-0 Пост 3580 и далее

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3611
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.03.21 01:10. Заголовок: PS Должно быть так (..


PS
Должно быть так (не понял как, но строка перепрыгнула)
 
IF "#EXTINF" $ cBuf
oBuf := oKeyData()

oBuf:EXTINF := ""
oBuf:EXTGRP := ""
oBuf:HTTP := ""
oBuf:EXTVLCOPT := ""
oBuf := oKeyData()
cTmp := subs(cBuf, At(":", cBuf)+1)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 252
Зарегистрирован: 27.07.08
ссылка на сообщение  Отправлено: 16.03.21 21:43. Заголовок: Вот так: LOCAL aBuf:..


Вот так. Теги добавляем по вкусу.
LOCAL aBuf:=hb_ATokens( hb_memoread(GetFile({{'ICAL-файл','*.ics'}},'Выберите ICAL файл для импорта',; 
cImportLW,.F.,.T.)), CRLF)
LOCAL aLen := {280,80,50,80,50,200,350}
LOCAL aHeaders:={"Subject","Start Date", "Start Time","End Date","End Time","Location","Description"},aPos
LOCAL cSubject:="",dStartDate:=CTOD(""),cStartTime:="00:00",dEndDate:=CTOD(""),cEndTime:="00:00",cLocation:="",cDescription:=""
LOCAL nRec:=Termin->(RECNO())
aDim:={}
FOR nI:=1 TO LEN(aBuf)
IF aBuf[nI]="BEGIN:VEVENT"
cSubject:=""
dStartDate:=CTOD("")
cStartTime:="00:00"
dEndDate:=CTOD("")
cEndTime:="00:00"
cLocation:=""
cDescription:=""
ENDIF
IF aBuf[nI]="DTSTART"
//aPos:=HB_ATOKENS(aBuf[nI]":")
//MsgInfo(aBuf[nI])
cDateTime:=SUBSTR(aBuf[nI],AT(":",aBuf[nI])+1)

dStartDate:=STOD(LEFT(cDateTime,8))
cStartTime:=SUBSTR(cDateTime,10,2)+":"+SUBSTR(cDateTime,12,2)
ENDIF
IF aBuf[nI]="DTEND"
cEndDateTime:=SUBSTR(aBuf[nI],AT(":",aBuf[nI])+1)
dEndDate:=STOD(LEFT(cDateTimeEnd,8))
cEndTime:=SUBSTR(cEndDateTime,10,2)+":"+SUBSTR(cEndDateTime,12,2)
ENDIF
IF aBuf[nI]="SUMMARY"
cSubject:=SUBSTR(aBuf[nI],AT(":",aBuf[nI])+1)
ENDIF
IF aBuf[nI]="LOCATION"
cLocation:=SUBSTR(aBuf[nI],AT(":",aBuf[nI])+1)
ENDIF
IF aBuf[nI]="DESCRIPTION"
cDescription:=SUBSTR(aBuf[nI],AT(":",aBuf[nI])+1)
ENDIF
IF aBuf[nI]="END:VEVENT" .AND. !DupTerm(dStartDate,cStartTime)
AADD(aDim,{cSubject,dStartDate,cStartTime,dEndDate,cEndTime,cLocation,cDescription})

ENDIF
NEXT nI
DEFINE WINDOW wndICalImport;
AT 50,0;
WIDTH 1020 HEIGHT 670;
CHILD;
TITLE "Импорт календарей ICS"
IF LEN(aDim)>0
DEFINE TBROWSE brwIcalImport;
AT 10,10;
WIDTH 950 HEIGHT 350;
GRID
brwICalImport:=SetArrayTo("brwICalImport","wndICalImport",aDim,,aHeaders,aLen)
END TBROWSE
ENDIF


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 420
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет