Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import re
- import sys
- import os
- videoextensions = (".avi",".mp4",".mkv")
- downloadlocation='/home/user'
- def tokenize(text, match=re.compile("([idel])|(\d+):|(-?\d+)").match):
- i = 0
- while i < len(text):
- m = match(text, i)
- s = m.group(m.lastindex)
- i = m.end()
- if m.lastindex == 2:
- yield "s"
- yield text[i:i+int(s)]
- i = i + int(s)
- else:
- yield s
- def decode_item(next, token):
- if token == "i":
- # integer: "i" value "e"
- data = int(next())
- if next() != "e":
- raise ValueError
- elif token == "s":
- # string: "s" value (virtual tokens)
- data = next()
- elif token == "l" or token == "d":
- # container: "l" (or "d") values "e"
- data = []
- tok = next()
- while tok != "e":
- data.append(decode_item(next, tok))
- tok = next()
- if token == "d":
- data = dict(zip(data[0::2], data[1::2]))
- else:
- raise ValueError
- return data
- def decode(text):
- try:
- src = tokenize(text)
- data = decode_item(src.next, src.next())
- for token in src: # look for more tokens
- raise SyntaxError("trailing junk")
- except (AttributeError, ValueError, StopIteration):
- raise SyntaxError("syntax error")
- return data
- if __name__ == '__main__':
- if not sys.argv[1].endswith(".torrent"):
- print "Not a .torrent file!\nExiting..."
- exit()
- with open(sys.argv[1],"rb") as data:
- torrent = decode(data.read())
- if torrent['info']['name'] and torrent['info']['name'].endswith(videoextensions):
- # cleanup previous peerflix instance
- os.system('killall -15 peerflix')
- # start peerflix and play torrent with SMPlayer
- cmd = 'peerflix -g -r -f ' + downloadlocation + ' ' + sys.argv[1]
- os.system(cmd)
- else:
- print 'Not a single video file, transferring to default torrent app'
- cmd = 'xdg-open ' + sys.argv[1]
- os.system(cmd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement