Jump to content

Wiederholungszähler für die Aufnahme


juf

Recommended Posts

Hallo,

 

ich arbeit mit dem DVBViewer GE 1.6.

Ich nutze den Recorder vorwiegend um Trickfilme für meine Tochter aufzuzeichnen.

Es wäre schön, wenn ich neben der Einstellung Wiederholung auch noch sagen könnte

nach x Wiederholungen (Wochen) ist Schluß.

So müßte ich nicht wenn ich mal einen Woche nicht da bin, alle Filme durchsehen

und es würde auch Festplattenplatz sparen.

 

Nur mal so ein Gedanke.

 

Danke, Ihre leistet gute Arbeit.

MfG

JUF

Link to comment

Ich würde mal behaupten, dass solche eine Funktion (wenn überhaupt) eher in der Pro umgesetzt werden würde als in der GE, da die GE keine Datenbankverwaltung für die Medien/Aufnahmen hat.

 

Ich hab mir auch schonmal ähnliche Gedanken gemacht und eine Beta für einen "TimerManager" gebastelt, der die Festplatte für "wichtige" Aufnahmen sauber hält. Fand nicht viel Response, deswegen habe ich da erstmal nur für mich persönlich weitergebastelt. Wenn allerdings gute Tipps und Hinweise kämen, könnte ich das Ding vielleicht noch ein bisschen aufmotzen :bye:

 

http://www.DVBViewer.com/forum/index.php?showtopic=8557

Link to comment

Ich schließe mich an!

 

Das dürfte auch in der kein Prob sein, wird halt in diew Ini - geschrieben, wie oft noch und bei jedem Aufnahmstart eins abgezogen :bye: !.

 

Torben

Link to comment

Hallo Griga,

 

z.B. Wenn ProSieben immer Dienstag Abends zur gleichen Zeit die Starwars Reihe sendet (oder Kabel 1 das Star Trek - Zeugs).

 

Man programmiert dann eine sich sechs, sieben, fünf mal wiederholende Serie, wobei man beachtet, dass man genug Pufferzeit zum Abfangen der um etwa 3 Minuten unterschiedlichen Endzeiten har.

 

Oder ZDF Expedition.

 

Oder eine Serie mit 52 Folgen, die nuir wochentags gesendet wird.

 

Ich bitte dich, den Feauter Wunsch an zu erkkenen.

 

Das zu Programmieren, stellt meiner Ansicht nach kein Problem fdar.

 

Torben

Link to comment

Worin soll der Vorteil eines im Voraus festgelegten Zählers gegenüber dem einfachen Deaktivieren der wiederholten Aufnahme zum richtigen Zeitpunkt liegen?

 

Meine Erfahrung ist: Je weiter etwas vorausgeplant wird, um so mehr Angriffsfläche bietet es für die Wechselfälle des Lebens...

Link to comment

Hallo Griga,

 

man könnte sich so das Löschen/Deaktiviren der periodischen Aufnahmen erspaaren :bye: !

 

Manuelle Eingriffe können ja trotzdem vorgenommen werden.

 

Und wenn man nicht so viel Platz auf der Platte hat und mal 6 Wochen in den Urlaub fährt und man nur die ersten zwei Wochen ne periodische Aufnahme ham will, damit noch genügend Platz für Aufnahmen in den anderen 4 Wochen ist...

 

Bitte, bitte, bitte programmier es!

 

Torben

Link to comment

Moin!

Ich finde, daß das ein sinnvolles Feature wäre. Es muß nicht unbedingt ein Zähler sein, ich fände ein Verfallsdatum für eine wiederholte Aufnahme sinnvoller. Gerade für die angesprochene Urlaubssituation (besonders um Weihnachten) wäre das optimal, um sich 1000 und 1 einzelne Aufnahme zu sparen.

 

Tschau,

Michael

Link to comment
man könnte sich so das Löschen/Deaktiviren der periodischen Aufnahmen erspaaren

 

Dafür muss man vorausschauend den Zähler programmieren. Wo ist da der Gewinn?

 

und man nur die ersten zwei Wochen ne periodische Aufnahme ham will

 

