Hallo Gemeinde und ein besonderes Hallo an die C-Spezialisten,
kurz zur Geschichte : ich habe hier zwei SAT-HDD-Receiver stehen auf dem regelmäßig aufgenommen wird. Von Zeit zu Zeit sammeln sich dort Filme, die gern auslagen möchte. Es sind beides die gleichen Receiver, nur die Software ist leicht unterschiedlich und erzeugen auch ein anderes Mata-File. Für den Receiver1 wurde mir mal geholfen und da funktioniert auch die Ausgabe in eine Datei (siehe Muster). Das auslesen der Datei META.DAT übernimmt ein C-Programm und wird von einer bash aufgerufen und aufbereitet.
hier ein Muster
========================================================================================================================= Lft# Verzeichnis Sender Film Aufnahme zeit und Datum ========================================================================================================================= 1 REC_0007 SAT.1 Harry Potter und die Heiligt�me date: 2018-12-09 time: 14:04 (UTC) 2 REC_0102 ProSieben Galileo date: 2019-01-30 time: 18:00 (UTC) 3 REC_0035 ProSieben NEWSTIME date: 2019-02-13 time: 16:55 (UTC)
für Receiver2 bekommen ich das ich Datum und Zeit nicht hin. Als I-Tüpfelchen wäre noch die Spielzeit (Filmlänge). Wenn das jemand hin bekommt.
hier das kleine C-Programm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | #include <stdbool.h> #include <stdint.h> #include <stdio.h> bool read_null_string(FILE *fp, char *target, size_t sz) { int read; size_t i; for (i = 0; (read = fgetc(fp)) != EOF && read != 0; i++) { if (i == sz - 1) { fprintf(stderr, "read_null_string: Exceeded buffer\n"); return false; } target[i] = read; } i++; target[i] = 0; return true; } int main(int argc, char **argv) { FILE *fp; char station[512] = "", title[512] = ""; uint16_t year; uint8_t month, day; uint8_t utc_hour, minute; if (argc != 2) { fprintf(stderr, "Usage: %s <meta.dat>\n", argv[0]); return 1; } fp = fopen(argv[1], "r"); if (!fp) { fprintf(stderr, "Cannot open file '%s': ", argv[1]); perror(NULL); return 1; } /* Read station */ if (fseek(fp, 13, SEEK_SET) == -1) { perror("Cannot seek to station"); fclose(fp); return 1; } if (!read_null_string(fp, station, sizeof station)) { fclose(fp); return 1; } /* Read movie title */ if (fseek(fp, 0x95, SEEK_SET) == -1) { perror("Cannot seek to title"); fclose(fp); return 1; } if (!read_null_string(fp, title, sizeof title)) { fclose(fp); return 1; } /* Read date */ if (fseek(fp, 0xD8, SEEK_SET) == -1) { perror("Cannot seek to year"); fclose(fp); return 1; } if (fread(&year, 2, 1, fp) != 1) { perror("Cannot read year"); fclose(fp); return 1; } if (fread(&month, 1, 1, fp) != 1) { perror("Cannot read month"); fclose(fp); return 1; } if (fread(&day, 1, 1, fp) != 1) { perror("Cannot read day"); fclose(fp); return 1; } /* Read time (UTC) */ if (fseek(fp, 0xD4, SEEK_SET) == -1) { perror("Cannot seek to hour"); fclose(fp); return 1; } if (fread(&utc_hour, 1, 1, fp) != 1) { perror("Cannot read hour"); fclose(fp); return 1; } if (fread(&minute, 1, 1, fp) != 1) { perror("Cannot read minute"); fclose(fp); return 1; } /* Dump all information */ printf("%-29s", station); printf("%-38s", title); printf("date: %04d-%02d-%02d ", year, month, day); printf("time: %02d:%02d (UTC)\n", utc_hour, minute); fclose(fp); return 0; } |
von Receiver1 der hexdump
heike@heike-Satellite-C660D:~$ hexdump -C /media/heike/RECEIVER2/PVR/REC_0007/META.DAT 00000000 05 00 72 6a 02 00 00 00 00 00 00 00 0a 53 41 54 |..rj.........SAT| 00000010 2e 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.1..............| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5c 44 |..............\D| 00000030 f9 07 ff 00 02 00 00 00 00 00 00 00 02 00 00 00 |................| 00000040 00 01 00 00 72 65 67 02 03 21 00 00 72 65 67 02 |....reg..!..reg.| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000080 20 00 00 00 01 00 00 00 01 00 00 00 06 00 0f 00 | ...............| 00000090 00 04 00 00 0a 48 61 72 72 79 20 50 6f 74 74 65 |.....Harry Potte| 000000a0 72 20 75 6e 64 20 64 69 65 20 48 65 69 6c 69 67 |r und die Heilig| 000000b0 74 fc 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 |t.me............| 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000d0 00 00 00 00 0e 04 00 00 e2 07 0c 09 07 00 00 00 |................| 000000e0 d0 bf 00 00 02 1e 23 00 01 00 00 00 d2 07 00 00 |......#.........| 000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000110 00 00 00 00 01 00 00 00 72 02 05 00 |........r...| 0000011c heike@heike-Satellite-C660D:~$
des Verzeichnis vor Receiver1
heike@heike-Satellite-C660D:~$ ls --full-time --time-style=+"am %d.%m.%y um %H:%M:%S Uhr" /media/heike/RECEIVER2/PVR/REC_0007 insgesamt 4615872 -rw-r--r-- 1 heike heike 284 am 07.02.19 um 23:01:38 Uhr META.DAT -rw-r--r-- 1 heike heike 2147471360 am 09.12.18 um 18:23:04 Uhr REC.01 -rw-r--r-- 1 heike heike 431611904 am 09.12.18 um 18:34:36 Uhr REC.02 -rw-r--r-- 1 heike heike 4 am 07.02.19 um 23:01:38 Uhr REC.BM -rw-r--r-- 1 heike heike 0 am 07.02.19 um 23:01:38 Uhr REC.CP -rw-r--r-- 1 heike heike 2147471360 am 09.12.18 um 18:34:36 Uhr REC.TS heike@heike-Satellite-C660D:~$
und hier die angaben zu Receiver2
hexdump -C REC_0107/META.DAT 00000000 05 00 72 6a 02 00 00 00 02 00 00 00 00 00 01 00 |..rj............| 00000010 00 00 00 00 02 44 61 73 20 45 72 73 74 65 00 00 |.....Das Erste..| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 02 41 52 44 00 00 00 00 00 00 |.......ARD......| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 ca 6d 00 00 cb 00 01 00 |.........m......| 00000060 65 00 02 01 00 00 00 00 03 00 00 00 66 00 00 00 |e...........f...| 00000070 72 65 67 01 02 00 00 00 67 00 00 00 73 69 6d 01 |reg.....g...sim.| 00000080 04 00 00 00 6a 20 00 00 72 65 67 01 11 52 00 00 |....j ..reg..R..| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 68 20 00 00 |............h ..| 000000d0 01 00 00 00 01 00 00 00 01 00 0f 00 00 00 01 00 |................| 000000e0 0a 44 69 65 20 44 72 65 69 20 76 6f 6e 20 64 65 |.Die Drei von de| 000000f0 72 20 4d fc 6c 6c 61 62 66 75 68 72 20 2d 20 44 |r M.llabfuhr - D| 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000120 13 10 05 00 e3 07 03 1d 05 00 00 00 90 11 01 00 |................| 00000130 01 22 35 00 01 00 00 00 ff ff ff ff 00 00 00 00 |."5.............| 00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000160 01 00 00 00 c8 00 05 00 |........| 00000168Liste:
102 REC_0107 Das Erste Die Drei von der M�llabfuhr - D date: 0000-00-00 time: 01:00 (UTC)Verzeichnis:
ls --full-time --time-style=+"am %d.%m.%y um %H:%M:%S Uhr" insgesamt 6583104 -rw-r--r-- 1 jochen jochen 360 am 29.03.19 um 22:51:00 Uhr META.DAT -rw-r--r-- 1 jochen jochen 2147471360 am 29.03.19 um 22:16:34 Uhr REC.01 -rw-r--r-- 1 jochen jochen 2147471360 am 29.03.19 um 22:46:48 Uhr REC.02 -rw-r--r-- 1 jochen jochen 298586112 am 29.03.19 um 22:51:00 Uhr REC.03 -rw-r--r-- 1 jochen jochen 2147471360 am 29.03.19 um 22:51:00 Uhr REC.TSLaut Anzeige der Receiver : 29.01. 20:26 vermute das Zeit der Dateiliste die Zeit ist beim Ende des Schreibvorganges.
Dauer 01:34:54 (am Reveiver abgelesen wird mir am Rechner amer nicht angezeigt) diese ist noch nicht mit eingearbeitet, aber jemand diese findet.
Hoffe hier kann noch mal jemand helfen.
Danke und Gruß Jochen