Page 1 sur 1

[..] Récupération d'information de Youtube

Posté : mar. 09 juil. 2013 01:13
par MeGaTrOn
Salut,
j'ai encore besoin de votre grande expérience :D car j'aimerez créer un logiciel pour vérifier si il y a de nouvelles vidéos sur Youtube.
En fait le script regarderais les 15 dernières vidéos et les notes dans une Liste et que je récupère celui qui a poster la vidéo dans une autre.
Je voudrais pas un script tout fait mais un exemple sur comment récupérer les infos car je voudrais le faire moi même.

Cordialement, MeGaTrOn.

Re: [...] Récupération d'information de Youtube

Posté : mar. 09 juil. 2013 10:31
par alex1205
Salut

en fait t'a un problème où ? pour prendre le code source, tu peux utiliser _InetGetSource ou utiliser l'objet wininet et faire une requete Get. Après tu parse le code html, et tu trouve les résultats. tu veux que je te fasse un code qui fasse un exemple ?

Re: [...] Récupération d'information de Youtube

Posté : mar. 09 juil. 2013 11:06
par MeGaTrOn
Oui ce serais gentil :roll:

Re: [...] Récupération d'information de Youtube

Posté : mar. 09 juil. 2013 14:31
par alex1205
Voilà un code vite fait :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $__g_URLDefault = "http://www.youtube.com/user/MaitreGimsVEVO", $__g_sFile = @ScriptDir & "\youtube_cache", $__g_sYoutubechannel = ""
Global $__g_sResult = ""
#region ### START Koda GUI section ### Form=
;///// GUI /////
$h_Form = GUICreate("", 205, 62, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "h_FormClose")
$L_label = GUICtrlCreateLabel("Chaîne YouTube à surveiller :", 8, 8, 145, 17)
; Exemple chaîne Maitre Gims : http://www.youtube.com/user/MaitreGimsVEVO
$I_youtubechannel = GUICtrlCreateInput($__g_URLDefault, 8, 32, 145, 21)
$Button1 = GUICtrlCreateButton("Go", 160, 8, 41, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
;\\\\\ GUI \\\\\

While 1
    Sleep(100)
WEnd

Func Button1Click()
    $__g_sYoutubechannel = GUICtrlRead($I_youtubechannel)
    $__g_sResult = __getHTMLSource($__g_sYoutubechannel)
    FileWrite($__g_sFile, $__g_sResult)
    Sleep(1000)
    AdlibRegister("__YT_check", 60 * 1000)
    GuiSetState(@SW_Hide)
EndFunc   ;==>Button1Click

Func h_FormClose()
    Exit
EndFunc   ;==>h_FormClose

Func __getHTMLSource($sURL)
    $__f_oWinHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $__f_oWinHTTP.Open("GET", $sURL)
    $__f_oWinHTTP.Send()
    Return $__f_oWinHTTP.Responsetext
EndFunc   ;==>__getHTMLSource

Func __YT_check()
    $__f_sFile = FileRead($__g_sFile)
    $__f_sResult = __getHTMLSource($__g_sYoutubechannel)
    If $__f_sFile <> $__f_sResult Then
        TrayTip("YouTube Detector", "Youtube Detector a détecté une modification de page", 2000)
        FileDelete($__g_sFile)
        FileWrite($__g_sFile, $__f_sResult)
    EndIf
EndFunc   ;==>__YT_check
En fait ça surveille une chaîne youtube (en exemple la chaine de maitre gims) et ca fait une notification si la page a été modifié (donc ajout de vidéo). C'est une bêta mais ca marche.

Re: [..] Récupération d'information de Youtube

Posté : sam. 13 juil. 2013 12:26
par MeGaTrOn
J'ai essayer d'adapter ton script pour plusieurs page mais j'ai un problème c'est qu'il me détecte tout le temps des vidéos
Le script :
► Afficher le texte

Re: [..] Récupération d'information de Youtube

Posté : dim. 14 juil. 2013 18:04
par mikell
Un script qui se base juste sur une différence de contenu de la page lue avec un InetRead ou autre ne peut pas marcher avec Youtube
1 vue de plus sur une des videos, une modif dans l'affichage aléatoire des pubs ou recommandations, un changement d'id de session etc... et c'est mort ^^
Pour que ça puisse marcher tu n'y couperas pas : faut parser le contenu au regexp, faire des arrays ciblées et faire des comparaisons
Par contre si les structures sont les mêmes tu peux faire des fonctions communes
Exemple :
► Afficher le texte
La video la plus récente est dans la 1ère ligne de l'array

Mais pour juste la dernière video tu peux aussi faire comme ça
► Afficher le texte
Quelle que soit la méthode, les regex sont incontournables ^^

EDIT
Pardon, c'est contournable avec l'udf _StringBetween (pour faire plaisir à Tlem)
► Afficher le texte