TDE personal information management applications
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

128 lines
3.3 KiB

  1. #! /usr/bin/perl
  2. # mig_knotes.pl
  3. # Dieses Programm erzeugt aus einem notes.ics- file (KDE >3)
  4. # pro Note eine Datei (KDE <3).
  5. #
  6. # Der ics- File beinhaltet die Abschnitte "Description" (=Notizen)
  7. # und "Summary" (=Titel der Note)
  8. #
  9. # Es wird pro Note ein file .KNotes *n*_data (Notizen) sowie
  10. # KNote*n* (Steuerdatei) erzeugt.
  11. #
  12. # Das Programm ist "auf die Schnelle" geschrieben.
  13. # Es ist nicht empfehlenswert -w oder :use_strict einzuschalten.
  14. #
  15. # Wer es benutzt und Verbesserungen vornimmt, kann mir freundlicherweise
  16. # eine Kopie schicken.
  17. #
  18. # chaeffne@web.de, Mai 2005
  19. #
  20. #
  21. #
  22. # Folgende Pfade muessen individuell gesetzt werden:
  23. $imp = "/pfad/zum/importfile/notes.ics"; # Importfile
  24. $verz = "/pfad/zum/export-verzeichnis/tmp"; # Exportverzeichnis
  25. $steuerdatei = "/pfad/zu/einer/steuerdatei/KNote"; # KNotes- Steuerdatei KDE <3;
  26. # wird als Vorlage fuer
  27. # die neuen verwendet.
  28. ####################################
  29. # Beginn des Programms #############
  30. ####################################
  31. #
  32. # 1. Abschnitt
  33. # In diesem Abschnitt werden die "Descriptions" in notes.ics gezaehlt (=Dateianzahl),
  34. # die Anfangs- und Endzeile der Description bestimmt, sowie der Titel der
  35. # Notes (=Summary) extrahiert.
  36. open (IMP,"$imp");
  37. $zz = 1; #Zeilenzaehler
  38. $fc = 1; #Filecounter
  39. while ($_ = <IMP>){
  40. $all{$zz} = $_; # alle Zeilen in ein assoziatives Array schreiben
  41. if ($_ =~ /^DESCRIPTION/){ # Nach "Description" am Anfang suchen
  42. $anfang{$fc} = $zz; # Anfang: Ein Wertepaearchen aus filecounter und Zeilenzaehler erzeugen
  43. }
  44. elsif ($_ =~ /^SUMMARY/){ # Nach Summary am Anfang suchen
  45. $ende{$fc} = $zz-1; # Ende: Ein Wertepaearchen aus filecounter und Zeilenzaehler erzeugen
  46. $ttt = $_; # Titel
  47. $ttt =~ s/SUMMARY://;
  48. $title{$fc} = $ttt; # Den aktuellen Titel mit dem filecounter assozieren
  49. $fc++;
  50. }
  51. $zz++;
  52. } # Ende 1. Abschnitt
  53. close(IMP);
  54. # 2. Abschnitt
  55. #
  56. # In diesem Abschnitt werden die Files erzeugt und die oben gewonnenen Daten verarbeitet.
  57. $fc2 = 1; # filecounter2
  58. while ($fc2 <= $fc) {
  59. # Datendatei (= Notiz)
  60. $filename = "$verz/.KNote ".$fc2."_data";
  61. open(EXP,">$filename");
  62. $zz = 0;
  63. $anzahl = $ende{$fc2}-$anfang{$fc2}; # Anzahl der Zeilen
  64. while ($zz <= $anzahl) { # fuer alle betroffenen Zeilen durchlaufen
  65. $line = $all{$anfang{$fc2}+$zz}; # die aktuelle Zeile
  66. $line =~ chop($line); # letztes Zeichen (=new line) abschneiden
  67. $line =~ s/DESCRIPTION://; # das Wort rausschneiden
  68. @line = split(/\\n/,$line); # die Zeile nach new lines teilen (=Steuerzeichen im ics-file)
  69. $anz = @line; # die Anzahl im array
  70. $zz2 = 1;
  71. foreach $nl(@line) { # fuer jeden Wert im Array
  72. $nl =~ s/\\t/ /g;# Tabs durch Leerzeichen ersetzen
  73. $nl =~ s/\\//g;# \ (als Escape verwendet zB. vor ",;") entfernen
  74. # eine neue Zeile?
  75. if ( $zz2 < $anz or $anz == 1 ) {
  76. print EXP "$nl<br>";
  77. }
  78. else {
  79. print EXP $nl;
  80. }
  81. $zz2++;
  82. }
  83. $zz++;
  84. }
  85. # Steuerdatei
  86. $filename2 = "$verz/KNote ".$fc2;
  87. open (IMP2,"$steuerdatei");
  88. # eine Beispieldatei, die fuer alle Notes verwendet wird.
  89. open(EXP2,">$filename2");
  90. while ($_ = <IMP2>) {
  91. if ($_ =~ /^name/) {
  92. print EXP2 "name=$title{$fc2}\n";
  93. }
  94. else{
  95. print EXP2 $_;
  96. }
  97. }
  98. $fc2++;
  99. } # Ende 2. Abschnitt
  100. close(EXP);
  101. close(EXP2);
  102. close(IMP2);
  103. # Ende mig_knotes.pl