Archive for the ‘server’ category

Torrent Linker: Update

October 29th, 2010

A while ago I came up with a python script to link torrent newly downloaded torrent files to a folder allowing you to manage data more effectively whilst seeding. However I have only just realised that the initial script does not work as the importer appears to have removed the spaces at the start of each line making the code unusable. As I cannot find my original code here is an update that also features a twitter integration to send you a twitter message when a file has completed.

All you have to do is modify the items inside of “Modify These Variables”, also ensure to set your torrent program to move your completed torrents to the ‘torrentfilesdirectory’ folder

import os
import sys
from commands import getoutput

#Declare Variables
ary_errors    = []
ary_directory = []
ary_tracker   = []
ary_torrent   = []

#Modify These Variables
torrentfilesdirectory = "/torrent/torrentfilescompleted/"
torrent_completed_dir = "/torrent/completed/"
link_directory        = "/torrent/links/"
torrent_move_to_dir   = "/torrent/torrentfilescompletedandlinked/"
twitter_username      = "##########"
twitter_password      = "##########"

#Add list of torrents into variable
torrent_list = getoutput("ls " + torrentfilesdirectory)

#=====================================================
def WorkOnTorrents(line):
 #Read data from torrent
 directory = getoutput("btshowmetainfo \"" + torrentfilesdirectory + line + "\" | grep \"directory name:\"")
 directory = directory + getoutput("btshowmetainfo \"" + torrentfilesdirectory + line + "\" | grep \"file name.....:\"")
 tracker = getoutput("btshowmetainfo \"" + torrentfilesdirectory + line + "\" | grep \"announce url..:\"")

 #Modify the directory variable
 directory = directory.split(": ")[1]

 #Modify the tracker variable
 try:
  tracker = tracker.split("\n")[0].split("/")[2].split(":")[0]
  torrent_valid = "Works"
 except:
  torrent_valid = "Fails"

 print tracker;

 #Add torrent variables to arrays
 if torrent_valid == "Works":
  # Check Against Identified Errors
  if tracker == "":
   ary_errors.append(line);
  else:
   ary_tracker.append(tracker);
   ary_directory.append(directory);
   ary_torrent.append(line);

torrent_list = torrent_list.split("\n")
for line in torrent_list:
 WorkOnTorrents(line)

#=====================================================
## Create Links
print "Executing Links"
for i in range(len(ary_tracker)):
 os.system("curl -u " + twitter_username + ":" + twitter_password + " -d status=\"" + ary_torrent[i] + "\" http://twitter.com/statuses/update.xml")
 print "Creating Link for: " + ary_torrent[i];
 if os.path.exists(link_directory + ary_tracker[i]) == 1:
  os.system("ln -s \"" + torrent_completed_dir + ary_directory[i] + "\" \"" + link_directory + ary_tracker[i] + "/" + ary_directory[i] + "\"")
 else:
  os.system("mkdir " + link_directory + ary_tracker[i])
  os.system("ln -s \"" + torrent_completed_dir + ary_directory[i] + "\" \"" + link_directory + ary_tracker[i] + "/" + ary_directory[i] + "\"")
 os.system("mv \"" + torrentfilesdirectory + ary_torrent[i] + "\" " + torrent_move_to_dir);

#=====================================================
## Display Error Torrents
if len(ary_errors) > 0:
 print "Errors Found:";
 for i in range(len(ary_errors)):
  print ary_errors[i];

Downloading daily TV torrents on ThePirateBay

October 14th, 2010

There are many torrent download scripts online, I even uploaded one a while back, but this one allows you to selectively download episodes that have a date identifier rather than an episode identifier. Once again this is written in python, all you have to do is modify the source variable to contain the search string for your show, create a file in the same folder called downloaded and modify the watch_folder to the folder where you want the torrents to be downloaded to.  Have Fun

import os
import sys
from commands import getoutput
downloaded = getoutput('cat downloaded')
watch_folder = "/torrent/watch/"
source = getoutput('curl -s "http://thepiratebay.org/search/TV%20Show%20XviD/0/0/0" | grep "http://torrents.thepiratebay.org"').split("\n")
for item in source:
    item = item.split('"')[1]
    torrent_link = item
    item = item.split(".")
    date = item[5] + "." + item[6] + "." + item[7]
    if date not in downloaded:
        os.system('cd ' + watch_folder + ' && wget "' + torrent_link + '"')
        os.system('echo "' + date + '" >> downloaded')
        downloaded = getoutput('cat downloaded')

Who’s using the machine

January 31st, 2009

Yesterday I was sitting at work, trying to figure out our current IP situation, it was in a mess and hadn’t been updated in a long while. The problem is machines will come and will be issued with IP Addresses and machine names however when they go (or get taken away without us knowing) the log doesnt get updated. The only way we could do this before would be to go and check each machine individually and check the settings, however this is quite unpractical realistically. However we still need this information to find out where machines are located, again this may change in the future :(

Thankfully there is a little application called Nbtstat which allows us to find out who is logged into which machine and with this we can determine where the computer is located. The code can be executed by running in cmd
nbtstat -a computer_name
nbtstat -A ip_address

For the future it would be great if we could run a script that would run this each day through the subnet and export the result as a spreadsheet, with this information we could sort out our IP issues and clear and organise them a lot better

More information is available here
http://www.windowsnetworking.com/kbase/WindowsTips/WindowsNT/AdminTips/Accounts/Nbtstatrevealswhoisloggedon.html