Jump to content

Youtube and ObjCreate


walle
 Share

Recommended Posts

The problem is that the movie won't load. I don't know

why, almost certainly it’s because of the classname,

"$oIE = ObjCreate("Shell.Explorer.2")"

any idea?

Edit: Maybe if I adapted this script with this, no idea how :P

<html><head><script src="res://mshtml.dll/objectembed_neutral.js"></script></head><body objectSource="http://www.youtube.com/swf/l.swf?video_id=NXZ6PVq635U&amp;eurl=&amp;iurl=" onload="ObjectLoad();" leftmargin=0 topmargin=0 scroll=no> <form id="objectDestination"></form> </body></html>

Script

#include <IE.au3>
#include <Constants.au3>
#include <GUIConstants.au3>
#include <INet.au3>
#include <String.au3>


$SEARCH2 = "Yuma trailer"
$SearchString = StringReplace($SEARCH2, " ", "+")
$OIE = _IECREATE("http://youtube.com/results?search_query=" & $SearchString & "&search=Search", 0,0)
$OLINKS = _IELINKGETCOLLECTION($OIE)
;$Clickbyname = _IELinkClickByText($SEARCH2)

$COLLINKS = _IELINKGETCOLLECTION($OIE)
For $oLink in $COLLINKS
    $sLinkText = _IEPropertyGet($oLink, "outerText")
    If StringInStr($sLinkText, $SEARCH2) Then
        ;msgbox(0,"",$oLink)
        _IEAction($oLink, "click")
        _IELOADWAIT($OIE)
        $SURL = _IEPropertyGet($OIE,"locationurl")
        ExitLoop
    EndIf
Next
_IEQuit($OIE)
$SOURCE = _INETGETSOURCE($SURL)
$MOVIETRAILER = _StringBetween($SOURCE,'name="video_id" value="','">\')
For $I = 0 To $MOVIETRAILER [0]
Next

Dim $URL = "http://youtube.com/watch_fullscreen?video_id=" & $MOVIETRAILER [0] & "&rel=1"
$oIE = ObjCreate("Shell.Explorer.2")
GUICreate ("TEEEEEST")
GUICtrlCreateObj($oIE,0,0,435,400)
GUISetState()      
$oIE.navigate($URL)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
    Sleep(10)
WEnd
Edited by walle
Link to comment
Share on other sites

You need the value request as well, try this:

#include <GUIConstants.au3>

TCPStartup()
Global $Socket = -1

$SEARCH2 = "Yuma trailer"
$SearchString = StringReplace($SEARCH2, " ", "+")

$Host = "youtube.com"
$Page = "/results?search_query=" & $SearchString & "&search=Search"

$SearchSource = _HTTPGetSource($Host, $Page)
$Video_ID = _GetMidleString($SearchSource, '<a class="newvtitlelink" href="/watch\?v=', '" rel="')

$Get_Value = Get_Value($Host, $Video_ID)
_HTTPClose($Socket)

$URL = "http://youtube.com/watch_fullscreen?video_id=" & $Video_ID & "&t=" & $Get_Value

$oIE = ObjCreate("Shell.Explorer.2")
GUICreate("TEEEEEST", @DesktopWidth, @DesktopHeight)
GUICtrlCreateObj($oIE, 0, 0, @DesktopWidth, @DesktopHeight)
GUISetState()
$oIE.Navigate($URL)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
    Sleep(10)
WEnd

Func Get_Value($Host, $Video_ID)
    $Page = "/v/" & $Video_ID
    $Resp = _HTTPGetRespones($Host, $Page)
    
    Local $Location_URL = StringStripWS(_GetMidleString($Resp, 'Location:', '\n'), 3)
    Local $URL_Value = _GetMidleString($Location_URL, '&t=', '$')
    If $URL_Value = '' Then $URL_Value = _GetMidleString($Location_URL, '&t=', '\?')
    If $URL_Value = '' Then $URL_Value = _GetMidleString($Location_URL, '&t=', '&')
    If $URL_Value = '' Then $URL_Value = _GetMidleString($Location_URL, '&t=', '=')
    Return $URL_Value
EndFunc

Func _HTTPGetSource($Host, $Page)
    Local $Recv = '', $RcvBytes = 1024
    $Socket = _HTTPConnect($Host)
    _HTTPGet($Host, $Page, $Socket)
    If @error Then Return SetError(1, 0, '')
    
    While 1
        $CurrentLine = TCPRecv($Socket, $RcvBytes)
        If @error <> 0 Then ExitLoop
        If $CurrentLine <> '' Then $Recv &= $CurrentLine
    WEnd
    
    Return $Recv
EndFunc

Func _HTTPConnect($Host)
    Local $Name_To_IP = TCPNameToIP($Host)
    $Socket = TCPConnect($Name_To_IP, 80)
    
    If $Socket = -1 Then
        TCPCloseSocket($Socket)
        Return SetError(1, 0, "")
    EndIf
    
    Return $Socket
EndFunc

Func _HTTPGet($Host, $Page, $Socket)
    Local $Command = "GET " & $Page & " HTTP/1.1" & @CRLF
    $Command &= "Host: " & $Host & @CRLF
    $Command &= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0" & @CRLF
    $Command &= "Connection: close" & @CRLF & @CRLF
    
    Local $BytesSent = TCPSend($Socket, $Command)
    If $BytesSent = 0 Then Return SetError(1, @error, 0)
    Return $BytesSent
EndFunc

Func _HTTPGetRespones($Host, $Page)
    $Socket = _HTTPConnect($Host)
    If @error Then Return SetError(1, 0, "")
    
    _HTTPHead($Host, $Page, $Socket)
    
    Local $Recv = "", $CurrentRecv
    While 1
        $CurrentRecv = TCPRecv($Socket, 16)
        If @error <> 0 Then ExitLoop
        If $CurrentRecv <> "" Then $Recv &= $CurrentRecv
    WEnd
    
    If StringInStr($Recv, "HTTP/1.1 410 Gone") Then Return SetError(2, 0, "")
    Return $Recv
EndFunc

Func _HTTPHead($Host, $Page, $Socket)
    Local $Command = "HEAD " & $Page & " HTTP/1.1" & @CRLF
    $Command &= "Host: " & $Host & @CRLF
    $Command &= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0" & @CRLF
    $Command &= "Connection: close" & @CRLF & @CRLF
    
    Local $BytesSent = TCPSend($Socket, $Command)
    If $BytesSent = 0 Then Return SetError(2, @error, 0)
    Return $BytesSent
EndFunc

Func _HTTPClose($Socket)
    TCPCloseSocket($Socket)
    TCPShutdown()
EndFunc

Func _GetMidleString($sString, $sStart, $sEnd, $iCase=-1, $iRetType=0)
    Local $iCaseSence = ''
    If $iCase = -1 Then $iCaseSence = '(?i)'
    
    Local $aArray = StringRegExp($sString, '(?s)' & $iCaseSence & $sStart & '(.*?)' & $sEnd, 3)
    Local $IsArrayCheck = IsArray($aArray)
    
    If $IsArrayCheck And $iRetType = 1 Then Return $aArray
    If $IsArrayCheck And $iRetType = 2 Then
        Local $iUbound = UBound($aArray)
        If Not StringInStr($aArray[$iUbound-1], "Next") Then Return $aArray[$iUbound-1]
        If ($iUbound - 2) >= 0 Then Return $aArray[$iUbound-2]
        Return $aArray[$iUbound-1]
    EndIf
    
    If $IsArrayCheck Then Return $aArray[0]
    Return SetError(1, 0, "")
EndFunc

It's part of my YouTube Download Center Project (look in my signature).

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

  • 2 months later...

Youtube was updated last week, and now the movies won’t load.

Replace this:

$Video_ID = _GetMidleString($SearchSource, '<a class="newvtitlelink" href="/watch\?v=', '" rel="')

With this:

$Video_ID = _GetMidleString($SearchSource, '<a href="/watch\?v=', '">')

It should work.

P.S

Hm, i guess that i will have to change that in my YT Download Center...

Edited by MsCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...