Dann programmiert man halt zwei einzelne Aufnahmen ohne Wiederholung. Einmal das Datum ändern, Hinzufügen klicken und fertig.

 

Überzeugt mich alles nicht. Scheint eine dieser "Komfortfunktionen" zu sein, durch deren Anhäufung man das beste Programm ruinieren kann.

Link to comment
Guest Lars_MQ
Scheint eine dieser "Komfortfunktionen" zu sein, durch deren Anhäufung man das beste Programm ruinieren kann.

;)

 

dann gib mir den Quellcode und lass mich es programmiren!

Da ist er:

10 Print "Hallo"
20 GoTo 10

:bye:

Link to comment

Eine kleine Erklärung zu meinem obigen Script (unabhängig ob es noch mit bugs gespickt ist :bye: ):

 

Es ist damit möglich jedem Timer eine Priorität zuzuweisen, die in Form der Timer-Description (Beschreibung) offensichtlich gespeichert wird (1-9). Diese Timer-Description wird i.d.R. mit in den Dateinamen geschrieben.

 

Beim Aufnahme-Start wird (soweit vorhanden) die Datei startrec.vbs ausgeführt, die wiederum ein größeres Script startet, welches:

 

- Die Priorität der gerade gestarteten Aufnahme vergleicht mit der Priorität der bereits aufgenommenen Dateien, ist die Priorität der neuen Aufnahme größer und kein Speicher vorhanden, so wird eine alte Datei automatisch gelöscht.

- Anhand der Priorität der vorhanden Dateien und des Datums diese löschen kann, wenn eine bestimmte Grenze überschritten ist (Priorität 1 = 1Tag x Multiplikator Haltbarkeit)

 

@Torben:

Mit ein bisschen Programmierkenntnissen müsstest Du dir doch selbst etwas schreiben können, was überprüft, wieviel Dateien mit ähnlichem Inhalt (z.b. "StarTrek") in einem Verzeichnis vorhanden sind, und die ältesten von denen beim Überschreiten einer gewissen Anzahl (von Dateien oder Tagen) dann löscht?!?

Sowas ist sogar mit nem Script zu lösen, da dürftest Du doch mit Delphi keine Problem haben ;)

Link to comment

Ich will aber kein Dingens, sondern ne Funktion im GE :bye: wie andere auch.

 

Natürlich ist das kein Problem, aber irgendwie ein wenig umständlicher. Außerdem müsste ich ja dann wissen, wie die Aufnahmen in der Setup.ini abgespeichert werden (TINI, ok, aber das Format???) um sie zu manipulieren.

Also bei 6 vorhandenen Dateien den Eintrag löschen.

 

Torben

Link to comment
Ich finde, daß das ein sinnvolles Feature wäre. Es muß nicht unbedingt ein Zähler sein, ich fände ein Verfallsdatum für eine wiederholte Aufnahme sinnvoller.

Hast Du Dir schon einmal das TVInfo-Plugin angesehen? Auf tvinfo.de kannst Du Dir dann die Sendungen raussuchen, die Du aufnehmen möchtest und mit dem Plugin diese Daten abgreifen. DAS war mal eine sinnvolle Idee!

Link to comment

Um mal bei der Sache zu bleiben:

 

procedure onStartRecording
begin
//Parameter übergeben, weiterschalten, INI öffnen + auslesen (TIni; nenn ich jetz mal Setup)
nochAufnahmen := nochAufnahmen - 1 //BVariable aus der INI
Setup.write(//aktuelle Aufnahme);
end;

 

Nix BASIC, Delphi

 

Torben

 

PS:

program Project1;

uses
 Dialogs;

{$R *.res}

begin
 repeat
   showmessage('Hallo');
 until false;
end.

Link to comment
Ich will aber kein Dingens, sondern ne Funktion im GE wie andere auch.

 

ich glaube du bist nur zu faul, dir ernsthafte gedanken zu machen. Wie wäre es, wenn Du zur Abwechslung mal was produktives hier postest, Anreize und verbesserungswünsche hast du ja anscheinend genug!

Und wenn das Plugin/Addon dann wie gewünscht funktioniert, kann sich Griga ja immer noch mit einer Integration beschäftigen, wenn Deine Ansätze gut sind :bye:

Link to comment

OK, das Format. Von links nach rechts werden in der Section [VCR] durch Semikolon getrennt folgende Datenfelder gespeichert (gilt nur für die GE!):

 

- Beschreibung bzw. Titel (String)

- Sender-ID, bestehend aus 65536 x Audio-PID + ServiceID|Sendername

- Datum als TT.MM.JJJJ

- Anfangszeit als HH:MM:SS

- Endzeit als HH:MM:SS

- Aktion nach der Aufnahme (0..5, = Index des Eintrags in der Dropdownliste)

- Unused (immer = 0, aus Kompatibilitätsgründen drin).

- Aufnahmeart (0..3, = Index des Eintrags in der Dropdownliste)

- Aufnahmetage (0..255, binär in einem Byte kodiert)

- Aktivierung (0 = deaktiviert, 1 = aktiviert)

 

Anmerkungen:

 

Wenn die Endzeit vor der Anfangszeit liegt, überschreitet die Aufnahme Mitternacht

 

Die Aufnahmetage werden bitweise gespeichert, gemäß der folgenden Konstantendeklaration:

 

const
 binMonday = $01;
 binTuesday = $02;
 binWednesday = $04;
 binThursday = $08;
 binFriday = $10;
 binSaturday = $20;
 binSunday = $40;
 binRepeat = $80;

 

Ein gesetztes Bit 7 (= binRepeat) markiert die aktivierte wöchentliche Wiederholung.

 

Nützlich sind die folgenden beiden Aufrufe. Der erste veranlasst den DVBViewer GE während des laufenden Betriebs, die gesamte Setup.ini neu zu schreiben (bzw. zu aktualisieren). Der zweite lässt den DVBViewer GE die Setup.ini lesen, und zwar nur die Rekorder-Einträge. Alles andere wird ignoriert.

 

const
 WM_DVBVIEWER = $B2C2;
 MSG_INILOAD = $1020;
 MSG_INISAVE = $1021;

var
 Handle: Integer;

begin
 Handle := FindWindow(nil,'DVBViewer');
 if Handle <> 0 then
 begin
   PostMessage(Handle,WM_DVBVIEWER,MSG_INISAVE,0);
   PostMessage(Handle,WM_DVBVIEWER,MSG_INILOAD,0);
 end;
end.

 

Diesen Mechanismus benutzt das TVGenial-Plugin, um Timeraufnahmen in die Setup.ini zu patchen.

 

Ich hoffe, damit ist Torben erst mal eine Weile beschäftigt :bye:

Link to comment

Hallo Griga,

 

erstmal danke für den Code. Ich hab jetzt zwei Wochen Ferien und viel Zeit zum programmieren.

 

Torben

 

EDIT:

 

Projekt = Rekorderprogrammierung als externe Anwendung

 

mit:

-Wiederholungszähler

-Kanalnummerneingabe, dazu brauch ich allerdings noch den Lade- und Zugriffsvorrgang für die Channels.dat (bitte in Deutsch (Kommentare))

-allen jetzt schon vorhandenen Feautures

-einer von Griga verlangeten Lizenzgebühr?

 

Ich bin bereit und willens dieses Projekt in Angriff zu nehmen. Da ich Delphi als Hobby betreibe möchte ich kein Geld dafür verlangen. Was Griga macht, werden wir noch sehen. Daher bitte ich Griga um die benötigten Sources euch um eutre Meinung. Sobald die erste Beta fertig ist, wird sie (wenn keine Lizenzgebühr für den Code von Griga fällig ist) hier zur Verfügung gestellt

 

@Griga:

- Beschreibung bzw. Titel (String)

- Sender-ID, bestehend aus 65536 x Audio-PID + ServiceID|Sendername

- Datum als TT.MM.JJJJ

- Anfangszeit als HH:MM:SS

- Endzeit als HH:MM:SS

- Aktion nach der Aufnahme (0..5, = Index des Eintrags in der Dropdownliste)

- Unused (immer = 0, aus Kompatibilitätsgründen drin).

- Aufnahmeart (0..3, = Index des Eintrags in der Dropdownliste)

- Aufnahmetage (0..255, binär in einem Byte kodiert)

- Aktivierung (0 = deaktiviert, 1 = aktiviert)

- Noch Aufnahmen (int64 :bye: )

 

Wenn das Schema so aussähe, würde der GE beim weiterschalten die letzte Zahl unberührt lassen. Falls das nicht so ist, oder dadurch Probs mit irgendwelchen Programmen (Sheduler, TVGenial) auftreten, blase ich die Sache ab, es sei denn du würdest einen Aufrufbefehl für das Prog einbauen, sobald sich an der RecProg irgendwas ändert!

Edited by Pfaff_Torben
Link to comment
dazu brauch ich allerdings noch den Lade- und Zugriffsvorrgang für die Channels.dat (bitte in Deutsch (Kommentare))

 

Du wirst wohl oder übel ausreichend Englisch lernen müssen. Ohne dies hast du als Programmierer ohnehin keine Chance. Du glaubst doch nicht im Ernst, dass ich mich jetzt hinsetze und das für dich übersetze? Bin ich etwa der Babelfisch?

Link to comment

Wer ist der Babelfisch?

 

Tja, dass kann man halt nur die Bezeichnung, das Datum, die Zeiten und die Wiederholungsgeschiche einstellen?

 

Wie sieht es mit dem zusätzlichen Eintrag aus?

Link to comment

Hallo Griga,

 

ich hab jetzt schon eine sehr konkrete Vorstellung wie das Ding funktioniren soll. Allerdings müsste ich wissen ob beim folgenden VCR - Schema in der Setup.ini Probleme auftreten und ob der letzte Eintag nicht überschrieben, gelöscht, etc. wird.

 

Ups :bye: hatte vergessen das Profil anzugeben

 

- Beschreibung bzw. Titel (String)

- Sender-ID, bestehend aus 65536 x Audio-PID + ServiceID|Sendername

- Datum als TT.MM.JJJJ

- Anfangszeit als HH:MM:SS

- Endzeit als HH:MM:SS

- Aktion nach der Aufnahme (0..5, = Index des Eintrags in der Dropdownliste)

- Unused (immer = 0, aus Kompatibilitätsgründen drin).

- Aufnahmeart (0..3, = Index des Eintrags in der Dropdownliste)

- Aufnahmetage (0..255, binär in einem Byte kodiert)

- Aktivierung (0 = deaktiviert, 1 = aktiviert)

- Noch Aufnahmen (int64 )

 

Ich warte auf deine Antwort!

 

Torben

 

PS:

Nen Babelfisch werd ich mir als Haustier zulegen ;)

 

