-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathburst.py
More file actions
123 lines (94 loc) · 3.21 KB
/
burst.py
File metadata and controls
123 lines (94 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# -*- coding: utf-8 -*-
import logging
import os
import sys
sys.path.insert(
0, os.path.join(os.path.dirname(__file__), "resources", "site-packages")
)
from burst.burst import search
from jacktook.provider_base import Provider, ProviderResult
from burst.client import Client
def build_payload(**kwargs):
payload = {
"silent": False,
"skip_auth": False,
}
payload.update(kwargs)
return payload
def general_payload(query):
return build_payload(query=query)
def movie_payload(id, title, titles, year):
return build_payload(imdb_id=id, title=title, titles=titles, year=year)
def show_payload(id, title, titles, year):
return build_payload(imdb_id=id, title=title, titles=titles, year=year)
def season_payload(id, title, season, titles, year):
return build_payload(
imdb_id=id, title=title, titles=titles, season=season, year=year
)
def episode_payload(id, title, season, episode, titles, year):
return build_payload(
imdb_id=id,
title=title,
titles=titles,
season=season,
episode=episode,
year=year,
)
def to_provider_results(obj):
return [
ProviderResult(
title=item["name"],
indexer=item["provider"],
guid=item["uri"],
quality="",
seeders=item["seeds"],
peers=item["peers"],
size=item["size"] if len(item["size"]) > 0 else 0,
)
for item in obj
]
class JacktookProvider(Provider):
def search(self, query):
s = search(general_payload(query), "general")
return to_provider_results(s)
def search_movie(self, id, title, titles="", year=""):
logging.debug("search_movie")
s = search(movie_payload(id, title, titles, year), "movie")
results = to_provider_results(s)
logging.debug(results)
return results
def search_show(self, id, title, titles="", year=""):
logging.debug("search_show")
s = search(show_payload(id, title, titles, year), "season")
results = to_provider_results(s)
logging.debug(results)
return results
def search_season(self, id, title, season_number, titles="", year=""):
s = search(season_payload(id, title, season_number, titles, year), "season")
return to_provider_results(s)
def search_episode(
self, id, title, season_number, episode_number, titles="", year=""
):
s = search(
episode_payload(id, title, season_number, episode_number, titles, year),
"episode",
)
return to_provider_results(s)
def resolve(self, provider_data):
if isinstance(provider_data, dict):
return provider_data["url"]
raise NotImplementedError("Resolve method can't be called on this provider")
def clear_cookies():
client = Client()
cookies = client._locate_cookies()
logging.info("Removing cookies from %s" % (cookies))
if os.path.isfile(cookies):
os.remove(cookies)
logging.info("Successfully removed cookies file")
action = None
if len(sys.argv) >= 2:
action = sys.argv[1]
if action and "clear_cookies" in action:
clear_cookies()
else:
JacktookProvider().register()