I'm trying to create a program that'll download .torrent files for me automatically and place them in a folder so uTorrent starts downloading them.
The whole script works flawless (for now) except for the most important part: Downloading the .torrent file.
It works, it downloads the .torrent file perfectly, but for some reason uTorrent gives me the error that 'the torrent file was not correctly encoded'.
For some reason downloading the torrent with InetGet instead of my browser, fucks it up. The size of the torrent is exactly the same as that of the one I download with my browser, still the files are different.
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <INet.au3>
#include <Array.au3>
$downloadfolder = 'C:\Users\Ludo\Downloads\torrents'
$searchquiry = StringReplace('the hobbit desolation of smaug', ' ', '+')
$preferedsite = 'kickmirror'
$link = 'http://torrentz.eu/search?f='&$searchquiry
$source = _INetGetSource($link, True)
$S1 = StringSplit($source, '<a rel="nofollow" href="/searchA?f='&$searchquiry&'"> date </a> | <a rel="nofollow" href="/searchS?f='&$searchquiry&'"> size </a> | <b> peers </b></h3>', 1)
$S2 = StringSplit($S1[2], '<dl><dt style="text-align: right">', 1)
$S3 = StringSplit($S2[1], @LF, 1)
global $torrents[$S3[0]+1][7]
$torrents[0][0] = $S3[0]-1
; Form of $torrents[a][b] for b:
; $torrents[a][0] = total string
; $torrents[a][1] = torrent url
; $torrents[a][2] = torrent title
; $torrents[a][3] = torrent size
; $torrents[a][4] = torrent seeders
; $torrents[a][5] = torrent peers
; $torrents[a][6] = torrent type
For $i = 1 to $torrents[0][0]
;MsgBox(0, '', _StringBetw($S3[$i], '<a href="', '">'))
$torrents[$i][0] = $S3[$i]
$torrents[$i][1] = _StringBetw
($S3[$i], '<a href="', '">')
$torrents[$i][2] = _StringStrip
(_StringBetw
($S3[$i], '<a href="'&$torrents[$i][1]&'">', '</a>'))
$temp1 = StringSplit($S3[$i], '</a> » ', 1)
$temp2 = StringSplit($temp1[2], '</dt><dd>', 1)
$temp3 = StringSplit($S3[$i], '</span></span><span class="s">', 1)
$temp4 = StringSplit($temp3[2], '</span> <span class="u">', 1)
$temp5 = StringSplit($temp4[2], '</span><span class="d">', 1)
$temp6 = StringSplit($temp5[2], '</span>', 1)
$torrents[$i][3] = $temp4[1]
$torrents[$i][4] = $temp5[1]
$torrents[$i][5] = $temp6[1]
$torrents[$i][6] = $temp2[1]
Next
;_ArrayDisplay($torrents)
;ClipPut($torrents[1][1]&@CRLF&@CRLF&$torrents[$torrents[0][0]][2])
$source2 = _INetGetSource('http://torrentz.eu/'&$torrents[1][1])
$A1 = StringSplit($source2, ' torrent download locations</h2><dl><dt>', 1)
$A2 = StringSplit($A1[1], '</span> ', 1)
$A3 = StringSplit($A1[2], '<a href="', 1)
$locations = $A2[$A2[0]]
global $tors[$locations+1]
$n = 0
For $i = 2 to $locations
$A4 = StringSplit($A3[$i], '" ', 1)
$tors[$i] = $A4[1]
If StringInstr($tors[$i], $preferedsite) Then
$n = $i
EndIf
Next
If $n = 0 Then
Msgbox(32, 'Too bad', 'No kickmirror torrent links found..')
Exit
EndIf
;_ArrayDisplay($tors)
$source3 = _INetGetSource($tors[$n], True)
;$B1 = _StringBetw($source3, '<a title="Magnet link" href="', '"')
;ShellExecute($B1)
$B1 = _StringBetw
($source3, '<a rel="nofollow" title="Download verified torrent file" href="', '"')
$B2 = StringSplit($B1, '.torrent?title=', 1)
$finallink = $B2[1]&'.torrent'
InetGet($finallink,$downloadfolder&'\'&$B2[2]&'.torrent', 4)
MsgBox(32, 'Succes', 'Torrent started downloading!')
Func _StringBetw
($string, $start, $end)
$pa = StringSplit($string, $start, 1)
If $pa[0] < 2 Then Return 0
$pb = StringSplit($pa[2], $end, 1)
Return $pb[1]
EndFunc
Func _StringStrip
($string)
$s = StringReplace($string, '<b>', '')
$s1 = StringReplace($s, '</b>', '')
Return $s1
EndFunc
Please try it out, then try to run the torrent with utorrent or some other torrent downloader.