updated on Fri Jan 20 00:01:56 UTC 2012
[aur-mirror.git] / torrent-leecher / Manipulator.py
blob3a5152b61f3a21a16cbeecaefac57b815c486871
1 #! /usr/bin/env python
2 # -*- coding: utf-8 -*-
4 #Librarys
5 ###################################################################################
6 from urllib.parse import urlparse
8 #Classes
9 ###################################################################################
10 class Manipulator:
11 def __init__(self, Parent):
12 self.Parent = Parent
14 def manipulate(self, path):
15 o = urlparse(path)
16 path = o.path
17 #Is path valid
18 if o.scheme and o.netloc and o.path:
19 #Do we have something to manipulate
20 if o.query:
21 stats = {}
22 stats["original"] = {}
23 stats["original"]["up"] = 0
24 stats["original"]["down"] = 0
25 stats["modified"] = {}
26 stats["modified"]["up"] = 0
27 stats["modified"]["down"] = 0
28 queryItems = {}
29 attributes = o.query.split("&")
30 for attribute in attributes:
31 temp = attribute.split("=")
32 key = temp[0]
33 value = temp[1]
34 queryItems[key] = value
35 a = -1
36 showStats = True
37 #Set download
38 try:
39 stats["original"]["down"] = int(queryItems["downloaded"])
40 stats["modified"]["down"] = int(queryItems["downloaded"])
41 except:
42 showStats = False
43 #Set upload
44 try:
45 stats["original"]["up"] = int(queryItems["uploaded"])
46 stats["modified"]["up"] = int(queryItems["uploaded"])
47 except:
48 showStats = False
49 for key, value in queryItems.items():
50 a += 1
51 #If mofifying uploads
52 if key == "uploaded" and self.Parent.Configs.manipulateUploads["enabled"]:
53 if self.Parent.Configs.manipulateUploads["type"] == 1:
54 value = int(round(int(value)*self.Parent.Configs.manipulateUploads["factor"]))
55 else:
56 value = int(round(int(queryItems["downloaded"])*self.Parent.Configs.manipulateUploads["factor"]))
57 #Set modified upload
58 stats["modified"]["up"] = value
59 #If mofifying downloads
60 if key == "downloaded" and self.Parent.Configs.manipulateDownloads["enabled"]:
61 if self.Parent.Configs.manipulateDownloads["type"] == 0:
62 value = int(round(int(value)*self.Parent.Configs.manipulateDownloads["factor"]))
63 else:
64 value = int(round(int(queryItems["uploaded"])*self.Parent.Configs.manipulateDownloads["factor"]))
65 #Set modified download
66 stats["modified"]["down"] = value
67 if a == 0:
68 path += "?"+str(key)+"="+str(value)
69 else:
70 path += "&"+str(key)+"="+str(value)
71 if showStats == False:
72 stats = False
73 else:
74 stats = False
75 return {"scheme":o.scheme, "netloc":o.netloc, "path":path, "stats": stats}
76 else:
77 return False