Page 1 sur 1

[Ex] Youtube downloader

Posté : jeu. 12 déc. 2013 08:05
par coolraiman
alors voila j'ai decouvert autoIt aujourdhui et j'ai decider d'automatiser ma technique pour telecharger des video youtube sans avoir a utiliser ces site ou logiciel qui vous bombarde de spyware et malware.

cela peut sembler débutant mais ces ma premiere expérience avec ce genre de language. (je suis dévelopeur unity en c#)
l'important est que sa fonctionne. j'ai été a cours de temps mais demain je vais l'améliorer et y ajouter des options.
cette version fonctionne avec windows en anglais. pour en francais il suffit de changer les 2 ligne avec
WinWaitActive("VLC media player")
WinActive("VLC media player")

par
WinWaitActive("Lecteur multimédia VLC")
WinActive("Lecteur multimédia VLC")

je suis loin d'avoir lue toute la documentation mais si quelqun connai la commande pour acceder au language du system ce serais sympas.
aussi pour que le script fonctionne il vous faut vlc et firefox

Code : Tout sélectionner


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include < Misc.au3 >

Global $youtubeURL
Global $cacheURL
Global $browser

CreateGui()

Func CreateGui()
   Local $msg, $ButtonGo
   Local $youtubeURLButton
   Local $chrome , $firefox
   GUICreate("enter url",200,200)

   $youtubeURLButton = GUICtrlCreateEdit("",10,100,200,20)
   $ButtonGo = GUICtrlCreateButton("download",10,10,70,50)
   GUISetState(@SW_SHOW)
   Send("{END}")

   GUICtrlSetData($youtubeURLButton,"",1)

   While 1
      $msg = GUIGetMsg()
      Switch $msg
         Case $GUI_EVENT_CLOSE
            ExitLoop
         Case $ButtonGo
            $youtubeURL = GUICtrlRead($youtubeURLButton)
            Download()
      EndSwitch
   WEND
   GUIDelete()

EndFunc

Func Download()
   Run("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe")
   WinWaitActive("VLC media player")
   WinActive("VLC media player")
   Send("{CTRLDOWN}")
   Send("n")
   Sleep(100)
   Send("{CTRLUP}")
   Send($youtubeURL)
   Send("{ENTER}")
   Send("{ENTER}")
   Send("{CTRLDOWN}")
   Send("j")
   Sleep(5000)
   Send("{CTRLUP}")
   Send("{TAB}")
   Send("{TAB}")
   Send("{CTRLDOWN}")
   Send("c")
   Send("{CTRLUP}")

   Run("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
   Sleep(2000)
   Send("{F6}")
   Send("{CTRLDOWN}")
   Send("v")
   Send("{CTRLUP}")
   Send("{ENTER}")
EndFunc
 

Re: [Ex] Youtube downloader

Posté : jeu. 12 déc. 2013 08:27
par Tlem
Bonjour coolraiman.
Pour rajouter plus de compatibilité entre version d'OS et architecture, je vous suggère d'apporter quelques modifications.

Concernant le chemin vers les Exe's, il serait plus judicieux d'aller voir dans la base de registre si les programmes sont installés ou non :

Code : Tout sélectionner

Global $VLC_EXE = RegRead("HKLM\SOFTWARE\VideoLAN\VLC", "")
Global $FF_Ver = RegRead("HKLM\SOFTWARE\Mozilla\Mozilla Firefox", "CurrentVersion")
Global $FF_EXE = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox\" & $FF_Ver & "\Main", "PathToExe")

If $VLC_EXE = "" Or $FF_EXE = "" Then
    MsgBox(16, "Erreur", "Erreur : VLC et/ou FireFox n'est pas installé sur votre système.")
    Exit
EndIf
Ensuite, concernant l'attente de l'affichage de VLC, au lieu de gérer la langue, utilisez une partie du nom de la fenêtre (VLC :roll: ) et la Class de celle-ci :

Code : Tout sélectionner

Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase

WinWaitActive("[TITLE:VLC; CLASS:QWidget]", "")
Ces modifications devraient permettre une meilleure compatibilité de votre application sur différents ordinateurs.

Ceci-dit, je reste persuadé que vous pouvez scripter VLC afin d'éviter de passer par son interface et donc afin d'éviter "les risques potentiels de problèmes". ^^

Re: [Ex] Youtube downloader

Posté : jeu. 12 déc. 2013 14:43
par coolraiman
merci beaucoup pour les conseil. comme j'ai di je commence et le langage semble etre vaste et ce nest vraiment pas le type de language que je suis habituer.

si je peut me permetre quel type de fonction permet dutiliser une application sans avoir a naviguer dans son interface?

il me faudrait juste un exemple et je pourrai apprendre par moi-meme.
je ne doit pas etre le premier a faire ce genre de youtube downloader mais jaime faire les chose par moi-meme

Re: [Ex] Youtube downloader

Posté : jeu. 12 déc. 2013 22:04
par Tlem
coolraiman a écrit :quel type de fonction permet dutiliser une application sans avoir a naviguer dans son interface?
VLC est totalement "scriptable", c'est à dire que vous pouvez le lancer avec des paramètres afin d'éviter à cliquer sur des tas de boutons. Vous trouverez des tas d'informations sur ce lien : https://wiki.videolan.org/Documentation:Command_line/