#!/usr/bin/env python
# coding=utf-8

import time
import requests
import json
import base64

from bs4 import BeautifulSoup

__author__ = 'ty'

config = json.load(open('config.json'))

download_dir = config["download_dir"]
url = config["transmission_url"]

authorization = base64.b64encode(config["transmission_user"] + ":" +
                                 config["transmission_password"])

target_dir_parent = config["target_dir_parent"]

target_dir = {"Lossless Music": target_dir_parent + u"/音乐/",
              "BDISO": target_dir_parent + u"/动漫/",
              "BDrip": target_dir_parent + u"/动漫/",
              "U2-RBD": target_dir_parent + u"/动漫/",
              "U2-Rip": target_dir_parent + u"/动漫/",
              u"加流重灌": target_dir_parent + u"/动漫/",
              u"外挂结构": target_dir_parent + u"/字幕/",
              "Others": target_dir_parent + u"/其他/",
              "DVDrip": target_dir_parent + u"/动漫/",
              "HDTVrip": target_dir_parent + u"/动漫/",
              "DVDISO": target_dir_parent + u"/动漫/"}

headers = {'X-Transmission-Session-Id': '',
           "Authorization": "Basic " + authorization}

list_payload = '''{"method": "torrent-get", "arguments": {
"fields": ["id", "name", "percentDone","status","downloadDir"]}}'''

r = requests.post(url, headers=headers, data=list_payload, verify=False)

soup = BeautifulSoup(r.text, "html.parser")
code = soup.find("code")
headers['X-Transmission-Session-Id'] = code.text.split(': ')[1]

r = requests.post(url, headers=headers, data=list_payload, verify=False)

result = json.JSONDecoder().decode(r.text)

# print json.dumps(result, indent=2, ensure_ascii=False)

with open("seeding.json") as data_file:
    seedings = json.load(data_file)

for torrent in result["arguments"]["torrents"]:
    if torrent["downloadDir"] == download_dir and torrent["percentDone"] == 1:
        print torrent["name"]

        for seeding in seedings["torrents"]:
            if seeding["folder"] == torrent["name"]:
                if seeding["catalog"] == "Lossless Music" or seeding["catalog"] == u"外挂结构":
                    location_payload = '''{"method": "torrent-set-location", "arguments": {"move": true, "location": "''' + \
                                       target_dir[seeding["catalog"]].encode('utf8') + '''", "ids": [''' + \
                                       str(torrent["id"]) + ''']}}'''
                else:
                    location_payload = '''{"method": "torrent-set-location", "arguments": {"move": true, "location": "''' + \
                                       target_dir[seeding["catalog"]].encode('utf8') + \
                                       seeding["name"].encode('utf8').replace('/', '/').replace(':', ':') \
                                       + '''", "ids": [''' + \
                                       str(torrent["id"]) + ''']}}'''
                print location_payload
                r = requests.post(url, headers=headers, data=location_payload, verify=False)
                print r.text
                # time.sleep(1)
                break