Jump to content

uTorrent UDF


JohnOne
 Share

Recommended Posts

Ive been playing with utorrent and decided to try and create a set of UDFs to work with its Backend web API.

Its my first attempt at a udf so be gentle.

 

Requirements

µTorrent 2.0.2, and its Web API installed and enabled (Options - Preferences - Web UI)

Username - password - port, should be set (needed for both local and remote access)

 

This is by no means complete, infact its very early days and just has one function for now..

_List_Torrents() which should return a multi dimensional array listing all current torrents in your list and their various states,

 

 

#include-once
#include <String.au3>

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

; Name...........: _TorrentAdd_URL
; Description ...: Adds a torrent to your µtorrent job list
; Syntax.........: _TorrentAdd_URL($sUser, $sPass, $sTorrentURL, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sTorrentURL - http address of the torrent you want to add.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne
; Modified.......:
; Remarks .......: All parameters should be string type

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _TorrentAdd_URL($sUser, $sPass, $sTorrentURL, $sIP = @IPAddress1, $sPort = "8080")
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=add-url&s=" & $sTorrentURL
    $temp = BinaryToString(InetRead($sURL), 1)
    If StringInStr($temp, '"build"') Then
        Return True
    Else
        Return False
    EndIf
EndFunc   ;==>_TorrentAdd_URL

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

; Name...........: _TorrentAction
; Description ...: Performs an action on a torrent in your µtorrent job list
; Syntax.........: _TorrentAction($sUser, $sPass, $sTorrentName, $sAction, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sTorrentName - Name of the torrent you wish to work with.
;                 $sAction - The action to perform on the torrent...below
;                 
;                 start
;                 stop
;                 pause
;                 unpause
;                 forcestart
;                 recheck
;                 remove
;                 removedata
;                 setprio
;                 
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne
; Modified.......:
; Remarks .......: All parameters should be string type

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _TorrentAction($sUser, $sPass, $sTorrentName, $sAction, $sIP = @IPAddress1, $sPort = "8080")
    $sHash = _Get_Hash($sUser, $sPass, $sTorrentName, $sIP, $sPort)
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=" & $sAction & "&hash=" & $sHash
    $temp = BinaryToString(InetRead($sURL), 1)
    If StringInStr($temp, '"build"') Then
        Return True
    Else
        Return False
    EndIf
EndFunc   ;==>_TorrentAction

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

; Name...........: _List_Torrents
; Description ...: Returns a list of all the current torrent jobs and the states they are in
; Syntax.........: _List_Torrents($sUser, $sPass, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - 2 Dimentional array, where the colums represent the torrent jobs and rows are the properties.
;                 [0][0] = The hash of the torrent
;                 [1][0] = The The state of the torrent
;                 [2][0] = The name of the torrent
;                 [3][0] = The size of the torrent (bytes)
;                 [4][0] = The progress percentage (1000 = 100.0) complete
;                 [5][0] = The amount downloaded (bytes)
;                 [6][0] = The amount uploaded (bytes)
;                 [7][0] = The torrent ratio
;                 [8][0] = The upload speed (bps)
;                 [9][0] = The download speed (bps)
;                 [10][0] = The ETA (seconds)
;                 [11][0] = The torrent label
;                 [12][0] = The amount of connected peers
;                 [13][0] = The amount of peers in the swarm
;                 [14][0] = The amount of connected seeds
;                 [15][0] = The amount of seeds in the swarm
;                 [16][0] = The availability
;                 [17][0] = The queue order of the torrent
;                 [18][0] = The amount remaining to download(to finish the torrent) (bytes)
;
;                 Failure - 0
; Author ........: JohnOne
; Modified.......:
; Remarks .......: All parameters should be string type

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _List_Torrents($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080")
    $aList = _Get_List(_Get_Token($sUser, $sPass, $sIP, $sPort))
    If IsArray($aList) Then
        Return $aList
    Else
        Return 0
    EndIf
EndFunc   ;==>_List_Torrents

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
; Name...........: _TorrentSet_GL_UD
; Description ...: Sets the global Upload and Download rate
; Syntax.........: _TorretSet_GL_UD($sUser, $sPass,  $sUp, $sDown, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sUp - [Optional] Global upload rate in KB (Default is 0, unlimited)
;                 $sDown - [Optional] Global Download rate in KB (Default is 0, unlimited)
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne
; Modified.......:
; Remarks .......:

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _TorrentSet_GL_UD($sUser, $sPass,  $sUp = 0, $sDown = 0, $sIP = @IPAddress1, $sPort = "8080")
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=setsetting&s=max_ul_rate&v=" & $sUp  & "&s=max_dl_rate&v=" & $sDown
    $temp = BinaryToString(InetRead($sURL), 1)
    If StringInStr($temp, '"build"') Then
        Return True
    Else
        Return False
    EndIf
EndFunc

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
; Name...........: _Get_Settings
; Description ...: Retrieves a list of settings, variable types, and current values supported in your version of µtorrent.
; Syntax.........: _Get_Settings($sUser, $sPass, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - A 2 dimensional array, where colum 0 = the setting name, colum 1 = the type of variable you can use....
;                           ... (0=integer 1=boolean 2=string), colum 2 = The current setting of the variable.
;                 Failure - False
; Author ........: JohnOne
; Modified.......:
; Remarks .......:The list returned from this function is to get info on a setting you can alter using _Set_Settings() function
;                           There are too many to list here and they may vary between µtorrent versions

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _Get_Settings($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080")
    Local $tmpfile = @ScriptDir & "temp.txt"
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $GSettings_URL = $aParams[0] & "?action=getsettings&token=" & $aParams[1]
    $temp = InetRead($GSettings_URL)
    $temp = BinaryToString($temp, 1)
    $temp = StringRegExpReplace($temp, "(s)", "")
    $temp = _StringBetween($temp,"[[", "]]")
    FileWrite($tmpfile,$temp[0])
    $sfile = FileRead($tmpfile)
    $atemp = StringSplit($sfile, "],[" , 3)
    Local $aFinalList[UBound($atemp)][3]
    For $i = 0 To UBound($atemp)-1
        $atemp2 = StringSplit($atemp[$i], ",", 2)
        For $j = 0 To 2
            $aFinalList[$i][$j] = $atemp2[$j]
        Next
    Next
    $atemp = 0
    FileDelete($tmpfile)
    If IsArray($aFinalList) And $aFinalList[0][2] <> "" Then
        Return $aFinalList
    Else
        Return False
    EndIf
EndFunc

; #INTERNAL FUNCTIONS# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

; Name...........: _Get_Token
; Description ...: Retrieves a security token needed to acces the web API
;
; Name...........: _Get_List
; Description ...: Retrieves a list of torrents, using the token
;
; Name...........: _Get_Hash
; Description ...: Retrieves a hash of a given torrent, needed to perform actions on them


; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Func _Get_Token($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080")
    Local $aRet[2]
    $sBase_URL = "http://" & $sUser & ":" & $sPass & "@" & $sIP & ":" & $sPort & "/gui/"
    $sToken_URL = $sBase_URL & "token.html"
    $aRet[0] = $sBase_URL
    $aRet[1] = StringMid(BinaryToString(InetRead($sToken_URL, 1)), 45, 60)
    Return $aRet
EndFunc   ;==>_Get_Token

Func _Get_List($aParams)
    $sList_URL = $aParams[0] & "?list=1" & "&token=" & $aParams[1]
    $temp = _StringBetween(StringRegExpReplace(BinaryToString(InetRead($sList_URL, 1)), "(s)", ""), "[[", "]]")
    $aList = StringSplit($temp[0], "],[", 3)
    Local $aFinalList[19][UBound($aList)]
    For $i = 0 To UBound($aFinalList, 2) - 1
        $atemp = StringSplit($aList[$i], ",", 2)
        For $j = 0 To 18
            $aFinalList[$j][$i] = $atemp[$j]
        Next
    Next
    Return $aFinalList
EndFunc   ;==>_Get_List

Func _Get_Hash($sUser, $sPass, $sTorrentName, $sIP = @IPAddress1, $sPort = "8080")
    Local $sHash
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $aList = _Get_List($aParams)
    For $i = 0 To UBound($aList, 2) - 1
        If StringInStr($aList[2][$i], $sTorrentName) Then
            $sHash = StringReplace($aList[0][$i], '"', '')
            ExitLoop
        EndIf
    Next
    Return $sHash
EndFunc   ;==>_Get_Hash

example

 

#include-once
#include <utorrent.au3>

_TorrentAdd_URL("username", "password", "http://isohunt.com/download/22598012/PublicDomain.torrent", @IPAddress1, "port") ;add a public domain torrent
Sleep(5000)
_TorrentAction("username", "password", 'Karate', "pause", @IPAddress1, "port") ;pause the download
Sleep(5000)
_TorrentAction("username", "password", 'Karate', "unpause", @IPAddress1, "port") ;unpause the download
Sleep(5000)
_TorrentAction("username", "password", 'Karate', "removedata", @IPAddress1, "port") ; remove the torrent and data

Unfortunately I dont have the means to test it remotely here, so if anyone fancies it Id sure appreciate you feedback.

 

EDIT: 22 June 2010

Tidied up this whole mess of a post :mellow:

Added function headers and tidied code

 

EDIT: 16 December 2011

This UDF has been updated by supagusti in post #18

(untested)

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Very nice. This will make automating uTorrent much easier. Trying to get info from the GUI itself proved messy (at least for me).

Edited by FuryCell
HKTunes:Softpedia | GoogleCodeLyricToy:Softpedia | GoogleCodeRCTunes:Softpedia | GoogleCodeMichtaToolsProgrammer n. - An ingenious device that turns caffeine into code.
Link to comment
Share on other sites

Indeed

What started me to look at this was an auto downlosder called TB notify, which is built for TorrentBytes website.

My goal is to expand on this and make a full UDF to do whatever you want with utorrent, locally or remotely.

Note: when you have the WEBUI installed and enabled you can navigate to its index page and control your torrents remotely via an html webpage which looks like your actuall client.

Im just trying to make functions to automate it.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

InetRead($sToken_URL, 1) in the _Get_Token function returns an empty string for me.

Windows 7 x64; latest version of uTorrent; WebUI enabled.

I have no prior experience with WebUI so is there anything I may need to know or do?

edit: more info

Edited by jaberwocky6669
Link to comment
Share on other sites

Installation of µTorrent web UI

* To install the WebUI, after configuring it with the instructions in the section below, simply visit the WebUI URL in your browser (http://yourip:yourport/gui/ ) and µTorrent will download it automatically.

* To install manually or upgrade to a newer version, download http://sites.google.com/site/ultimasites/files/utorrent-webui.2010041613193401.zip?attredirects=0&d=1 (the latest) version. After downloading, rename the file to "webui.zip" and place it in %AppData%\uTorrent (Paste this path into the Explorer address bar).

* If running µTorrent in portable mode, place it in the same folder as the .dat files

http://www.utorrent.com/documentation/webui

____________________________________________________

EDIT:

Added _TorrentRemoveData()

EDIT:

Renamed _TorrentAction()

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

Installation of µTorrent web UI

* To install the WebUI, after configuring it with the instructions in the section below, simply visit the WebUI URL in your browser (http://yourip:yourport/gui/ ) and µTorrent will download it automatically.

* To install manually or upgrade to a newer version, download http://sites.google.com/site/ultimasites....2010041613193401.zip?attredirects=0&d=1 (the latest) version. After downloading, rename the file to "webui.zip" and place it in %AppData%\uTorrent (Paste this path into the Explorer address bar).

* If running µTorrent in portable mode, place it in the same folder as the .dat files

http://www.utorrent.com/documentation/webui

____________________________________________________

EDIT:

Added _TorrentRemoveData()

Okies, I already had webui.zip so I dunno, I'll keep trying it out.

Link to comment
Share on other sites

Allright, copy and pasted recent revision and now the _Get_Token function works but I now get this:

C:\Users\Matthew\Desktop\New AutoIt v3 Script (2).au3 (36) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$aFinalList[$j][$i] = $atemp[$j]
$aFinalList[$j][$i] = ^ ERROR

breaking news:

I modified the _Get_List function: ( see relevant comment below )

Func _Get_List($aParams)
    Local $sList_URL = $aParams[0] & "?list=1" & "&token=" & $aParams[1]
    Local $temp = _StringBetween(StringRegExpReplace(BinaryToString(InetRead($sList_URL, 1)), "(\s)", ""), "[[", "]]")
    Local $aList = StringSplit($temp[1], "],[", 3) ; I changed the array element from 0 to 1 and now it works like a charm!
    Local $aFinalList[19][UBound($aList)]

    For $i = 0 To UBound($aFinalList, 2) - 1
        $atemp = StringSplit($aList[$i], ",", 2)

        For $j = 0 To 18
            $aFinalList[$j][$i] = $atemp[$j]
        Next
    Next

    Return $aFinalList
EndFunc ;==>_Get_List

edit:

Also, in the _Get_Token function I think you may have a mistyped function parameter:

Func _Get_Token($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080") ; $sPort was $Port
    Local $aRet[2]
    $sBase_URL = "http://" & $sUser & ":" & $sPass & "@" & $sIP & ":" & $sPort & "/gui/"
    $sToken_URL = $sBase_URL & "token.html"
    $aRet[0] = $sBase_URL
    Local $tokenTmp = InetRead($sToken_URL, 1)
    If @error Then MsgBox(0, "@error", @error & @CRLF & "script line: " & @ScriptLineNumber - 1)
    $aRet[1] = StringMid(BinaryToString($tokenTmp), 45, 60)
    Return $aRet
EndFunc ;==>_Get_Token
Edited by jaberwocky6669
Link to comment
Share on other sites

I appreciate the feedback, thanks.

The array returned from _List_Torrents() should contain this information.

Each colum. This is colum 0

[0][0] = The hash of the torrent

[1][0] = The The state of the torrent

[2][0] = The name of the torrent

[3][0] = The size of the torrent (bytes)

[4][0] = The progress percentage (1000 = 100.0) complete

[5][0] = The amount downloaded (bytes)

[6][0] = The amount uploaded (bytes)

[7][0] = The torrent ratio

[8][0] = The upload speed (bps)

[9][0] = The download speed (bps)

[10][0] = The ETA (seconds)

[11][0] = The torrent label

[12][0] = The amount of connected peers

[13][0] = The amount of peers in the swarm

[14][0] = The amount of connected seeds

[15][0] = The amount of seeds in the swarm

[16][0] = The availability

[17][0] = The queue order of the torrent

[18][0] = The amount remaining to download(to finish the torrent) (bytes)

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

I've no idea why that array wont work for you, the return from _stringbetween() should hold the first found strinh in [0] of the array.

I just put these things down to anomalys :mellow:

What OS you using?

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

I've no idea why that array wont work for you, the return from _stringbetween() should hold the first found strinh in [0] of the array.

I just put these things down to anomalys :mellow:

What OS you using?

Win7 pro x64
Link to comment
Share on other sites

Added _Get_Settings() function

____________________________________

Hi jaberwocky6669

I appreciate your interest and enthusiasm, but your list is I think from version 1.8.3 of µtorrent.

This is why I wait until completing the function to retrieve the current supported list of settings, before adding the function to set them.

I assure you I will get around to completing all the functions available, Im just in no hurry.

Thanks for your AIO conversions by the way.

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

  • 7 months later...

Any possibility to start|stop download one|few|all files from torrent, if it consist of several files|folders?

If I recall correctly it is entirely possible (if you mean when the torrent is a folder).

I wont be adding anything to this though, as I think it will quickly be out of date, since they released some sort of SDK pakage to develop apps for it.

Feel free to add anything you want though.

Info can be found Here and here

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

  • 9 months later...

I've tried to use the script, but it seems, that utorrent 3.0 has changed something. So i decided to rewrite the UDF with the use of WINHTTP.

Tested with Win7 SP1 x64 / AutoIt3Wrapper v.2.0.3.0

#include <String.au3>
;~ #include<windowsconstants.au3>
;~ #include<guiconstants.au3>
#include<array.au3>
$uTorrentServerUsername="admin"
$uTorrentServerPassword="test"
$uTorrentServerAddress="127.0.0.1"
$uTorrentServerPort="8080"
$objHTTP = ObjCreate ("winhttp.winhttprequest.5.1") ; this object must stay the same - when it changes the token changes too !!!!!
;======================================================================== BEGIN TESTING ==================================================================================================
;Get Settings from uTorrent
ConsoleWrite("_Get_Settings -->check POPUP"&@CRLF)
$Array=_Get_Settings($uTorrentServerUsername, $uTorrentServerPassword, $uTorrentServerAddress, $uTorrentServerPort)
_ArrayDisplay($Array)
;add a public domain torrent
ConsoleWrite(" _TorrentAdd_URL...")
if _TorrentAdd_URL($uTorrentServerUsername, $uTorrentServerPassword, "http://isohunt.com/download/22598012/PublicDomain.torrent", $uTorrentServerAddress, $uTorrentServerPort) then
ConsoleWrite("OK"&@CRLF)
Else
ConsoleWrite("NOK"&@CRLF)
EndIf
Sleep(5000)
;list Torrents
ConsoleWrite("_ListTorrents-->check POPUP"&@CRLF)
$torrentlist=_List_Torrents($uTorrentServerUsername, $uTorrentServerPassword, $uTorrentServerAddress, $uTorrentServerPort)
_ArrayDisplay($torrentlist)
;pause the download
ConsoleWrite("_TorrentAction Pause ... ")
if _TorrentAction($uTorrentServerUsername, $uTorrentServerPassword, 'Karate', "pause", $uTorrentServerAddress, $uTorrentServerPort) then
ConsoleWrite("OK"&@CRLF)
Else
ConsoleWrite("NOK"&@CRLF)
EndIf
Sleep(5000)
;set Global UP and Download Speed
ConsoleWrite("_TorrentSetUP/DownSpeed...")
if _TorrentSet_GL_UD($uTorrentServerUsername, $uTorrentServerPassword, "20","50", $uTorrentServerAddress, $uTorrentServerPort) then
ConsoleWrite("OK"&@CRLF)
Else
ConsoleWrite("NOK"&@CRLF)
EndIf
Sleep(5000)
;unpause the download
ConsoleWrite("_TorrentAction unpause ...")
if _TorrentAction($uTorrentServerUsername, $uTorrentServerPassword, 'Karate', "start", $uTorrentServerAddress, $uTorrentServerPort) then
ConsoleWrite("OK"&@CRLF)
Else
ConsoleWrite("NOK"&@CRLF)
EndIf
Sleep(5000)
; remove the torrent and data
ConsoleWrite("_TorrentAction remove ...")
if _TorrentAction($uTorrentServerUsername, $uTorrentServerPassword, 'Karate', "removedata", $uTorrentServerAddress, $uTorrentServerPort) then
ConsoleWrite("OK"&@CRLF)
Else
ConsoleWrite("NOK"&@CRLF)
EndIf
;======================================================================== END TESTING ==================================================================================================

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; Name...........: _TorrentAdd_URL
; Description ...: Adds a torrent to your µtorrent job list
; Syntax.........: _TorrentAdd_URL($sUser, $sPass, $sTorrentURL, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sTorrentURL - http address of the torrent you want to add.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne/Supagusti - added Support for uTorrent 3.0
; Modified.......: Supagusti (http://supagusti.at.tf)
; Remarks .......: All parameters should be string type
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Func _TorrentAdd_URL($sUser, $sPass, $sTorrentURL, $sIP = @IPAddress1, $sPort = "8080")
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
;~  ConsoleWrite("$aParams="&$aParams&@CRLF)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=add-url&s=" & $sTorrentURL
;~  ConsoleWrite("$sURL="&$sURL&@CRLF)
$objHTTP.open ("GET", $sURL, False)
$objHTTP.SetCredentials($sUser, $sPass, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp= $objHTTP.ResponseText
$temp2= $objHTTP.Status
$temp3= $objHTTP.StatusText
;~  ConsoleWrite("$objHTTP.ResponseText="&$temp&@CRLF)
;~  ConsoleWrite("$objHTTP.Status="&$temp2&@CRLF)
;~  ConsoleWrite("$objHTTP.StatusText="&$temp3&@CRLF)
    If StringInStr($temp, '"build"') Then
;~   ConsoleWrite("OK"&@CRLF)
        Return True
    Else
;~   ConsoleWrite("FAIL"&@CRLF)
        Return False
    EndIf
EndFunc   ;==>_TorrentAdd_URL

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; Name...........: _TorrentAction
; Description ...: Performs an action on a torrent in your µtorrent job list
; Syntax.........: _TorrentAction($sUser, $sPass, $sTorrentName, $sAction, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sTorrentName - Name of the torrent you wish to work with.
;                 $sAction - The action to perform on the torrent...below
;
;                 start
;                 stop
;                 pause
;                 unpause
;                 forcestart
;                 recheck
;                 remove
;                 removedata
;                 setprio
;
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne/Supagusti - added Support for uTorrent 3.0
; Modified.......: Supagusti (http://supagusti.at.tf)
; Remarks .......: All parameters should be string type
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Func _TorrentAction($sUser, $sPass, $sTorrentName, $sAction, $sIP = @IPAddress1, $sPort = "8080")
    $sHash = _Get_Hash($sUser, $sPass, $sTorrentName, $sIP, $sPort)
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=" & $sAction & "&hash=" & $sHash

$objHTTP.open ("GET", $sURL, False)
$objHTTP.SetCredentials($sUser, $sPass, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp= $objHTTP.ResponseText
$temp2= $objHTTP.Status
$temp3= $objHTTP.StatusText
;~  ConsoleWrite("_TorrentAction.ResponseText="&$temp&@CRLF)
;~  ConsoleWrite("_TorrentAction.Status="&$temp2&@CRLF)
;~  ConsoleWrite("_TorrentAction.StatusText="&$temp3&@CRLF)
;~  $temp = BinaryToString(InetRead($sURL), 1)
    If StringInStr($temp, '"build"') Then
        Return True
    Else
        Return False
    EndIf
EndFunc   ;==>_TorrentAction
; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; Name...........: _List_Torrents
; Description ...: Returns a list of all the current torrent jobs and the states they are in
; Syntax.........: _List_Torrents($sUser, $sPass, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - 2 Dimentional array, where the colums represent the torrent jobs and rows are the properties.
;                 [0][0] = The hash of the torrent
;                 [1][0] = The The state of the torrent
;                 [2][0] = The name of the torrent
;                 [3][0] = The size of the torrent (bytes)
;                 [4][0] = The progress percentage (1000 = 100.0) complete
;                 [5][0] = The amount downloaded (bytes)
;                 [6][0] = The amount uploaded (bytes)
;                 [7][0] = The torrent ratio
;                 [8][0] = The upload speed (bps)
;                 [9][0] = The download speed (bps)
;                 [10][0] = The ETA (seconds)
;                 [11][0] = The torrent label
;                 [12][0] = The amount of connected peers
;                 [13][0] = The amount of peers in the swarm
;                 [14][0] = The amount of connected seeds
;                 [15][0] = The amount of seeds in the swarm
;                 [16][0] = The availability
;                 [17][0] = The queue order of the torrent
;                 [18][0] = The amount remaining to download(to finish the torrent) (bytes)
;
;                 Failure - 0
; Author ........: JohnOne/Supagusti - added Support for uTorrent 3.0
; Modified.......: Supagusti (http://supagusti.at.tf)
; Remarks .......: All parameters should be string type
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Func _List_Torrents($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080")
    $aList = _Get_List(_Get_Token($sUser, $sPass, $sIP, $sPort))
    If IsArray($aList) Then
        Return $aList
    Else
        Return 0
    EndIf
EndFunc   ;==>_List_Torrents
Func _Get_List($aParams)
    Local $sList_URL = $aParams[0] & "?list=1" & "&token=" & $aParams[1]
$objHTTP.open ("GET", $sList_URL, False)
$objHTTP.SetCredentials($uTorrentServerUsername, $uTorrentServerPassword, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp1= $objHTTP.ResponseText
;~  $temp2= $objHTTP.Status
;~  $temp3= $objHTTP.StatusText
;~  ConsoleWrite("_Get_List.ResponseText="&$temp1&@CRLF)
;~  ConsoleWrite("_Get_List.Status="&$temp2&@CRLF)
;~  ConsoleWrite("_Get_List.StatusText="&$temp3&@CRLF)

    Local $temp = _StringBetween(StringStripWS ($temp1,8), "[[", "]]")
;~  ConsoleWrite("$Fehler_StringBetween="&$temp&" Error="&@error&@CRLF)
;~  ;Local $temp = _StringBetween(StringRegExpReplace($objHTTP.ResponseText, "(\s)", ""), "[[", "]]")
;~  Local $Fehler=_ArrayDisplay($temp)
;~  ConsoleWrite("$Fehler_ArrayDisplay="&$Fehler&" Error="&@error&@CRLF)
;Local $temp = _StringBetween(StringRegExpReplace(BinaryToString(InetRead($sList_URL, 1)), "(\s)", ""), "[[", "]]")
    Local $aList = StringSplit($temp[0], "],[", 3) ; I changed the array element from 0 to 1 and now it works like a charm!
    Local $aFinalList[19][UBound($aList)]
    For $i = 0 To UBound($aFinalList, 2) - 1
        $atemp = StringSplit($aList[$i], ",", 2)
        For $j = 0 To 18
;~    ConsoleWrite("_$aFinalList["&$j&"]["&$i&"]="&$atemp[$j]&@CRLF)
            $aFinalList[$j][$i] = $atemp[$j]
        Next
    Next
    Return $aFinalList
EndFunc ;==>_Get_List
Func _Get_Hash($sUser, $sPass, $sTorrentName, $sIP = @IPAddress1, $sPort = "8080")
    Local $sHash
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $aList = _Get_List($aParams)
    For $i = 0 To UBound($aList, 2) - 1
        If StringInStr($aList[2][$i], $sTorrentName) Then
            $sHash = StringReplace($aList[0][$i], '"', '')
            ExitLoop
        EndIf
    Next
    Return $sHash
EndFunc   ;==>_Get_Hash

Func _Get_Token($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080") ; $sPort was $Port
    Local $aRet[2]
Local $tokenTmp
$sBase_URL = "http://" &$sIP & ":" & $sPort & "/gui/"
    $sToken_URL = $sBase_URL & "token.html"
    $aRet[0] = $sBase_URL
;~  ConsoleWrite("$sToken_URL="&$sToken_URL&@CRLF)
    $objHTTP.open ("GET", $sToken_URL, False)
$objHTTP.SetCredentials($sUser, $sPass, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$tokenTmp= $objHTTP.ResponseText
$temp= $objHTTP.ResponseText
;~  $temp2= $objHTTP.Status
;~  $temp3= $objHTTP.StatusText
;~  ConsoleWrite("$objHTTP.ResponseText="&$temp&@CRLF)
;~  ConsoleWrite("$objHTTP.Status="&$temp2&@CRLF)
;~  ConsoleWrite("$objHTTP.StatusText="&$temp3&@CRLF)
;~  ConsoleWrite("$objHTTP.StatusText="&$objHTTP.StatusText&@CRLF)
;~  ConsoleWrite("$tokenTmp="&$tokenTmp&@CRLF)
$aRet[1] = StringMid($tokenTmp, 45, 64)
;~   ConsoleWrite("$token="&$aRet[1]&@CRLF)
    Return $aRet
EndFunc ;==>_Get_Token

; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
; Name...........: _TorrentSet_GL_UD
; Description ...: Sets the global Upload and Download rate
; Syntax.........: _TorretSet_GL_UD($sUser, $sPass,  $sUp, $sDown, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sUp - [Optional] Global upload rate in KB (Default is 0, unlimited)
;                 $sDown - [Optional] Global Download rate in KB (Default is 0, unlimited)
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - True
;                 Failure - False
; Author ........: JohnOne/Supagusti - added Support for uTorrent 3.0
; Modified.......: Supagusti (http://supagusti.at.tf)
; Remarks .......:
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Func _TorrentSet_GL_UD($sUser, $sPass,  $sUp = 0, $sDown = 0, $sIP = @IPAddress1, $sPort = "8080")
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $sURL = $aParams[0] & "?token=" & $aParams[1] & "&action=setsetting&s=max_ul_rate&v=" & $sUp  & "&s=max_dl_rate&v=" & $sDown
;~   $temp = BinaryToString(InetRead($sURL), 1)
$objHTTP.open ("GET", $sURL, False)
$objHTTP.SetCredentials($sUser, $sPass, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp= $objHTTP.ResponseText
;~  $temp2= $objHTTP.Status
;~  $temp3= $objHTTP.StatusText
;~  ConsoleWrite("$objHTTP.ResponseText="&$temp&@CRLF)
;~  ConsoleWrite("$objHTTP.Status="&$temp2&@CRLF)
;~  ConsoleWrite("$objHTTP.StatusText="&$temp3&@CRLF)
    If StringInStr($objHTTP.ResponseText, '"build"') Then
        Return True
    Else
        Return False
    EndIf
EndFunc ;==>_TorrentSet_GL_UD
; #FUNCTION# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
; Name...........: _Get_Settings
; Description ...: Retrieves a list of settings, variable types, and current values supported in your version of µtorrent.
; Syntax.........: _Get_Settings($sUser, $sPass, $sIP, $sPort)
; Parameters ....: $sUser - Username as set in the Web UI settings of µtorrent.
;                 $sPass - Password as set in the Web UI settings of µtorrent.
;                 $sIP - [Optional] Local or remote IP of the target machine running µtorrent (Deafault = @IPAddress1).
;                 $sPort - [Optional] Port to access as set in the Web UI settings of µtorrent (Default = "8080").
; Return values .: Success - A 2 dimensional array, where colum 0 = the setting name, colum 1 = the type of variable you can use....
;                           ... (0=integer 1=boolean 2=string), colum 2 = The current setting of the variable.
;                 Failure - False
; Author ........: JohnOne/Supagusti - added Support for uTorrent 3.0
; Modified.......: Supagusti (http://supagusti.at.tf)
; Remarks .......:The list returned from this function is to get info on a setting you can alter using _Set_Settings() function
;                           There are too many to list here and they may vary between µtorrent versions
; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Func _Get_Settings($sUser, $sPass, $sIP = @IPAddress1, $sPort = "8080")
    Local $tmpfile = @ScriptDir & "\temp.txt"
    $aParams = _Get_Token($sUser, $sPass, $sIP, $sPort)
    $GSettings_URL = $aParams[0] & "?action=getsettings&token=" & $aParams[1]

;~   $temp = InetRead($GSettings_URL)
;~   $temp = BinaryToString($temp, 1)
;~   $temp = StringRegExpReplace($temp, "(\s)", "")
$objHTTP.open ("GET", $GSettings_URL, False)
$objHTTP.SetCredentials($uTorrentServerUsername, $uTorrentServerPassword, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp1= $objHTTP.ResponseText
;~  $temp2= $objHTTP.Status
;~  $temp3= $objHTTP.StatusText
;~  ConsoleWrite("_Get_List.ResponseText="&$temp1&@CRLF)
;~  ConsoleWrite("_Get_List.Status="&$temp2&@CRLF)
;~  ConsoleWrite("_Get_List.StatusText="&$temp3&@CRLF)

    Local $temp = StringStripWS ($temp1,8)

    $temp = _StringBetween($temp,"[[", "]]")
    FileWrite($tmpfile,$temp[0])
    $sfile = FileRead($tmpfile)
    $atemp = StringSplit($sfile, "],[" , 3)
    Local $aFinalList[UBound($atemp)][3]
    For $i = 0 To UBound($atemp)-1
        $atemp2 = StringSplit($atemp[$i], ",", 2)
        For $j = 0 To 2
            $aFinalList[$i][$j] = $atemp2[$j]
        Next
    Next
    $atemp = 0
    FileDelete($tmpfile)
    If IsArray($aFinalList) And $aFinalList[0][2] <> "" Then
        Return $aFinalList
    Else
        Return False
    EndIf
EndFunc

; #INTERNAL FUNCTIONS# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
; Name...........: _Get_Token
; Description ...: Retrieves a security token needed to acces the web API
;
; Name...........: _Get_List
; Description ...: Retrieves a list of torrents, using the token
;
; Name...........: _Get_Hash
; Description ...: Retrieves a hash of a given torrent, needed to perform actions on them

; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

; ===============> Mod by Supagusti (http://supagusti.at.tf)- added support for uTorrent 3.0, used WINHTTP Objects, tested under Win7SP1x64
Link to comment
Share on other sites

I've no idea why that array wont work for you, the return from _stringbetween() should hold the first found strinh in [0] of the array.

I just put these things down to anomalys :D

What OS you using?

Hi John,

I've found out, why sometimes the [0] position and sometimes the [1] position contains the data:

Its because of the label of the torrent. If the label is empty the returned string from utorrent looks like this:

{"build":25583,"label": [
]
,"torrents": [
["7D9E152B4CDF4FB746DCE5D7F447666B82071E86",201,"Torrent name is not relevant",260962304,0,0,0,0,0,0,-1,"",0,0,0,0,0,1,260962304,"","","Download","7203ae3",1321629214,0,"","D:Downloaded Files",0]]
,"torrentc": "1906666953" .....

and if the label is set for example to MyLabel the string looks like this:

{"build":25583,"label": [
["MyLabel",1]
]
,"torrents": [
["7D9E152B4CDF4FB746DCE5D7F447666B82071E86",201,"Torrent name is not relevant",260962304,0,0,0,0,0,0,-1,"MyLabel",0,0,0,0,0,1,260962304,"","","Download","7203ae3",1321629214,0,"","D:Downloaded Files",0]]
,"torrentc": "2021855176" .....

you are looking for a string between [[ ]] with the command _StringBetween(StringStripWS ($temp1,8), "[[", "]]")

in the first case the returned array contains 1 entry -> Pos [0]

in the 2nd case the returned array contrains 2 entry -> Pos [0] is the label data, Pos[1] is the torrent data.

I modified the _Get_List Function so that it works in both cases:

Func _Get_List($aParams)
    Local $sList_URL = $aParams[0] & "?list=1" & "&token=" & $aParams[1]
$objHTTP.open ("GET", $sList_URL, False)
$objHTTP.SetCredentials($uTorrentServerUsername, $uTorrentServerPassword, 0)
    $objHTTP.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $objHTTP.Send()
$temp1= $objHTTP.ResponseText
$temp1=StringRight($temp1,(StringLen($temp1)-StringInStr ( $temp1, '"torrents":' ))) ; strip of the content before the torrent data !!!!
    Local $temp = _StringBetween(StringStripWS ($temp1,8), "[[", "]]")
Local $aList = StringSplit($temp[0], "],[", 3)
    Local $aFinalList[19][UBound($aList)]
    For $i = 0 To UBound($aFinalList, 2) - 1
        $atemp = StringSplit($aList[$i], ",", 2)
        For $j = 0 To 18
            $aFinalList[$j][$i] = $atemp[$j]
        Next
    Next
    Return $aFinalList
EndFunc ;==>_Get_List

Also check out my homepage for further information....

Link to comment
Share on other sites

  • 4 weeks later...

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...