CFIHS Posted August 13, 2013 Share Posted August 13, 2013 I want to automate the imagehoster pics.lt, unfortunately the used PHP-Script has no API. http://pics.lt/index.php?lang=english Thank you in advance. ^#include <WinHttp.au3> #include <String.au3> $hOpen = _WinHttpOpen() $hConnect = _WinHttpConnect($hOpen, "pics.lt") $aHeader = _WinHttpSimpleRequest($hConnect, "GET", "/index.php?lang=english", $WINHTTP_NO_REFERER, $WINHTTP_NO_REQUEST_DATA, $WINHTTP_NO_ADDITIONAL_HEADERS, True) $aCookie = _StringBetween($aHeader[0], "Cookie: ", ";") $hImage = FileOpenDialog("", @ScriptDir, "(*.bmp; *.gif; *.png; *.jpg)") $bImage = FileOpen($hImage, 16) ;$sHeader = ?! _WinHttpSimpleRequest($hConnect, "POST", "/upload.php", "pics.lt/index.php?lang=english", $bImage, $sHeader) Link to comment Share on other sites More sharing options...
FireFox Posted August 13, 2013 Share Posted August 13, 2013 (edited) Hi,Welcome to the autoit forum Search for the _WinHTTP_SimpleFormFill function, trancexx provided some examples on the forum.Br, FireFox. Edited August 13, 2013 by FireFox Link to comment Share on other sites More sharing options...
hiho Posted August 13, 2013 Share Posted August 13, 2013 This should work but i've no idea why it doesnt.. #include <Winhttp.au3> $hOpen = _WinHttpOpen() $hConnect = _WinHttpConnect($hOpen, "pics.lt") $sRead = _WinHttpSimpleFormFill($hConnect, "/upload.php", "", _ "name:MAX_FILE_SIZE", 10485760, _ "name:imgUrl", "", _ "name:fileName[]", "animeg.jpg", _ "name:file[]", @DesktopDir & "\animeg.jpg", _ "name:alt[]", "animeg", _ "name:new_height[]", "", _ "name:new_width[]", "", _ "name:submit", "Upload") ConsoleWrite($sRead & @CRLF) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) or if it is working then i don't know how to get the url of the image. Link to comment Share on other sites More sharing options...
CFIHS Posted August 13, 2013 Author Share Posted August 13, 2013 I just managed it. Many thanks! #include <WinHttp.au3> #include <String.au3> $hOpen = _WinHttpOpen() $hConnect = _WinHttpConnect($hOpen, "pics.lt") $hImage = FileOpenDialog("", @ScriptDir, "(*.bmp; *.gif; *.png; *.jpg)") $aSS = StringSplit($hImage, "\") $aDescription = StringSplit($aSS[$aSS[0]], ".") $sSource = _WinHttpSimpleFormFill($hConnect, "/upload.php", Default, _ "name:file[]", $hImage, _ "name:alt[]", $aDescription[1]) $aSB = _StringBetween($sSource, '<div class="img_box">', '" title="' & $aDescription[1] & '" class="lightbox" >') $aURL = StringSplit($aSB[0], '"') ConsoleWrite("URL: " & $aURL[2]) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) Link to comment Share on other sites More sharing options...
hiho Posted August 13, 2013 Share Posted August 13, 2013 Are you sure? The script above fails.. Link to comment Share on other sites More sharing options...
CFIHS Posted August 13, 2013 Author Share Posted August 13, 2013 It works perfect. Error? Link to comment Share on other sites More sharing options...
hiho Posted August 14, 2013 Share Posted August 14, 2013 C:\Users\--------\Desktop\AutoIT\msgboxtest.au3 (20) : ==> Subscript used with non-Array variable.: $aURL = StringSplit($aSB[0], '"') $aURL = StringSplit($aSB^ ERROR Runnin your (or mine) script always returnrs the following output (which is why i sad that it should work).. expandcollapse popup<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CF Image Host < - Image Gallery Page 1</title> <meta name="description" content="Free Image Hosting, Online image gallery of uploaded images" /> <meta name="keywords" content="gallery, images, photos, image gallery, photo gallery, free image hosting"/> <meta name="robots" content="index,follow"/> <link href="http://pics.lt/favicon.ico" rel="icon" type="image/x-icon" /> <link rel="alternate" type="application/rss+xml" title="CF Image Host Rss Feed" href="http://pics.lt/feed.php" /> <link rel="stylesheet" href="http://pics.lt/themes/day5row/day5row.css?v=1.65" type="text/css" /> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-2925509-3']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body id="gallery"> <div id="wrap"> <div id="header" class="clear_both"> <div id="logo"> <h1><a href="http://pics.lt/index.php" title="CF Image Host Pradžia">CF Image Host</a></h1> <h2>Free CF Image Host</h2> </div> <div class="languages" onMouseOver="document.getElementById('language').style.display='block'" onMouseOut="document.getElementById('language').style.display='none'"> <div class="lan_on"><span>Kalba :</span><img src="http://pics.lt/languages/lithuanian.png" width="23" height="15" alt="lithuanian" title="lithuanian" /></div> <div id="language" class="language" ><a href="http://pics.lt/index.php?lang=english" title="english" rel="nofollow"><img src="http://pics.lt/languages/english.png" alt="english" width="23" height="15" /></a> </div> <div class="clear_both"></div> </div> <div id="search"> <form method="get" action="http://pics.lt/gallery.php"> <input type="text" size="28" name="search" id="searchBox" class="text_input" onblur="if(this.value=='')value='Nuotraukos paieška';" onfocus="if(this.value=='Nuotraukos paieška')value=''" value="Nuotraukos paieška" /><input type="submit" value="Ieškoti" class="button" /> </form> </div> <div id="nav"> <ul id="main-nav"> <li id="page_home"><a href="http://pics.lt/" title="Pradžia">Pradžia</a></li> <li id="page_gallery"><a href="http://pics.lt/gallery.php" title="Galerija">Galerija</a></li> <li id="page_faq_page"><a href="http://pics.lt/faq.php" title="DUK">DUK</a></li> <li id="page_tos_page"><a href="http://pics.lt/tos.php" title="Naudojimosi sąlygos">Naudojimosi sąlygos</a></li> <li id="page_contact_page"><a href="http://pics.lt/contact.php" title="Kontaktai">Kontaktai</a></li></ul> </div> <div class="clear_both"></div> </div> <div id="content"> <div id="msg"></div><h4 class="search">Sorry, No Results Found For <span class="search_for">Nuotraukos paieЕЎka</span></h4><p class="search_sug">Suggestions:<br/>Make sure all words in your query are spelled correctly<br/>Try a shorter query, or replace some keywords</p><div id="ImageWidget" class="boxpanel"></div> <div class="clear_both"></div> </div> <div id="footer"> <p>Copyright © - All Rights Reserved.</p> <div id="feed"><a href="http://pics.lt/feed.php" title="image Feed"><span>image Feed</span></a></div> <div class="sp"></div> <p>Powered By <a href="http://codefuture.co.uk/projects/imagehost/" title="Free PHP Image Hosting Script">CF Image Hosting script</a> | Design By <a href="http://codefuture.co.uk" title="codefuture.co.uk - online webmaster tools,code Generators">codefuture.co.uk</a></p> </div> </div> <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script>window.jQuery || document.write("<script src='js/jquery-1.7.1.min.js'>\x3C/script>")</script> <script type="text/javascript" src="http://pics.lt/js/user.js"></script> <script type="text/javascript"> $(document).ready(function() { $('#ImageWidget').fadeOut('slow', function(){ $('#ImageWidget').load("http://pics.lt/cfajax.php",{widgit: 25}, function(){ $('#ImageWidget').fadeIn('slow'); }); }); }); </script> <!--[if lt IE 7 ]> <script src="js/dd_belatedpng.js"></script> <script>DD_belatedPNG.fix("img, .png_bg"); // Fix any <img> or .png_bg bg-images. Also, please read goo.gl/mZiyb </script> <![endif]--> </body> </html> Link to comment Share on other sites More sharing options...
wakillon Posted March 15, 2014 Share Posted March 15, 2014 I'm a bit late, but for those who are still interested, this way works. expandcollapse popup#include <WinHTTP.au3> #include <zlib.au3> ;~ http://pics.lt/index.php?lang=english Global $sBoundary = '--' & _GenerateAlphaNumericRandomString ( 50 ) $sImagePath = FileOpenDialog ( 'Choose a pcture', @MyDocumentsDir, '(*.bmp; *.gif; *.png; *.jpg; *.jpeg ; *.psd)' ) ; Supported Image Formats: png, jpg, jpeg, bmp, psd, gif, animated gif. If Not FileExists ( $sImagePath ) Then Exit $sDirectLink = _PicsItUpload ( $sImagePath ) ConsoleWrite ( 'Direct Link : ' & $sDirectLink & @Crlf ) If $sDirectLink Then ShellExecute ( $sDirectLink ) Func _PicsItUpload ( $sImagePath ) If FileGetSize ( $sImagePath ) > 10*1024*1024 Then Return -1 ; max 10 MB Local $ReceivedData = Binary ( '' ), $chunk, $iExtended Local $hOpen = _WinHttpOpen () Local $hConnect = _WinHttpConnect ( $hOpen, 'pics.lt' ) Local $hRequest = _WinHttpOpenRequest ( $hConnect, 'POST', '/upload.php', 'HTTP/1.1' ) _WinHttpAddRequestHeaders ( $hRequest, 'Referer: http://pics.lt/index.php?lang=english' ) _WinHttpAddRequestHeaders ( $hRequest, 'Accept-Encoding: gzip, deflate' ) Local $sDataToSend = _PicsItSetDataToSend ( $sImagePath ) If Not @error Then _WinHttpAddRequestHeaders ( $hRequest, 'Content-Length: ' & StringLen ( $sDataToSend ) ) Local $sContentType = 'Content-Type: multipart/form-data; boundary=' & StringTrimLeft ( $sBoundary, 2 ) _WinHttpSendRequest ( $hRequest, $sContentType, $WINHTTP_NO_REQUEST_DATA, StringLen ( $sDataToSend ) ) _UploadProgress ( $hRequest, $sImagePath, $sDataToSend ) If Not @error Then _WinHttpReceiveResponse ( $hRequest ) If _WinHttpQueryDataAvailable ( $hRequest ) Then While 1 $chunk = _WinHttpReadData ( $hRequest, 2, 1024 ) If Not @extended Then ExitLoop $ReceivedData &= $chunk WEnd $ReceivedData = BinaryToString ( _ZLIB_GZUncompress ( $ReceivedData ), 1 ) EndIf EndIf EndIf _WinHttpCloseHandle ( $hRequest ) _WinHttpCloseHandle ( $hConnect ) _WinHttpCloseHandle ( $hOpen ) If $ReceivedData Then Local $aRet = StringRegExp ( $ReceivedData, '(?s)(?i)codedirect" value="(.*?)"', 3 ) If Not @error Then Return $aRet[0] EndIf EndFunc ;==> _PicsItUpload () Func _PicsItSetDataToSend ( $sFilePath ) If Not FileExists ( $sFilePath ) Then Return SetError ( -1 ) Local $hFile = FileOpen ( $sFilePath ) If $hFile = -1 Then Return SetError ( 1, 0, 0 ) Local $sData = FileRead ( $hFile ) FileClose ( $hFile ) Return $sBoundary & @CRLF & _ 'Content-Disposition: form-data; name="fileName[]"' & @CRLF & @CRLF & $sFilePath & @CRLF & $sBoundary & @CRLF & _ 'Content-Disposition: form-data; name="file[]"; filename="' & _FileGetFullNameByFullPath ( $sFilePath ) & '"' & @CRLF & _ 'Content-Type: image/jpeg' & @CRLF & @CRLF & $sData & @CRLF & $sBoundary & @CRLF & _ 'Content-Disposition: form-data; name="alt[]"' & @CRLF & @CRLF & _FileGetNameWithoutExtByFullPath ( $sFilePath ) & @CRLF & $sBoundary & @CRLF & _ 'Content-Disposition: form-data; name="submit"' & @CRLF & @CRLF & 'Upload' & @CRLF & $sBoundary EndFunc ;==> _PicsItSetDataToSend () Func _UploadProgress ( $hRequest, $sPicPath, $sDataToSend ) If Not FileExists ( $sPicPath ) Then Return SetError ( -1 ) Local $sDatas = StringToBinary ( $sDataToSend ) Local $iNumberOfBytesToSend = 1024 Local $Bin, $iStart = 1, $iExtended = 0 While 1 $Bin = BinaryMid ( $sDatas, $iStart, $iNumberOfBytesToSend ) If BinaryLen ( $Bin ) = 0 Then Return _WinHTTPWriteData ( $hRequest, $Bin, 1 ) If Not @error Then $iExtended += @extended ConsoleWrite ( '+ $iPercent : ' & Round ( ( $iExtended ) / ( StringLen ( $sDataToSend ) ) * 100, 2 ) & @Crlf ) $iStart += $iNumberOfBytesToSend Else $Bin = 0 Return SetError ( 1 ) EndIf WEnd EndFunc ;==> _UploadProgress () Func _FileGetNameWithoutExtByFullPath ( $sFullPath ) Local $aPathSplit = StringSplit ( $sFullPath, '\' ) If Not @error Then Return StringLeft ( $aPathSplit[UBound($aPathSplit)-1], StringInStr ( $aPathSplit[UBound($aPathSplit)-1], '.', 0, -1 ) - 1 ) EndFunc ;==> _FileGetNameWithoutExtByFullPath () Func _FileGetFullNameByFullPath ( $sFullPath ) Local $aFileName = StringSplit ( $sFullPath, '\' ) If Not @error Then Return $aFileName[$aFileName[0]] EndFunc ;==> _FileGetFullNameByFullPath () Func _GenerateAlphaNumericRandomString ( $iLen ) Local $sString = '' Do Switch Random ( 1, 3, 1 ) Case 1 $sString &= Chr ( Random ( 48, 57, 1 ) ) ; 0 to 9 Case 2 $sString &= Chr ( Random ( 65, 90, 1 ) ) ; A to Z Case 3 $sString &= Chr ( Random ( 97, 122, 1 ) ) ; a to z EndSwitch Until StringLen ( $sString ) = $iLen Return $sString EndFunc ;==> _GenerateAlphaNumericRandomString () AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now