Windows HOW-TO get uTorrent to tell XBMC to update its library

  Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Thumbs Up  HOW-TO get uTorrent to tell XBMC to update its library Post: #1
Hi I just set up the new version of uTorrent (2.2) that has the ability to always run a program when it has finished downloading a torrent. This feature is able to pass on the user set label that the torrent has.
Download uTorrent

So the automatic setup works like this:
  1. uTorrent watches a RSS-feed with torrents
  2. It downloads and starts the torrents that I have selected through filters
  3. I have set a label for each filter so that torrents that match my Bones-filter gets a "TV-shows/Bones"-label
  4. It downloads the files to d:\incoming
  5. When it has completed the download it moves the files to d:\ and appends the label to the path as well. so if it is a bones episode it will put it in d:\TV-shows\Bones
  6. After completion it also calls the above vbs-file with Update.vbs "%L". The %L passes the label of the completed torrent.
  7. XBMC executes the command and checks if there are any new files in the specified folder.

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
(This post was last modified: 2013-03-07 11:46 by watzen.)
find quote
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Post: #2
1. Enable the http-server in XBMC
[Image: 2ee4be111338974.jpg] [Image: 9876ff111338981.jpg]

2. Change settings in uTorrent
[Image: 3150d4111335532.jpg]

[Image: cf0287111335533.jpg] [Image: ce1c05121385048.jpg]

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
(This post was last modified: 2011-02-27 17:42 by watzen.)
find quote
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Post: #3
3. Add Feed
[Image: b73575111335522.jpg] [Image: 90bef6111335524.jpg]

4. Add Keywords to the autodownloader in uTorrent
[Image: 739f50111335526.jpg] [Image: d4faeb111335529.jpg]

5. Create the script
Open up notepad and paste the code posted below
Code:
Dim objSvrHTTP
Dim connectionString
Dim JSONstring
Dim xbmcConnection
Dim sourcePath
Dim message
Dim header
Dim myPath
Set objSvrHTTP = CreateObject("MSXML2.XMLHTTP")

On Error Resume Next

'===============================================================================​==
'edit this line to work with your setup
xbmcConnection = "http://user:password@ip:port/jsonrpc?request="

'examples
'xbmcConnection = "http://xbmc:xbmc@localhost:8080/jsonrpc?request="
'xbmcConnection = "http://xbmc:myownpass@192.168.1.101:80/jsonrpc?request="

'set this parameter to your main sourcepath.  "c:\path\to\main\folder\" for when you have local sources and "smb://computer/path/to/main/folder/" when you have network sources
sourcePath = "YOUR/PATH/TO/SOURCE/"

'examples
'sourcePath = "c:\downloaded\"
'sourcePath = "smb://HTPC/"

'===============================================================================​==

'if the first argument is -U (for update) then it performs the update procedure and sends a notification to xbmc.
if WScript.Arguments.Item(0) = "-U" then
    'Send a command to xbmc to display a notification when a torrent finishes    
    JSONstring = URLEncode(Replace("{''jsonrpc'':''2.0'',''method'':''GUI.ShowNotification'',''params'':{''title'':'​'uTorrent'',''message'':''Finished downloading " & WScript.Arguments.Item(1) & "''},''id'':1}","''",Chr(34)))
    connectionString =  xbmcConnection & JSONstring
    objSvrHTTP.open "GET", connectionString, False
    objSvrHTTP.send
    
    'Send a command to xbmc that tells it to update the supplied directory
    JSONstring = URLEncode(Replace("{''jsonrpc'':''2.0'',''method'':''VideoLibrary.Scan'',''params'':{''directory'':​''"& sourcePath & WScript.Arguments.Item(2) &"/''},''id'':1}","''",Chr(34)))
    connectionString =  xbmcConnection & JSONstring
    WScript.Sleep 1000 * 10
    objSvrHTTP.open "GET", connectionString, False
    objSvrHTTP.send    
    
'if the first argument is -S (for status) then it performs the status procedure and in this case only when the status is "Queued".
'That way I get a notification in xbmc when a new torrent is added
elseif WScript.Arguments.Item(0) = "-S" then
    'check if the status is Queued
    if WScript.Arguments.Item(1) = "Queued" then
        header = WScript.Arguments.Item(1)
        message = WScript.Arguments.Item(2)
        JSONstring = URLEncode(Replace("{''jsonrpc'':''2.0'',''method'':''GUI.ShowNotification'',''params'':{''title'':'​'uTorrent'',''message'':''Queued: " & message & "''},''id'':1}","''",Chr(34)))
        objSvrHTTP.open "GET", connectionString, False
        objSvrHTTP.send
    end if
end if

