Seite 1 von 1

Youtube Site über Webgadget steuern

Verfasst: 13.06.2012 15:22
von Velindos
Hallo Leute,

möchte die Youtubesite http://www.youtube.com/xl?gl=DE&hl=de übers Webgadget steuen.

Habe aber keine Ahnung wie ich mit den Pfeiltasten und der Entertaste im Webgadget das Video anwählen und starten kann.
Mit der Maus funktioniert es ja, aber ich möchte in der angezeigten Page mittels der Tasten PFEIL(links/rechts/unten/oben), ENTER und
ESC sowie Nummern navigieren!

Weiss jemand mehr?

Code: Alles auswählen

If OpenWindow(0, 0, 0, 1024, 768, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   WebGadget(0, 10, 10, 1004, 748, "http://www.youtube.com/xl?gl=DE&hl=de")
   Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gruss ... Velindos

Re: Youtube Site über Webgadget steuern

Verfasst: 03.07.2012 16:31
von Macros
Hi,

Eine Möglichkeit, das nativ von PB aus zu machen, kenne ich nicht.

Falls du unter Windows arbeitest, könntest du das Handle des Fensters herausfinden (Suche hilft weiter)
und dann Tastendrücke per http://www.purearea.net/pb/CodeArchiv/I ... endKeys.pb
senden. Einfacher wäre es wohl noch, die Maus zu nutzen. Beispiele dafür findest du auch im Codearchiv.

Falls du unter Linux arbeitest, nutze doch das Tool Youtube-dl um die gesuchten Videos gleich herunterzuladen und spiele sie selbst ab.

Wenn dir die Lösungen nicht gefallen, sag uns doch konkret, was du vorhast.

Re: Youtube Site über Webgadget steuern

Verfasst: 04.07.2012 10:54
von alter Mann
Ohne das ich mir den HTML-Text angeschaut habe :
vielleicht hilft das: http://www.purebasic.fr/german/viewtopi ... =8&t=20274

Re: Youtube Site über Webgadget steuern

Verfasst: 05.07.2012 07:50
von Velindos
Hallo,
Danke für die Tips. Eure Frage
Wenn dir die Lösungen nicht gefallen, sag uns doch konkret, was du vorhast.
Habe mir XBMC installiert. Dann habe ich nach einen brauchbaren IE den man mit einer Fernbedienung bedienen kann, gesucht. War mit keinen zufrieden, da kam mir die Idee innerhalb Purebasic eine einfachen IE zu schreiben den ich mit der Fernbedienung bedienen kann. Bei der Fernbedienung gehe ich von einer die Tasturkompatible ist aus. Diese spreche ich mit folgenden Codec an.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 1024, 768, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   WebGadget(0, 10, 10, 1004, 748, "http://www.youtube.com/xl?gl=DE&hl=de")
   Debug "Bitte drücken sie eine beliebige Taste!" 
Repeat 
      Select WaitWindowEvent() 
      Case #WM_CHAR 
            Debug "#CHAR:    " + Str(EventwParam()) 
      Case #WM_KEYDOWN 
            Debug "#KEYDOWN: " + Str(EventwParam()) 
      Case #WM_KEYUP 
            Debug "#KEYUP:   " + Str(EventwParam()) 
      Case #WM_DEADCHAR 
            Debug "#DEADCHAR:   " + Str(EventwParam()) 
      Case #WM_SYSCHAR 
            Debug "#SYSCHAR:   " + Str(EventwParam()) 
      Case       #WM_SYSKEYDOWN 
            Debug "#SYSKEYDOWN:   " + Str(EventwParam()) 
      Case       #WM_SYSKEYUP 
            Debug "#SYSKEYUP:   " + Str(EventwParam()) 
      EndSelect 


  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Nun möchte ich innerhalb des WebGadget navigieren, sprich über die Tastatur und die Fernbedienung(liege auf dem Sofa), Ziel ist ein Minibrowser mit
Start / Ende
Seite Vor/Zurück
Favoritenauswahl über Button
Navigieren innerhalb des Webgadget(Film/Music/Movie Anwahl, Wiedergabe, Stop, Return)

Nebenbei, dass ist eine interessante Sache, weil es nichts gibt was man brauchen kann.

Zu dem Codec der Tastatur kompatiblen Fernbedienung wäre noch zu erwähnen das ich nicht alle Tasten erwische. habe mich also auf die Tasten Links/Rechts/Oben/Unten/Enter/Zurück/ESC beschränkt.
Obwohl die Tasten(Play etc) im MediaCenter funktionieren, komme ich nicht an den Codec der FarbenTasten.

Gruss ... Velindos

Re: Youtube Site über Webgadget steuern

Verfasst: 05.07.2012 08:13
von Macros
Hey, das eröffnet gleich ganz neue Möglichkei[*][*]ten

Zunächst einmal:
Für XBMC gibt es ein (miserables aber funktionales) Webbrowser Plugin, sowie *hust* xStream *hust* damit könntest du dein Problem wahrscheinlich lösen. Aber wer will das schon, programmieren ist viel toller ;)

