Aktuelle Zeit: 15.10.2019 16:46

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 12.05.2019 21:17 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Einen schönen Abend,
mein Programm ist jetzt soweit fertig, allerdings funktioniert der Aufruf des youtube-dl Konsolenprogramm nur manchmal.
Hab zuerst einen Fehler mit Rechte Vergabe vermutet, das Standalone Programm macht aber denselben Blödsinn.
Wenn ich das Programm starte und mit ps ax die laufenden Prozesse ansehe, stell ich fest, dass der Downloadstring nicht an youtube-dl übergeben wird. An den Titeln liegt's nicht, auf der Shell lässt sich alles runter laden.
Wenn ich den Downloadstring in ein Textfile schreibe (chmod 755) und dieses dann von Purebasic aufrufe funktionierts ebenfalls.
Ist mir echt ein Rätsel...

Dann würde ich gerne die Konsolenausgabe des youtube Prozesses abfangen und weiter verarbeiten.
z.B. könnte ich mit "youtube-dl --extract-audio Adress$" die Titelinformationen auslesen, weiss nur nicht wie...
Mit XBasic lief das alles problemlos, aber das sind eben die kleinen feinen Unterschiede zwischen den Basic Dialekten...

Ich dank schon mal im Vorab
Kurt

Code:
EnableExplicit

Enumeration
  #MainScreen
  #DL01_1 = 1
  #DL01_2 = 2 
  #DL01_3 = 3 
  #DL01_4 = 4
  #DL01_5 = 5
  #DL01_6 = 6 
  #DL01_7 = 7
  #DL01_8 = 8 
  #DL01_9 = 9 
  #BtnAdd
  #BtnDownload
  #BtnDel
  #BtnClear
  #BtnExit
  #LabAdr
  #BtnYesNo
  #MeinTimer
EndEnumeration