Function URLEncode(ByVal str)
Dim strTemp, strChar
Dim intPos, intASCII
strTemp = ""
strChar = ""
For intPos = 1 To Len(str)
  intASCII = Asc(Mid(str, intPos, 1))
  If intASCII = 32 Then
   strTemp = strTemp & "+"
  ElseIf ((intASCII < 123) And (intASCII > 96)) Then
   strTemp = strTemp & Chr(intASCII)
  ElseIf ((intASCII < 91) And (intASCII > 64)) Then
   strTemp = strTemp & Chr(intASCII)
  ElseIf ((intASCII < 58) And (intASCII > 47)) Then
   strTemp = strTemp & Chr(intASCII)
  Else
   strChar = Trim(Hex(intASCII))
   If intASCII < 16 Then
    strTemp = strTemp & "%0" & strChar
   Else
    strTemp = strTemp & "%" & strChar
   End If
  End If
Next
URLEncode = strTemp
End Function
Edit the two marked lines and save the file as C:\update\update.vbs (if that is the path you wrote in utorrent settings)

6. Let the magic do its thing

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
(This post was last modified: 2012-11-03 11:32 by watzen.)
find quote
stoli Offline
Skilled Skinner
Posts: 2,405
Joined: Nov 2008
Reputation: 31
Location: Florida
Post: #4
@watzen - Thanks for that. Now I can turn off the auto-update add-on and get real-time library updates.
find quote
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Post: #5
Ok, so I have updated the script with the ability to send notifications as well. When the script gets one argument it sends it as an update library command and when it receives two arguments it sends those as header and message

Just put c:\update\update.vbs "uTorrent - %M" "%N" in the "Run this program when a torrent changes state" box in uTorrent preferences.
(this is only neccesary if you want notifications in XBMC for each time a torrent changes state, and they change state a lot. So this is not so useful)

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
(This post was last modified: 2011-01-25 10:35 by watzen.)
find quote
bmcclure937 Offline
Fan
Posts: 659
Joined: Dec 2010
Reputation: 5
Location: Ohio
Post: #6
Hmm. I wonder how to do this from Linux or from a NAS... since my torrents are downloading straight to my NAS using the embedded client Wink
find quote
GorillaHuman Offline
Junior Member
Posts: 1
Joined: Jan 2011
Reputation: 0
Post: #7
Nice one!
Too bad it doesn't work for me. I'm running uTorrent at the same pc as I run XBMC.
uTorrent downloads the shows to C:\Downloads\Series\[name] automatically. Their labels are Series\[name].

xbmcConnection = "http://user:pass@192.168.1.18:80" (user/pass match XBMC)
sourcePath = "C:\Downloads"

When I type in cmd the following (to emulate uTorrent)
Code:
Update.vbs "Series\[name]"
XBMC just flashes "compressing database" and doesn't update.
What am I doing wrong?
find quote
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Post: #8
GorillaHuman Wrote:Nice one!
Too bad it doesn't work for me. I'm running uTorrent at the same pc as I run XBMC.
uTorrent downloads the shows to C:\Downloads\Series\[name] automatically. Their labels are Series\[name].

xbmcConnection = "http://user:pass@192.168.1.18:80" (user/pass match XBMC)
sourcePath = "C:\Downloads"

When I type in cmd the following (to emulate uTorrent)
Code:
Update.vbs "Series\[name]"
XBMC just flashes "compressing database" and doesn't update.
What am I doing wrong?

I think you need to change the sourcePath to "C:\Downloads\"
(note the trailing slash)

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
find quote
watzen Offline
Fan
Posts: 460
Joined: Jan 2007
Reputation: 10
Location: Sweden
Post: #9
bmcclure937 Wrote:Hmm. I wonder how to do this from Linux or from a NAS... since my torrents are downloading straight to my NAS using the embedded client Wink

yeah, well, get your software to GET this url when finished:
Code:
http://user:password@ip:port/xbmcCmds/xbmcHttp?command=ExecBuiltIn(UpdateLibrary(video,pathwhereyourfilesare))

Wink

  • Livingroom - C2D E8400, P5N7A-VM on a Samsung 46" LE46M86 FullHD via HDMI
  • Kitchen - ASRock 330 HT Displayed on a Samsung Lapfit 22" dual touch screen LD220Z
  • Bedroom - LG Laptop on a 32" tv
(This post was last modified: 2011-01-03 00:53 by watzen.)
find quote
mwkurt Offline
Posting Freak
Posts: 988
Joined: Mar 2010
Reputation: 10
Post: #10
Or you can just use Sickbeard to update your XBMC library by having utorrent move completed files to the directory that Sickbeard processes it's downloads from. As long as the show is listed as a Sickbeard show, the files should be processed. I believe this works the same way with Couchpotato.

Mark
find quote
Post Reply