Ideen, die mir nun noch kommen:
  • Du könntest die Pfeiltasten verwenden um den Cursor zu verschieben, eventuell togglebar über eine Zahl.
    Klicken durch Enter.
  • Du könntest Tabulatur auch noch abfangen
  • Du könntest Javascript verwenden: http://forums.purebasic.com/english/vie ... 12&t=16968
  • Du könntest die Website parsen und neu formatiert anbieten.
  • Du könntest dein System zu Linux wechseln und eine Wii Mote anschließen

Re: Youtube Site über Webgadget steuern

Verfasst: 05.07.2012 11:10
von Velindos
Hallo,
danke für deine Vorschläge! Also für den Aufruf von PB-Programme aus dem XBMC musst du lediglich

Code: Alles auswählen

</focusedlayout> -<content> -<item id="663"> <label>Velindos</label> <onclick>XBMC.System.Exec(D:\Velindos\PROFI\XBMC\Velindos_XBMC.exe)</onclick> <icon>special://skin/backgrounds/videos.jpg</icon> <thumb>$INFO[Skin.String(Home_Custom_Back_Weather_Folder)]</thumb> </item>
in die XBMC Home.xml einfügen.
Zu deinen Vorschlag Pfeiltasten, dies geht ja auf das gesamte Webgadet aberr nicht innerhalb. Was nicht geht ist nach Anwahl in der Page die ENTER Taste etc. an das Webgadget zu übergeben. Habe mal was von Kiffi mit dem Callback gefunden, habe aber keine Ahnung wie ich die Tasturbefehle an dem Weiterleite.

Code: Alles auswählen

Procedure NavigationCallback(Gadget, Url$)
  ; Geben Sie #True zurück, um diese Navigation zu erlauben, oder #False um sie zu unterbinden.
  If Url$= "http://www.purebasic.com/news.php"
    MessageRequester("", "No news today!")
    ProcedureReturn #False
  Else
    ProcedureReturn #True
  EndIf