EDIT:

Wie soll man den programmieren, wenn man die benötigten Informationen nicht bekommt???

 

EDIT2:

So, mir reicht es! Ich geb das Projekt jetzt auf, weil ich absolut keine Unterstützung erhalte. Ich für meinen Teil hag 200 GB Platz für Aufnahmen und dafür kein Geld für Urlaub. Sollen das doch andere machen, ich brauch den Zähler jedenfals nicht mehr!!!

@Griga

Ich wäre bereit einfache Verbesserungswünsche in die GE einzubauen. Dazu bräuchte ich allerdings den Quellcodedas zu verbessernden Programmteils!

 

EDIT3:

EDIT := IGNORE, I'm at programming with the fully of my heart!

Edited by Pfaff_Torben
Link to comment
Guest Lars_MQ

Alles was Du benötigst hat griga Dir an die Hand gegeben. Wenn er sich jetzt noch daneben setzen muss, weil Dir das nötige wissen fehlt, um aus den Daten erstmal z.Bsp. einen einfachen viewer für die Timer zu entwickeln und darauf aufbauend Deine Erweiterungen zu verwirklichen, kann griga es auch selber machen :D

Link to comment

Hallo Lars,

 

das Problem liegt im Moment in der Kommunikation zwischem meinem Prog und dem DVBViewer. Wenn mein Programm die Aufnahmen verwalten soll, draf der GE sie ja nicht einfach weiterschalten, oder?

 

ICH BEHERRSCHE ÜBRIGENS KEINE DLL-PROGRAMMIERUNG :D:D;) !

 

Deshalb wäre es für mich wesentlich einfacher, denn original Quelltext zu modifiziren als eine externe EXE Lösung zu basteln.

 

