-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkinobaza.class.php
108 lines (105 loc) · 3.87 KB
/
kinobaza.class.php
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
<?php
/**
* Класс для работы с API сайта kinobaza.tv
* @copyright 2011, CupIvan <mail@cupivan.ru>
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3
*/
class kinobaza
{
private $server = 'http://api.kinobaza.tv';
private $request_token_uri = 'http://api.kinobaza.tv/auth/request-token';
private $authorize_uri = 'http://api.kinobaza.tv/auth/authorize';
private $access_token_uri = 'http://api.kinobaza.tv/auth/access-token';
/** конструктор */
function __construct($oAuth_params)
{
$oAuth_params = array_merge($oAuth_params, $this->consumerToken());
$this->oAuth = new oAuth($oAuth_params);
}
/** ключ приложения на kinobaza.tv */
function consumerToken()
{
return array(
'oauth_consumer_key' => '13938404b29bcf109b5f9f82ba50fe4604e2011ab',
'oauth_consumer_secret' => '0e5f8a1728fbba4d4fe21a88f6c14697',
);
}
/** получение access токена */
function auth()
{
$oAuth = new oAuth($this->consumerToken());
echo "Request token: "; flush();
$token = $oAuth->getRequestToken($this->request_token_uri);
echo $token['oauth_token']."\n";
echo "Go to {$this->authorize_uri}?oauth_token=".$token['oauth_token']."&oauth_callback=".urlencode('http://localhost/')."\n";
echo "And type verifier in back URI: ";
$f = fopen('php://stdin', 'r'); $verifier = trim(fgets($f)); fclose($f);
echo "Access token:"; flush();
$token = $oAuth->getAccessToken($this->access_token_uri, $verifier);
echo $token['oauth_token']."\n";
return $token;
}
/** поиск по названию фильма */
function search($query)
{
$query = urlencode($query);
return json_decode($this->oAuth->get($this->server."/films/search?query=$query&limit=5"), true);
}
/** поиск по содержимому файла */
function search_by_file($fname)
{
$f = @fopen($fname, 'r') or die("No such file '$fname'\n");
$data = fread($f, 1024*1024); fclose($f);
$hash = sha1($data);
$fname = urlencode($fname);
return json_decode($this->oAuth->get($this->server."/films/search-by-file?filepath=$fname&hash=$hash"), true);
}
/** поиск по идентификатору */
function search_by_id($params)
{
if (!is_array($params)) $params = array('id' => $params);
$search = '';
if (isset($params[$x='episode_number'])) { $search = "/episodes/".$params[$x].$search; }
if (isset($params[$x='season_number'])) { $search = "/seasons/". $params[$x].$search; }
if (isset($params[$x='series_id'])) { $search = "/films/". $params[$x].$search; $params['type'] = 'series'; }
if (!$search && isset($params['id'])) $search = '/films/'.$params['id'];
if (!$search) return false;
$res = json_decode($this->oAuth->get($this->server.$search), true);
if (!$res) $res = array();
return $params + $res;
}
/** отметить фильм */
function check($params)
{
if (is_string($params)) $params = array('id' => $params);
if (isset($params['series_id']))
{
$p = array
(
'series_id' => $params['series_id'],
'season' => $params['season_number'],
'episode' => $params['episode_number'],
'inclusive' => 0,
);
$res = $this->oAuth->post($this->server."/my/series/mark-seen", $p);
if (!$res) die("oAuth error! Cann't check serial!\n");
return $params + json_decode($res, true);
}
else
{
$params['status'] = 'seen';
$res = $this->oAuth->post($this->server."/my/films/set-status", $params);
if (!$res) die("oAuth error! Cann't check film!\n");
return $params + json_decode($res, true);
}
}
/** проголосовать за фильм */
function vote($params, $numStars)
{
if (is_string($params)) $params = array('id' => $params);
$params['rate'] = $numStars;
$res = $this->oAuth->post($this->server."/my/films/set-status", $params);
if (!$res) die("oAuth error! Cann't vote film!\n");
return $params + json_decode($res, true);
}
}