Procedure Open_MainScreen()
    OpenWindow(#MainScreen, 1157, 162, 600, 440, "Youtube Downloader")
    CheckBoxGadget(#DL01_1, 0, 0, 500, 25, "")
    CheckBoxGadget(#DL01_2, 0, 25, 500, 25, "")   
    CheckBoxGadget(#DL01_3, 0, 50, 500, 25, "")   
    CheckBoxGadget(#DL01_4, 0, 75, 500, 25, "")   
    CheckBoxGadget(#DL01_5, 0, 100, 500, 25, "")   
    CheckBoxGadget(#DL01_6, 0, 125, 500, 25, "")   
    CheckBoxGadget(#DL01_7, 0, 150, 500, 25, "")
    CheckBoxGadget(#DL01_8, 0, 175, 500, 25, "")   
    CheckBoxGadget(#DL01_9, 0, 200, 500, 25, "")   
    ButtonGadget(#BtnAdd, 0, 270, 100, 25, "Hinzufügen")
    ButtonGadget(#BtnDownload, 100, 270, 100, 25, "Download")
    ButtonGadget(#BtnDel, 200, 270, 100, 25, "Löschen")
    ButtonGadget(#BtnClear, 300, 270, 100, 25, "Lösche Alles")
    ButtonGadget(#BtnExit, 500, 270, 100, 25, "Ende")
    StringGadget(#LabAdr, 0, 233, 600, 25, "")
    CheckBoxGadget(#BtnYesNo,200,233,50,25, "Ich bin sicher")
    HideGadget(#BtnYesNo,1)
    AddWindowTimer(#MainScreen, #MeinTimer, 100) ;1000ms= 1sec
  EndProcedure

Open_MainScreen()

Define.l Event, EventWindow, EventGadget, EventType, EventMenu
Global DelFlag, i, Marker, Adress$, ShellPrg

Declare AddAdresse()
Declare Download()
Declare Delete()
Declare ClearAll()
Declare Programmende()

; Event Schleife

Repeat

  Event = WaitWindowEvent()
  Select Event
      Case #PB_Event_Timer
         If EventTimer()=#MeinTimer
            If Marker
                i+1
                  Download()
            EndIf
         EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Menu
      EventMenu = EventMenu()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     
      If EventGadget = #BtnAdd             
          AddAdresse()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++             
      ElseIf EventGadget = #BtnDownload
          HideGadget(#BtnYesNo,1) 
            For i=1 To 9     
                If (GetGadgetState (i)) = 1     ; wenn selektiert
                  DelFlag=1                     ; setze Flag
                EndIf     
            Next
            If Delflag = 0
              SetGadgetText (#LabAdr, "Kein Download selektiert oder vorhanden!")         
              While WindowEvent():Wend          ; updaten       
              Delay(2000)
              SetGadgetText (#LabAdr, "")             
              Marker=#False
            Else
              i=0
              Marker=#True             
            EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnDel
          HideGadget(#BtnYesNo,1) 
              For i=1 To 9     
                If (GetGadgetState (i)) = 1     ; wenn selektiert
                  DelFlag=1                     ; setze Flag
                EndIf     
              Next
          Delete()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnClear
          ClearAll()
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #BtnExit
          CloseWindow(#MainScreen)
          End
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      ElseIf EventGadget = #LabAdr
      EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
        If EventWindow = #MainScreen
          CloseWindow(#MainScreen)
          End
        EndIf
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++       
  EndSelect
;        Delay(10) 
ForEver


Procedure AddAdresse()
    HideGadget(#BtnYesNo,1) 
    Adress$ = GetGadgetText (#LabAdr)           ; Adresse aus dem Textlabel
       If Adress$ < > ""                        ; wenn nichts eingegeben wurde...
          For i=1 To 9     
             If (GetGadgetText (i)) = ""        ; Wenn der Platz noch frei ist
                SetGadgetText ((i), Adress$)    ; Adresse in die Tabelle schreiben
                SetGadgetText (#LabAdr, "")
                Break
             EndIf     
          Next
       EndIf                                    ; ...gibts auch nix zu tun
EndProcedure 


Procedure Delete()
    If DelFlag=0
      SetGadgetText (#LabAdr, "Nichts zum löschen selektiert oder vorhanden!")         
      While WindowEvent():Wend ; updaten       
      Delay(2000)
      SetGadgetText (#LabAdr, "")             
      While WindowEvent():Wend                  ; updaten             
        ElseIf (GetGadgetState(#BtnYesNo)) = 0
          HideGadget(#BtnYesNo,0)               ; Button sichtbar machen
          SetGadgetText (#LabAdr, "Markierte Downloads löschen ")                   
          While WindowEvent():Wend              ; updaten       
        Else
          For i=1 To 9
            If (GetGadgetState (i)) = 1         ; wenn der Satus 1
              SetGadgetText ((i), "")           ; Text löschen
              SetGadgetState ((i),0)            ; und Status zurück setzen
            EndIf
          Next
              SetGadgetText (#LabAdr, "Markierte Downloads gelöscht!")
              SetGadgetState(#BtnYesNo,0)       ; Flag für Auswertung löschen
              HideGadget(#BtnYesNo,1)           ; Button verstecken
              While WindowEvent():Wend          ; updaten       
              Delay(2000)
              SetGadgetText (#LabAdr, "")             
      EndIf
      DelFlag=0
EndProcedure


Procedure ClearAll()
    HideGadget(#BtnYesNo,0) 
    SetGadgetText (#LabAdr, "Alle Downloads löschen")
    While WindowEvent():Wend                    ; updaten       
    Delay(2000)   
      If (GetGadgetState(#BtnYesNo)) = 0
        ProcedureReturn
        Else
          For i=1 To 9
            SetGadgetText ((i), "")                 ; Textfeld und
            SetGadgetState ((i),0)                  ; Status löschen
            While WindowEvent():Wend ; updaten       
          Next
            SetGadgetText (#LabAdr, "")           ; Label löschen
            SetGadgetState (#BtnYesNo,0)          ; Flag für Auswertung löschen
            HideGadget(#BtnYesNo,1)               ; Button verstecken
      EndIf
    DelFlag=0
    SetGadgetText (#LabAdr, "")
    HideGadget(#BtnYesNo,1)     
    While WindowEvent():Wend ; updaten           
EndProcedure 

Procedure Download()
    If i < 10 
      Adress$ = GetGadgetText (i)
      If Adress$ =""
        ProcedureReturn
      EndIf
      SetGadgetText(#LabAdr, "Lade " + Adress$)
      While WindowEvent():Wend          ; updaten       
      Delay(1000)         

ShellPrg= RunProgram("youtube-dl", Chr(32) + Adress$, ".",  #PB_Program_Open|#PB_Program_Write|#PB_Program_Read)

Repeat
  Debug ReadProgramString(ShellPrg)
Until Not ProgramRunning(ShellPrg)
         SetGadgetText(#LabAdr, "Lade " + Adress$)
         While WindowEvent():Wend          ; updaten       
         Delay(1000)         
         ProcedureReturn
    Else
      SetGadgetText(#LabAdr, "fertig")
      While WindowEvent():Wend          ; updaten       
    EndIf
   
For i=1 To 9
      SetGadgetText ((i), "")             ; Textfeld und
      SetGadgetState ((i),0)              ; Status löschen
    Next
      SetGadgetText (#LabAdr, "")         ; Label löschen
      SetGadgetState (#BtnYesNo,0)        ; Flag für Auswertung löschen
      HideGadget(#BtnYesNo,1)             ; Button verstecken
      DelFlag=0
      Marker=#False
EndProcedure


_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 12.05.2019 22:44 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Kann sein, dass es das nicht ist, aber warum machst du noch ein Leerzeichen vor den Parameter?
Code:
Chr(32) + Adress$

Ohne das Leerzeichen sollte es doch ausreichen.

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 12.05.2019 23:16 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Das Shell Kommando lautet:
youtube-dl https://adresse oder besser youtube-dl "https://adresse"
Zwischen youtube-dl und der Adresse muss also ein Leerzeichen sein, ohne funktioniert es nicht.

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 12.05.2019 23:20 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Natürlich muss es das, wenn du es im Terminal eingibst. Aber RunProgram() hat ja extra zwei Parameter. Der erste ist für das Programm, das ausgeführt wird, und der zweite ist für die Parameter. Wenn du da ein Leerzeichen als Parameter eingibst, dann wird das auch so an youtube-dl weitergegeben.

Edit:
Allerdings ist mir auch aufgefallen, dass der Errorcode von youtube-dl bei mir 1 ist, was normalerweise auf einen Fehler hindeutet. Dummerweise wurde in Purebasic die Process-Bibliothek wieder nur halbherzig implementiert. So gibt es keinen Befehl wie etwa AvailableErrorOutput() oder sowas und ReadProgramError() zeigt auch nichts besonderes an. Hast du mal ausprobiert den vollen Pfad zu youtube-dl zu benutzen? Bei mir ist das "/usr/local/bin/youtube-dl". Wie es bei dir ist, kannst du herausfinden mit "which youtube-dl" im Terminal.

_________________
Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 19.04 LTS x64, PureBasic 5.71 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 13.05.2019 08:14 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Guten Morgen,
ja... der komplette Pfad bringt auch nichts, hab ich schon alles versucht.
Die Error Message bringt bei mir auch keinen Hinweis woran es liegen könnte.
Na gut, wenn alle Stricke reissen, muss ich gezwungenermassen die Strings in ein Bash File
schreiben und dieses dann starten. Das hab ich bereits probiert und es funktioniert auch.

Habs auch schon so probiert:
youtube-dl, chr(32)+chr(34)+Adress$+chr(34), ""....
Vielleicht ein Bug von Purebasic...

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 13.05.2019 08:59 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
kein Problem hier (unter Windows):

Code:
EnableExplicit

Procedure Download(Address.s)
 
  Protected YoutubeDl
 
  Protected Dummy.s
  Protected RPS.s ; ReadProgramString
  Protected RPE.s ; ReadProgramError
 
  YoutubeDl = RunProgram([DeinYoutubeDL], Address, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Error)
 
  If YoutubeDl
   
    While ProgramRunning(YoutubeDl)
     
      Dummy = ReadProgramString(YoutubeDl)
      If Dummy <> ""
        RPS + Dummy + #CRLF$
      EndIf
     
      Dummy = ReadProgramError(YoutubeDl)
      If Dummy <> ""
        RPE + Dummy + #CRLF$
      EndIf
     
    Wend
   
    Debug "ProgramExitCode: "   + ProgramExitCode(YoutubeDl)
   
    Debug "ReadProgramString: " + RPS
    Debug "ReadProgramError: "  + RPE
   
    CloseProgram(YoutubeDl) ; Close the connection to the program
   
  EndIf
 
EndProcedure

Download("https://www.youtube.com/watch?v=4l-6qWaZpVQ")


Zu beachten:

* Der Download sollte in einem Thread laufen, damit Dein Programm nicht blockiert.

* Dein Code ist im allgemeinen doch eher -- sagen wir mal -- suboptimal:

- Die ganzen While WindowEvent():Wend benötigst Du nicht.
- Die Gadgets überlagern sich.
- Anstelle der CheckBoxGadgets würde ich ein ListIconGadget verwenden.
- to be continued...

Du solltest vielleicht erst einmal ein sauberes Grundgerüst für die GUI erstellen, bevor Du Dich an den Download-Thread wagst. Wenn Du dabei Hilfe benötigst, sag Bescheid. Es ist noch kein Meister vom Himmel gefallen.

Grüße ... Peter

_________________
"A user interface is like a joke. If you have to explain it, it’s not that good." (Martin Leblanc)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 13.05.2019 18:01 
Offline

Registriert: 25.03.2013 09:59
Hallo Sommertv,

ich hab mir vor 2 Jahren was ähnliches zum Extrahieren und Downloaden der Audio-Parts von Videos gebastelt (schwer verwerflich - ich weiß :roll: ).
Ich kann hier nur für Linux sprechen:
Das Wichtigste ist, die youtube-dl aktuell zu halten. Scheinbar ändert YouTube pausenlos etwas und die youtube-dl wird zeitnah angepasst.
Ist Deine Version veraltet geht nüscht mit dem Download.

Meine Umsetzung ist zwar "sehr speziell", da nur für mich gedacht, ohne threads :wink: und hängt sich gelegentlichst mal auf aber prinzipiell funktionsfähig und nach wie vor im Einsatz.
Falls Du Interesse hast kann ich Dir den Sourceode (as is) zum Stöbern mal per pm zukommen lassen.

Gruß Charly

_________________
PureBasic Linux-API-Library: http://www.chabba.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 13.05.2019 20:39 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Hallo Charly (Omi)

danke für den Tip, es lag tatsächlich an der Version...
Dachte nicht dass das jetzt schon wieder nötig ist, die letzte Aktualisierung liegt noch keine 2 Wochen zurück.
Damals gings dann aber auf Kommandoebene auch nicht mehr.
Dein Code tät mich schon interessieren, man lernt immer eine Menge, wenn man sich die Programme von anderen ansieht...

Hallo Peter (Kiffi)

danke, ich werd den Codeteil mal ausprobieren...
Wenn ich die "While WindowEvent():Wend" Zeilen weg lasse, wird das String Gadget nicht aktualisiert.
Und das benutz ich für unterschiedliche Texte und der Ausgabe der Songtitel.
Nachdem for / next nicht wie erwartet funktioniert (siehe anderes Thema von mir) hab ich die Ausgabe der verschiedenen Songtitel jetzt mit Hilfe des Timer Events gelöst und das funktioniert soweit.
Wie setzt man das ListIconGadget ein? Ein kleines einfaches Beispiel wäre hilfreich...

Momentan versuch ich halt, bekannte Sequenzen meiner ehemaligen Programmierumgebung (XBasic) auf Purebasic umzusetzen, mit mehr oder weniger guten bzw schlechten Erfolgen.
Die beiden Dialekte unterscheiden sich doch in vielen Dingen erheblich.
Aber ich finds gut, dass es so ein Forum wie das hier gibt...

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 14.05.2019 16:16 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Sommertv hat geschrieben:
Wie setzt man das ListIconGadget ein? Ein kleines einfaches Beispiel wäre hilfreich...

Hier mal ein Grundgerüst, wie so etwas aussehen könnte:
Code:
EnableExplicit

Enumeration Window
  #MainWindow
EndEnumeration

Enumeration Gadgets
 
  #MainWindow_Toolbar
  #MainWindow_Toolbar_Add
  #MainWindow_Toolbar_Delete
  #MainWindow_Toolbar_Download
 
  #MainWindow_Downloads
 
  #MainWindow_Statusbar
 
EndEnumeration

Procedure CheckToolbarButtons()
 
  Protected ItemIsChecked
  Protected Counter
 
  ItemIsChecked = #False
 
  For Counter = CountGadgetItems(#MainWindow_Downloads) - 1 To 0 Step -1
    If GetGadgetItemState(#MainWindow_Downloads, Counter) & #PB_ListIcon_Checked
      ItemIsChecked = #True
      Break
    EndIf
  Next
 
  DisableToolBarButton(#MainWindow_Toolbar, #MainWindow_Toolbar_Delete,   Bool(ItemIsChecked=#False))
  DisableToolBarButton(#MainWindow_Toolbar, #MainWindow_Toolbar_Download, Bool(ItemIsChecked=#False))
 
EndProcedure

Define WWE, Quit
Define Address.s
Define Counter

OpenWindow(#MainWindow, #PB_Ignore, #PB_Ignore, 800, 600, "Youtube-Downloader", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)

CreateToolBar(#MainWindow_Toolbar, WindowID(#MainWindow))

ToolBarStandardButton(#MainWindow_Toolbar_Add, #PB_ToolBarIcon_New)
ToolBarToolTip(#MainWindow_Toolbar, #MainWindow_Toolbar_Add, "Hinzufügen")

ToolBarStandardButton(#MainWindow_Toolbar_Delete, #PB_ToolBarIcon_Delete)
ToolBarToolTip(#MainWindow_Toolbar, #MainWindow_Toolbar_Delete, "Entfernen")

ToolBarSeparator()

ToolBarStandardButton(#MainWindow_Toolbar_Download, #PB_ToolBarIcon_Save)
ToolBarToolTip(#MainWindow_Toolbar, #MainWindow_Toolbar_Download, "Herunterladen")

CreateStatusBar(#MainWindow_Statusbar, WindowID(#MainWindow))

ListIconGadget(#MainWindow_Downloads,
               0,
               ToolBarHeight(#MainWindow_Toolbar),
               WindowWidth(#MainWindow),
               WindowHeight(#MainWindow) - ToolBarHeight(#MainWindow_Toolbar) - StatusBarHeight(#MainWindow_Statusbar),
               "Youtube-Adresse",
               500,
               #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_CheckBoxes)

CheckToolbarButtons()

Repeat
 
  WWE = WaitWindowEvent()
 
  Select WWE
     
    Case #PB_Event_Menu
     
      Select EventMenu()
         
        Case #MainWindow_Toolbar_Add
         
          Address = InputRequester("Youtube-Downloadlink", "Bitte geben Sie einen Youtube-Downloadlink ein", "")
          If Address <> ""
            AddGadgetItem(#MainWindow_Downloads, -1, Address)
          EndIf
         
        Case #MainWindow_Toolbar_Delete
         
          If MessageRequester("Ausgewählte Einträge entfernen?", "Möchten Sie die ausgewählten Einträge entfernen?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
           
            For Counter = CountGadgetItems(#MainWindow_Downloads) - 1 To 0 Step -1
              If GetGadgetItemState(#MainWindow_Downloads, Counter) & #PB_ListIcon_Checked
                RemoveGadgetItem(#MainWindow_Downloads, Counter)
              EndIf
            Next
           
          EndIf
         
        Case #MainWindow_Toolbar_Download
         
          ; ...
         
      EndSelect
     
    Case #PB_Event_Gadget
     
      Select EventGadget()
        Case #MainWindow_Downloads
          CheckToolbarButtons() ; Toolbarbuttons disablen / enablen
      EndSelect
     
    Case #PB_Event_SizeWindow
     
      Select EventWindow()
         
        Case #MainWindow
         
          ResizeGadget(#MainWindow_Downloads,
                       #PB_Ignore,
                       #PB_Ignore,
                       WindowWidth(#MainWindow),
                       WindowHeight(#MainWindow) - ToolBarHeight(#MainWindow_Toolbar) - StatusBarHeight(#MainWindow_Statusbar))
         
      EndSelect
     
    Case #PB_Event_CloseWindow
     
      Select EventWindow()
        Case #MainWindow
          Quit = #True
      EndSelect
     
  EndSelect
 
Until Quit = #True


Nach der Pflicht kommt allerdings die Kür: Den Download der Videos so umsetzen, dass das Programm jederzeit bedienbar bleibt und ein gestarteter Download u.U. sogar abgebrochen werden kann. Da steige ich vorerst aus Zeitgründen aus. Vielleicht können hier die Thread-Experten mit einsteigen?

Grüße ... Peter

_________________
"A user interface is like a joke. If you have to explain it, it’s not that good." (Martin Leblanc)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Linux Shell Aufruf youtube-dl funktioniert nur teilweise
BeitragVerfasst: 14.05.2019 17:46 
Offline

Registriert: 25.03.2013 09:59
Hallo Sommertv,
Du müsstest eine PN bekommen haben.

Gruß Charly

_________________
PureBasic Linux-API-Library: http://www.chabba.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye