
This is something i spent my rainy day on, It's practically a gui with JW flv player embedded, it'll list all the episodes from all the shows by Revision3.com(tech talk and gadgets), they're pretty good shows i kinda just started watching them but their online player wasn't working for me, and it was a real pain in the A** not to be able to stream it properly in mplayer/vlc. Anyway, i only spent a couple of hours on this so it might not be super optimized
Oyeah, i almost forgot...the GUI is kinda big(1050x590) so if you're on a low resolution you'll have to adjust the code, its big cause you can watch 720p HD.
If anyone can get fullscreen to work let me know, i tried but it wouldn't work.
I'll host a RAR file with the JW Flv player,compiled exe and source, On my server.
Revision3TvPlayer.rar
Here's the source in code tag:
Plain Text
;Revision 3 TV player ;Author: Emanuel "Datenshi" Lindgren ;Credit: "ptrex" for player object code. http://www.autoitscript.com/forum/index.php?showtopic=65027&view=findpost&p=483970 ;Uses JW Flv Player ;http://www.longtailvideo.com/players/jw-flv-player/ Opt("GUIOnEventMode", 1) #include <GUIConstantsEX.au3> #include <GuiListView.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <ListViewConstants.au3> #include <inet.au3> #include <string.au3> #Include <array.au3> Dim $PageLinks Dim $VidThumbnails FileInstall("player.swf","player.swf") ; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; ---------------------------------- Declare objects ------------------------------- $oSWF = ObjCreate("ShockwaveFlash.ShockwaveFlash") ; -------------------------------------------- Main Gui --------------------------------- $hGui = GuiCreate("Revision3 TV", 1050, 590,-1, -1, BitOR($WS_SYSMENU, $WS_VISIBLE)) GUISetBkColor("0x292929") $DropdownShowSelect = GUICtrlCreateCombo("Tekzilla",50, 20, 150) ; create first item GUICtrlSetData(-1, "Systm|Hak5|Xlr8rtv|ScamSchool|TRS|ROFL|PixelPerfect|iFanboy|Jvsworld|HDnation|Filmriot|Diggnation|Diggdialogg|Diggreel|coop|Appjudgment", "Tekzilla") GUICtrlSetOnEvent($DropdownShowSelect,"ShowSelector") $DropdownVidQuality = GUICtrlCreateCombo("HD-Quality",200, 20, 150) ; create first item GUICtrlSetData(-1,"High-Quality|Low-Quality","HD-Quality") GUICtrlSetOnEvent($DropdownVidQuality,"QualitySelector") $hListView = GUICtrlCreateListView("Show Episodes", 792, 0,250,560) _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER) $previewpic = GUICtrlCreatePic("", 568, 2, 0, 0);("", 568, 0, 201, 113) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") $oSWF_Object = GUICtrlCreateObj ($oSWF, 10, 100 , 770 , 450) GUICtrlSetStyle ( $oSWF_Object, $WS_VISIBLE ) With $oSWF .ScaleMode = 3 ;0 showall, 1 noborder, 2 exactFit, 3 noscale .bgcolor = "505050" .WMode = "transparent" .allowScriptAccess = "Always" .Quality = 1 .flashvars = "autostart=true&fullscreen=true&smoothing=false" ;.Menu = "true" EndWith ShowSelector() GUISetOnEvent($GUI_EVENT_CLOSE, "GUIeventClose") GuiSetState() While 1 Sleep(100) WEnd ;------------------------------- Func ShowSelector($Quality = 1) $whatshow = GUICtrlRead($DropdownShowSelect) $Pool = "http://revision3.com/"&$whatshow&"/episodePage?type=recent&hideShow=1&hideArrows=1&type=recent&limit=500" $source = _InetGetSource($Pool) $PageLinks = StringRegExp($source,'href="(/.*?/.*?)"><img\sclass',3) $VidThumbnails = StringRegExp($source,'/revision3/images/shows/[-a-zA-Z0-9\_\.]*\w/\d*/.*.jpg',3) $VidNames = StringRegExp($source,'<br\s/>\s\s(.*)\s\s\(',3) If IsArray($VidNames) = 0 Then $VidNames = StringRegExp($source,'(\w.*)\s\s\(',3) Dim $items[Ubound($VidNames)] _GUICtrlListView_DeleteAllItems($hListView) For $x = 0 To Ubound($VidNames) -1 $items[$x] = GUICtrlCreateListViewItem($VidNames[$x],$hListView) Next Endfunc ;---------------------------- Func QualitySelector() $whatQuality = GUICtrlRead($DropdownVidQuality) Switch $whatQuality Case "HD-Quality" Return 0 Case "High-Quality" return 1 Case "Low-Quality" Return 2 EndSwitch EndFunc ;---------------------------- Func _FileOpen($Hotlink = 0) $FileOpen = _URIEncode("http://bitcast-a.bitgravity.com/"&$Hotlink) $oSWF.GotoFrame(1) $oSWF.Movie = @ScriptDir & "\player.swf?file="&$FileOpen $oSWF.rewind $oSWF.flashvars = "autostart=true&fullscreen=true&smoothing=false" EndFunc Func GUIeventClose() Exit EndFunc ;==>GUIeventClose ;---------------------------- Func _URIEncode($sData) ; by Prog@ndy Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"") Local $nChar $sData="" For $i = 1 To $aData[0] $nChar = Asc($aData[$i]) Switch $nChar Case 45, 46, 48-57, 65 To 90, 95, 97 To 122, 126 $sData &= $aData[$i] Case 32 $sData &= "+" Case Else $sData &= "%" & Hex($nChar,2) EndSwitch Next Return $sData EndFunc ;---------------------------- Func SetPreviewImage($Index) InetGet("http://bitcast-a.bitgravity.com"&$VidThumbnails[$Index],@Tempdir&"/"&$Index&"-R3tv.jpg") GUICtrlSetImage($previewpic,@Tempdir&"/"&$Index&"-R3tv.jpg") Endfunc ;---------------------------- Func GetHotlink($LV_Index) $VideoPage = $PageLinks[$LV_Index] $Vidsource = _InetGetsource("http://revision3.com"&$VideoPage) $HotLink = StringRegExp($Vidsource,"/revision3/web/[-a-zA-Z0-9\_\.]*\w/\d*/.*[mp4|flv]",3) $QualityValue = QualitySelector() Return $HotLink[$QualityValue] EndFunc ;---------------------------- Func MyErrFunc() ; author ptrex $HexNumber=hex($oMyError.number,8) Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc ;---------------------------- Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo $hWndListView = $hListView If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hWndListView Switch $iCode Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) $Index = DllStructGetData($tInfo, "Index") SetPreviewImage($Index) Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam) $Index = DllStructGetData($tInfo, "Index") $Hotlink = GetHotlink($Index) _FileOpen($Hotlink) EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY
Don't forget you'll need JW FLV Player in scriptdir and name it "player.swf", don't worry about it if you download the .rar its all in there.
Enjoy! and if you steal my code, gief credit
Edited by Datenshi, 10 August 2009 - 06:23 PM.