EndProcedure
If OpenWindow(0, 0, 0, 1024, 768, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  WebGadget(0, 10, 10, 1004, 748, "http://www.youtube.com/xl?gl=DE&hl=de")
  
  SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
  
  Debug "Bitte drücken sie eine beliebige Taste!"
  
Repeat
  Select WaitWindowEvent()
      
      Case #WM_CHAR
            Debug "#CHAR:    " + Str(EventwParam())
      Case #WM_KEYDOWN
            Debug "#KEYDOWN: " + Str(EventwParam())
      Case #WM_KEYUP
            Debug "#KEYUP:   " + Str(EventwParam())
      Case #WM_DEADCHAR
            Debug "#DEADCHAR:   " + Str(EventwParam())
      Case #WM_SYSCHAR
            Debug "#SYSCHAR:   " + Str(EventwParam())
      Case  #WM_SYSKEYDOWN
            Debug "#SYSKEYDOWN:   " + Str(EventwParam())
      Case  #WM_SYSKEYUP
            Debug "#SYSKEYUP:   " + Str(EventwParam())
      EndSelect

  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gruss ... Velindos

Re: Youtube Site über Webgadget steuern

Verfasst: 05.07.2012 13:01
von PMV
Das größte Problem bei der ganzen sache ist wohl, das Youtube sich
jeder Zeit ändern kann ... was auch immer du mit der Seite machst,
wird irgend wann von heute auf morgen nicht mehr funktioniern. Es
könnte aber dann sein, das du lediglich ein paar simulierte Tastendrücke
ändern musst damit alles wieder geht.

Wenn dich das stört, ist beste und sauberste Lösung, dir die Youtube-
Filme selber runter zu laden/ streamen und nicht nur die gesamte
Seite anzuzeigen ... natürlich nicht ohne und wenn Youtube größere
Änderungen durchführt ... wird auch das zusätzliche Arbeit bedeuten
um wieder alles zum laufen zu kriegen.

Wenn dich das nicht stört, ich kann mich leider nicht erinnern, das mal
jemand Tastatureingaben direkt ins Webgadget injiziert hat. Ich weis
lediglich von einer Funktion, die freak mal im englischen Forum
gepostet hat, welche direkten Zugriff auf die Javascript-Funktionen
einer geladenen Seite bietet. Es bleibt also nur die WinAPI, um
ans Fenster und das Gadget damit direkt Tastendrücke zu schicken.

Bevor du dich aber im Kreis drehst ... könnte ich dir Awesomium
anbieten. Ich hab dafür eine Include geschrieben die die meisten und
für dich alle nötige Funktionalität bereits bietet. Leider hab ich es
bisher kaum bis garnicht dokumentiert, so dass du dich selber
durch hangeln müsstest. Awesomium bietet aber auch eine eigene
Dokumentation. Das ganze ist aber auch sehr umfangreich und
daher nicht ohne. Du wirst davon nur einen Bruchteil brauchen. :wink:

MFG PMV

Re: Youtube Site über Webgadget steuern

Verfasst: 06.07.2012 13:58
von Velindos
Hallo,
hab noch eine Idee, nur finde ich nichts. Möchte die Maustaste mit den Pfeiltasten über den Webgadget steuern und mit ENTER den Mausklick steuern. Weiss jemand was?

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
Enumeration
  #Windows
EndEnumeration

;- Gadget Constants
;
Enumeration
  #RefreshButton
  #Page_Zurueck
  #PageVor
  #Combo_Favoriten
  #Stichwort
  #WegGadgetFenster
  #Page_Aufrufen
  #Combo_Aufrufen
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration
Procedure OpenPureMinibrowser()
  If OpenWindow(#Windows, 228, 0, 660, 731, "PureMiniWebbrowser",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateStatusBar(#StatusBar_0, WindowID(#Windows))
    EndIf
    
    ButtonGadget(#RefreshButton, 0, 0, 660, 30, "refresh")
    ButtonGadget(#Page_Zurueck, 0, 30, 30, 30, "<")
    ButtonGadget(#PageVor, 30, 30, 30, 30, ">")
    ComboBoxGadget(#Combo_Favoriten, 60, 30, 570, 30, #PB_ComboBox_Editable)
    AddGadgetItem(#Combo_Favoriten, -1, "http://www.youtube.com/xl?gl=DE&hl=de")
    AddGadgetItem(#Combo_Favoriten, -1, "http://www.purebasic.fr/german/index.php")
    AddGadgetItem(#Combo_Favoriten, -1, "http://www.rsbasic.de/winapi_library/Changelog.html")
    ButtonGadget(#Combo_Aufrufen, 630, 30, 30, 30, "CX")
    WebGadget(#WegGadgetFenster, 0, 60, 660, 650,  "http://www.youtube.com/xl?gl=DE&hl=de")
  EndIf
EndProcedure

OpenPureMinibrowser()


Debug "Bitte drücken sie eine beliebige Taste!" 
Repeat 
  Select WaitWindowEvent() 
      
    Case #WM_CHAR 
      Debug "#CHAR:    " + Str(EventwParam()) 
    Case #WM_KEYDOWN 
      Debug "#KEYDOWN: " + Str(EventwParam()) 
    Case #WM_KEYUP 
      Debug "#KEYUP:   " + Str(EventwParam()) 
    Case #WM_DEADCHAR 
      Debug "#DEADCHAR:   " + Str(EventwParam()) 
    Case #WM_SYSCHAR 
      Debug "#SYSCHAR:   " + Str(EventwParam()) 
    Case       #WM_SYSKEYDOWN 
      Debug "#SYSKEYDOWN:   " + Str(EventwParam()) 
    Case       #WM_SYSKEYUP 
      Debug "#SYSKEYUP:   " + Str(EventwParam()) 
  EndSelect
  
  Select EventGadget()
      

    Case #Combo_Aufrufen
      PfadString$= GetGadgetText(#Combo_Favoriten)
      SetGadgetText( #WegGadgetFenster, PfadString$ )
      ;RunProgram("explorer.exe ",Chr(34)+PfadString$+Chr(34),"",#PB_Program_Wait)
      
    Case #Page_Zurueck
      SetGadgetState(#WegGadgetFenster,   #PB_Web_Back)
      
    Case #PageVor
      SetGadgetState(#WegGadgetFenster,   #PB_Web_Forward)
      
    Case #RefreshButton
      ;SetGadgetState(#WegGadgetFenster,    #PB_Web_Refresh)
    
  EndSelect 
Until WaitWindowEvent() = #PB_Event_CloseWindow
Gruss ... Velindos

Re: Youtube Site über Webgadget steuern

Verfasst: 06.07.2012 18:10
von c4s
"Youtube Site über Webgadget steuern"? In der Formulierung wohl eher nicht, da zu kompliziert, funktionsweise nicht dauerhaft gewährleistet usw.

Aber: Youtube bietet offiziell allerlei Funktionen für Programmierer an: Youtube Player API