From f48fe2e6c751c9a8c6c7ae226bdc3ca58f0a24c1 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Sat, 1 Dec 2018 17:35:00 +0000 Subject: [PATCH] Add Milkie torrent provider. --- CHANGES.md | 7 ++- gui/slick/images/providers/milkie.png | Bin 0 -> 1047 bytes sickbeard/providers/__init__.py | 2 +- sickbeard/providers/milkie.py | 85 ++++++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 gui/slick/images/providers/milkie.png create mode 100644 sickbeard/providers/milkie.py diff --git a/CHANGES.md b/CHANGES.md index 5a2de6b..adb7555 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,9 @@ -### 0.18.2 (2018-11-30 21:15:00 UTC) +### 0.18.3 (2018-12-01 17:35:00 UTC) + +* Add Milkie torrent provider + + +### 0.18.2 (2018-11-30 21:15:00 UTC) * Remove AlphaReign torrent provider * Change minimise library update calls to Kodi and Plex diff --git a/gui/slick/images/providers/milkie.png b/gui/slick/images/providers/milkie.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc8c27f20d12e02c2e239c64f2968af6d13d050 GIT binary patch literal 1047 zcmV+y1nB#TP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHmg6W4hTpY{Spt#}m*rq=&gmV@^5+K=CvhiT zH$Tinn~K4TtlKB!6m9?hYV;2dVR7UwrjSE$IDGb53Kq%j$3C<3<2*0iZSf?h;|qaE zG3$OAwy9qrxBCszPxPlMV$3l>u^O+zZXoaZ&=d0+7l>C8{{!-V6h zbiVcx#aInO6_QO^9nQXcQAD6g3(kTwuB1y8Yd_Aa_PTa-EKkKdR;SvzGUfVQ3UXm8 zgj0>Cob7e(Mukq)Zl0gMK#`++JRWM-+L~J1_Uwues8pbt)Gd{bNanM0^bE zI7Y@uNU?(03YrT>CC)6Uc4N;g7jC?bxpGB_UN(uCMXKnKC5@7$4k*44ZW1-?N?;^f zK}{i+BNiTh^YB+W!Sl+{6o#=*^tVB;gx?v5q1JlqGP`ut3UNtqK!nlB^)s{pgxjpC zjrxv34}Ievz$ysZD04!B#Vxyu#rWP^Iyfuz%z1MAqrq{V22djSHUz^80xqx`2Q-67 zWJVnm_!LAg>SX}|Hj|a9fsJYaoFv^h?uk5f#bg&_YXJz;pb==Y7Qph}&_B^9^iVN1 zPi7V@TC!{N|vnH!YqdzDW{xsDR5d~ zy5Q~tjZzj_bn%NVVTnsx@=_|=r}}C&)L2u^wXCx0ipPHqYos-;c`X}nXr;|>wuLQj zY0Fz_=(VQJH*2BAmRfG*pf;&KQ{xl4KU3pLtrPP@FW#v^9OKOd_wB?wGY}KcARapb zG_-VPF0uF0$#rHfOW&jf)Yv+ll{+yI^c#ycKG@yK{gE4){}MNOM~*tWE67ntH_83Z z?FF^9j5mr7K>aD~HFessu|cUw!XNhI@6Ys81Ah(ev*JBGmdlc=AF|SaEj-S27JNLn zMYgfrSi|9qY6(NyB(>!(U#;w7^DX61ghu7-A-xQZ4rf0MjoxSdGL5&Y^hw zMi*sP=%UO. + +from . import generic +from sickbeard.helpers import tryInt +from lib.unidecode import unidecode + + +class MilkieProvider(generic.TorrentProvider): + + def __init__(self): + + generic.TorrentProvider.__init__(self, 'Milkie') + + self.url_base = 'https://milkie.cc/' + + self.api = self.url_base + 'api/v1/' + self.urls = {'config_provider_home_uri': self.url_base, + 'login': self.api + 'auth/sessions', 'get': self.api + 'torrents/%s', + 'search': self.api + 'torrents?pi=0&ps=100&query=%s&categories=2&mode=release'} + + self.username, self.password, self.minseed, self.minleech, self._token = 5 * [None] + + def _authorised(self, **kwargs): + + return super(MilkieProvider, self)._authorised( + post_params=dict(login=False), post_json=dict(email=self.username, password=self.password), + json=True, logged_in=self.logged_in) + + def logged_in(self, resp=None): + + self._token = resp and resp.get('token') + return bool(self._token) + + def _search_provider(self, search_params, **kwargs): + + results = [] + if not self._authorised(): + return results + + items = {'Cache': [], 'Season': [], 'Episode': [], 'Propers': []} + + for mode in search_params.keys(): + for search_string in search_params[mode]: + search_string = isinstance(search_string, unicode) and unidecode(search_string) or search_string + search_url = self.urls['search'] % search_string + + data_json = self.get_url(search_url, headers=dict(Authorization='Bearer %s' % self._token), json=True) + if self.should_skip(): + return results + + cnt = len(items[mode]) + if data_json: + for tr in data_json.get('releases'): + seeders, leechers, size = (tryInt(n, n) for n in [ + tr.get(x) for x in ('seeders', 'leechers', 'size')]) + if not self._reject_item(seeders, leechers): + title, download_url = tr.get('releaseName'), self._link(tr.get('shortId')) + if title and download_url: + items[mode].append((title, download_url, seeders, self._bytesizer(size))) + + self._log_search(mode, len(items[mode]) - cnt, search_url) + + results = self._sort_seeding(mode, results + items[mode]) + + return results + + +provider = MilkieProvider()