Torben

 

EDIT:

 

Am dem Viewer arbeite ich schon mit Hochdruck

 

Mein erster Ansatz war das Anlegen eines Record - Arrays für die Aufnahmen. Im Moment bin ich gerade dabei, die Strings aus der INI fachgerecht zu zerlegen :D

 

Torben

Edited by Pfaff_Torben
Link to comment

@Torben:

Es führen (gerade beim Programmieren) viele Wege nach Rom. Das solltest Du wissen. Es gibt, wenn man ein bisschen über die Problematik nachdenkt, sicherlich einige Wege ein Plugin bzw. eine externe Anwendung zu stricken, ohne die von dir geforderte "Unterstützung" zu bekommen. :D Wie wirklich wichtig deine Forderung für dich war, sieht man ja da dran:

 

So, mir reicht es! Ich geb das Projekt jetzt auf, weil ich absolut keine Unterstützung erhalte. Ich für meinen Teil hag 200 GB Platz für Aufnahmen und dafür kein Geld für Urlaub. Sollen das doch andere machen, ich brauch den Zähler jedenfals nicht mehr!!!
Link to comment

Hallo admi-ral,

 

nunja, ich mach das Programmieren eigentlich auch nur als Hobby. Ich möchte das ja eigentlich auch für die anderen User machen.

 

Torben

 

EDIT:

 

Ich hab ne Idee:

 

Ich leg einfach für jede Aufnahme nen eigenen Eintag mit Laufmasche ;) (=Nummer) an.

 

Also bei 6 Wiederholungen:

 

Rumschiff Entenscheiss_1

Rumschiff Entennscheiss_2

 

usw.

 

So müsste es gehen :D

 

Danke admi-ral :D

Edited by Pfaff_Torben
Link to comment

Hallo juf,

 

vielen DAnk :D !

 

Es wird allerdings noch einige Zeit bis zu meinem ersten Beta - Relaese vergehen.

 

Öfters mal hier schauen, ob sich etwas neues tut

 

Torben

Link to comment

Denke daran, dass sich die verwendete Setup.ini nicht zwangsläufig im DVBViewer GE-Ordner befindet.

 

Ihren Ort musst du in Abhängigkeit vom Inhalt der UserMode.ini über die API-Funktion

 

function SHGetFolderPath(hwnd: HWND; csidl: Integer; hToken: Cardinal; dwFlags: Cardinal; pszPath: PChar): HRESULT;

 

ermitteln. Mehr zu der Funktion hier:

 

http://msdn.microsoft.com/library/default....tfolderpath.asp

 

Verwendet wird das typischerweise so:

 

uses
 SHFolder;

function GetConfigDir(UserMode: Integer; const Root: String): String;
//Root = 'DVBViewer GE\'
var
 Buffer: array[0..MAX_PATH] of AnsiChar;
 CSIDL: Integer;
begin
 result := '';
 if (UserMode in [1,2])  and (@SHGetFolderPath <> nil) then
 begin
   if UserMode = 1 then
     CSIDL := CSIDL_APPDATA
   else //UserMode = 2
     CSIDL := CSIDL_COMMON_APPDATA;     
   if SUCCEEDED(SHGetFolderPath(0,CSIDL,0,0,@Buffer)) then
   begin
     result := IncludeTrailingPathDelimiter(Buffer) + Root;       
     if not DirectoryExists(result) and not CreateDir(result) then
       result := ''
   end;
 end;
 if result = '' then
   result := ExtractFilePath(ParamStr(0)); //exe directory
end;

Link to comment

Hallo Griga,

 

Danke!

 

Ich denke aber eher an einen opendialog für die Setup.ini.

 

Ist irgendwie besser, da man ja mehere Istallationen haben kann!

 

Torben

Link to comment

Das ist jetzt ein Witz oder????????????????????????????????????

Du wirst doch wohl in der Lage sein ein eigenes Icon zu basteln

Link to comment

Hallo Griga,

 

soll ich mit Hilfe der Canvas die Pixel random einfärben, oder was?

 

Ich kann programmieren, aber keine Icons malen!

 

Außerdem erkennt dann jeder die Verbindung zum GE!

 

Torben

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...