[PROJEKT] Automatisierter Download und Verarbeitung von Audiodateien

  • OK, danke erstmal :)

    Das UDF von Eukalyptus klingt interessant, aber um das ohne Anleitung oder Tipps zu integrieren fehlt mir noch zu viel Wissen. Eines schönen Tages dann hoffentlich :D

    Ich werde das jetzt mal mit den zwei Programmen versuchen und über eine Art Übergabe.ini lösen oder ich nutze gleich die config.ini dafür.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Das erste Outsourcing hat geklappt, damit dürfte das zweite nur noch Formsache sein ... hoffe ich :D

    Mein Hauptprogramm startet nun ein Unterprogram beim Start, dieses überpräft im Hintergrund den FTP-Server, den Stream-Server und so weiter. Die Daten weden dann an die Config.ini zurück gegeben und dort vom Hauptprogramm in regelmäßigen Abständen neu ausgelesen. Beim Programmende wird das Unterprogramm wieder mitgeschlossen.

    Die Frage die sich mir gerade noch stellt, ob es eine Möglichkeit gibt zu verhindern, dass das Unterprogramm alleine gestartet wird. Ichkenne meine Pappenheimer, da wird jeder Link angeklickt und jedes Exe-File ausgeführt :D

    Ich dachte an einen weiteren Eintrag in die Config.ini in der das Hauptprogramm einträgt, dass es gestartet wurde (True) und sich dort wieder austrägt wenn es beendet wurde (False). Das unterprogramm liet das entsprechend aus und geht sofort in den Exit, wenn der Wert in der Config.ini nicht True ist. Das Ganze funktioniert natürlich nur solange das Hauptprogramm ordnungsgemäß beendet wurde.

    Aber vieleicht gibts da ja auch eine simple Abfrage?

    ----- >>> Es ist imemr wieder faszinierend wie mir beim schreiben von Beiträgen die Lösungen und ideen kommen :) ... ProcessExists gefunden :D

    Danke erstmal :)

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Und wie verhinderst, dass dein Hauptprogramm deine ini grade offen hat um sie zu lesen und somit dein Nebenprogramm nicht darauf zugreifen kann um seine Daten reinzuschreiben?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Nun ein Rest an Makel wird bleiben, dafür reichen meine Künste noch nicht aus.

    Aber im schlimmsten Fall dauert die Aktualisierung eben einen Zyklus länger. Ich habe die beiden ja asynchron geschalten.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Mal kleine Tipp dazu. Erstell doch mit deinem Subprogramm eine Datei im Verzeichniss wenn der Server offline ist bzw. lösch sie wieder wenn er online ist.

    Dann im Hauptprogramm auf FileExist prüfen und du hast keine Probleme wegen zeitgleichem Zugriff usw.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Auch eine Möglichkeit .... ABER ... *grins*

    Ich habe ja nicht nur die FTP-Überprüfung ausgelagert, sondern auch die Abfrage des Streams incl. des aktuellen Titel usw. Zu dem soll das Programm ja nach und anch noch erweitert werden.

    Zum Beispiel soll abgefragt werden ob Musikwünsche eingegangen sind, es soll eine Verbindung zu einer Datenbank aufbauen und dort Informationen abholen usw. usw... Insofern muß ich da eh einen entsprechenden Weg gehen um die Daten damm vom SubProgramm ans hauptprogramm weiter zu geben.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

  • Huhu :D

    Ich habe da noch ein Problemchen zu dem mir einfach kein Lösungsweg einfallen will.

    Ich lasse von meinem Programm ja an vielen Stellen check-Einträge in ein Logfile schreiben, dieses wird aber mit der Zeit natürlich imer länger und länger und viel zu groß.

    Jetzt habe ich die Idee, das Logfile irgendwie zu kürzen. Zum einen eventuell mittels der Trennzeile nach dem Shutdown, zum anderen über das Datum. Aktuell siet das Logfile unfegähr so aus:

    Irgendwie finde ich aber keine stilvolle Idee um das Problem anzugehen, hat heir vieleicht jemand einen Denkanstoß für mich?

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)

    • Offizieller Beitrag

    Hier mal eine Möglichkeit:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $sLogfile = @ScriptDir & '\logfile.txt'
    $sDelDate = '20131004' ; <- Datum im Format: YYYYMMDD, alle Einträge vor diesem Datum werden gelöscht
    $aLogData = _DeleteByDate($sLogfile, $sDelDate)
    _ArrayDisplay($aLogData)

    [/autoit] [autoit][/autoit] [autoit]

    Func _DeleteByDate($sLogfile, $sDelDate)
    Local $sData = FileRead($sLogfile)
    If @error Then Return SetError(1, 0, '')
    Local $aLines = StringRegExp($sData, '\[\d{2}\.\d{2}\.\d{4}/\d{2}\:\d{2}\:\d{2}\].+', 3)
    If Not IsArray($aLines) Then Return SetError(2, 0, '')
    For $i = UBound($aLines) - 1 To 0 Step -1
    If _GetDate($aLines[$i]) < $sDelDate Then _ArrayDelete($aLines, $i)
    Next
    Return $aLines
    EndFunc ;==>_DeleteByDate

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetDate($sLine)
    Return StringRegExpReplace($sLine, '\[(\d{2})\.(\d{2})\.(\d{4})/\d{2}\:\d{2}\:\d{2}\].+', '$3$2$1') ; <- umwandeln nach YYYYMMDD
    EndFunc ;==>_GetDate

    [/autoit]
  • Ab Mittwoch habe ich wieder mehr Zeit, dann werde ichmich damit mal intensiver beschäftigen .. Danke Dir vorab Oscar, das sieht nach eine guten Lösung aus. Ich muß mir dann nur noch mal Gedanken machen wie ich das für meine Zwecke umbaue.

    Ein Tag ist schön, wenn am ende vom "exit" alles gut gelaufen ist :)