mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-08-04 18:14:44 +02:00
bridges: Fix coding styles
This commit is a squash of all commits that fix coding styles for the new coding style policy. [ABCTabsBridge] Fix coding style [AcrimedBridge] Fix coding style [AllocineFRBridge] Fix coding style [AnimeUltimeBridge] Fix coding style [Arte7Bridge] Fix coding style [AskfmBridge] Fix coding style [BandcampBridge] Fix coding style [BastaBridge] Fix coding style [BlaguesDeMerdeBridge] Fix coding style [BooruprojectBridge] Fix coding style [CADBridge] Fix coding style [CNETBridge] Fix coding style [CastorusBridge] Fix coding style [CollegeDeFranceBridge] Fix coding style [CommonDreamsBridge] Fix coding style [CopieDoubleBridge] Fix coding style [CourrierInternationalBridge] Fix coding style [CpasbienBridge] Fix coding style [CryptomeBridge] Fix coding style [DailymotionBridge] Fix coding style [DanbooruBridge] Fix coding style [DansTonChatBridge] Fix coding style [DauphineLibereBridge] Fix coding style [DeveloppezDotComBridge] Fix coding style [DemoBridge] Fix coding style [DilbertBridge] Fix coding style [DuckDuckGoBridge] Fix coding style [DollbooruBridge] Fix coding style [EliteDangerousGalnetBridge] Fix coding style [ElsevierBridge] Fix coding style [EstCeQuonMetEnProdBridge] Fix coding style [EZTVBridge] Fix coding style [FacebookBridge] Fix coding style [FeedExpanderExampleBridge] Fix coding style [FB2Bridge] Fix coding style [FierPandaBridge] Fix coding style [FlickrBridge] Fix coding style [FootitoBridge] Fix coding style [FourchanBridge] Fix coding style [FuturaSciencesBridge] Fix coding style [GBAtempBridge] Fix coding style [GelbooruBridge] Fix coding style [GiphyBridge] Fix coding style [GithubIssueBridge] Fix coding style [GizmodoBridge] Fix coding style [GoComicsBridge] Fix coding style [GooglePlusPostBridge] Fix coding style [GoogleSearchBridge] Fix coding style [HDWallpapersBridge] Fix coding style [HentaiHavenBridge] Fix coding style [IdenticaBridge] Fix coding style [InstagramBridge] Fix coding style [IsoHuntBridge] Fix coding style [JapanExpoBridge] Fix coding style [KonachanBridge] Fix coding style [KoreusBridge] Fix coding style [KununuBridge] Fix coding style [LeBonCoinBridge] Fix coding style [LegifranceJOBBridge] Fix coding style [LeMondeInformatiqueBridge] Fix coding style [LesJoiesDuCodeBridge] Fix coding style [LichessBridge] Fix coding style [LinkedInCompanyBridge] Fix coding style [LolibooruBridge] Fix coding style [LWNprevBridge] Fix coding style [MangareaderBridge] Fix coding style [MilbooruBridge] Fix coding style [MixCloudBridge] Fix coding style [MoebooruBridge] Fix coding style [MondeDiploBridge] Fix coding style [MsnMondeBridge] Fix coding style [MspabooruBridge] Fix coding style [NasaApodBridge] Fix coding style [NeuviemeArtBridge] Fix coding style [NextgovBridge] Fix coding style [NextInpactBridge] Fix coding style [NiceMatinBridge] Fix coding style [NovelUpdatesBridge] Fix coding style [OpenClassroomsBridge] Fix coding style [ParuVenduImmoBridge] Fix coding style [PickyWallpapersBridge] Fix coding style [PinterestBridge] Fix coding style [PlanetLibreBridge] Fix coding style [ReadComicsBridge] Fix coding style [Releases3DSBridge] Fix coding style [ReporterreBridge] Fix coding style [RTBFBridge] Fix coding style [Rue89Bridge] Fix coding style [Rule34Bridge] Fix coding style [Rule34pahealBridge] Fix coding style [SafebooruBridge] Fix coding style [SakugabooruBridge] Fix coding style [ScmbBridge] Fix coding style [ScoopItBridge] Fix coding style [SensCritiqueBridge] Fix coding style [SexactuBridge] Fix coding style [ShanaprojectBridge] Fix coding style [Shimmie2Bridge] Fix coding style [SoundcloudBridge] Fix coding style [StripeAPIChangeLogBridge] Fix coding style [SuperbWallpapersBridge] Fix coding style [T411Bridge] Fix coding style [TagBoardBridge] Fix coding style [TbibBridge] Fix coding style [TheCodingLoveBridge] Fix coding style [TheHackerNewsBridge] Fix coding style [ThePirateBayBridge] Fix coding style [TheTVDBBridge] Fix coding style [Torrent9Bridge] Fix coding style [TwitterBridge] Fix coding style [UnsplashBridge] Fix coding style [ViadeoCompanyBridge] Fix coding style [VineBridge] Fix coding style [VkBridge] Fix coding style [WallpaperStopBridge] Fix coding style [WebfailBridge] Fix coding style [WeLiveSecurityBridge] Fix coding style [WhydBridge] Fix coding style [WikipediaBridge] Fix coding style [WordPressBridge] Fix coding style [WorldOfTanksBridge] Fix coding style [XbooruBridge] Fix coding style [YandereBridge] Fix coding style [YoutubeBridge] Fix coding style [ZDNetBridge] Fix coding style
This commit is contained in:
parent
22a7666d2b
commit
6f24858124
125 changed files with 6689 additions and 5961 deletions
|
@ -1,142 +1,205 @@
|
|||
<?php
|
||||
|
||||
class TheTVDBBridge extends BridgeAbstract{
|
||||
|
||||
const MAINTAINER = "Astyan";
|
||||
const NAME = "TheTVDB";
|
||||
const URI = "http://thetvdb.com/";
|
||||
const APIURI = "https://api.thetvdb.com/";
|
||||
const CACHE_TIMEOUT = 43200; // 12h
|
||||
const DESCRIPTION = "Returns latest episodes of a serie with theTVDB api. You can contribute to theTVDB.";
|
||||
const PARAMETERS = array(array(
|
||||
'serie_id'=>array(
|
||||
'type'=>'number',
|
||||
'name'=>'ID',
|
||||
'required'=>true,
|
||||
),
|
||||
'nb_episode'=>array(
|
||||
'type'=>'number',
|
||||
'name'=>'Number of episodes',
|
||||
'defaultValue'=>10,
|
||||
'required'=>true,
|
||||
),
|
||||
)
|
||||
);
|
||||
const APIACCOUNT = "RSSBridge";
|
||||
const APIKEY = "76DE1887EA401C9A";
|
||||
const APIUSERKEY = "B52869AC6005330F";
|
||||
|
||||
private function getAPIURI(){
|
||||
return self::APIURI;
|
||||
}
|
||||
|
||||
private function getToken(){
|
||||
//login and get token, don't use curlJob to do less adaptations
|
||||
$login_array = array("apikey" => self::APIKEY,
|
||||
"username" => self::APIACCOUNT,
|
||||
"userkey" => self::APIUSERKEY);
|
||||
$login_json = json_encode($login_array);
|
||||
$ch = curl_init($this->getAPIURI().'login');
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $login_json);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json')
|
||||
);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$token_json = (array)json_decode($result);
|
||||
if(isset($token_json["Error"])){
|
||||
throw new Exception($token_json["Error"]);
|
||||
die;
|
||||
}
|
||||
$token = $token_json['token'];
|
||||
return $token;
|
||||
}
|
||||
|
||||
private function curlJob($token, $url){
|
||||
$token_header = "Authorization: Bearer ".$token;
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Accept: application/json',
|
||||
$token_header)
|
||||
);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$result_array = (array)json_decode($result);
|
||||
if(isset($result_array["Error"])){
|
||||
throw new Exception($result_array["Error"]);
|
||||
die;
|
||||
}
|
||||
return $result_array;
|
||||
}
|
||||
|
||||
private function getLatestSeasonNumber($token, $serie_id){
|
||||
// get the last season
|
||||
$url = $this->getAPIURI().'series/'.$serie_id.'/episodes/summary';
|
||||
$summary = $this->curlJob($token, $url);
|
||||
return max($summary['data']->airedSeasons);
|
||||
}
|
||||
|
||||
private function getSerieName($token, $serie_id){
|
||||
$url = $this->getAPIURI().'series/'.$serie_id;
|
||||
$serie = $this->curlJob($token, $url);
|
||||
return $serie['data']->seriesName;
|
||||
}
|
||||
|
||||
private function getSeasonEpisodes($token, $serie_id, $season, $seriename ,&$episodelist, $nbepisodemin, $page=1){
|
||||
$url = $this->getAPIURI().'series/'.$serie_id.'/episodes/query?airedSeason='.$season.'?page='.$page;
|
||||
$episodes = $this->curlJob($token, $url);
|
||||
// we don't check the number of page because we assume there is less than 100 episodes in every season
|
||||
$episodes = (array)$episodes['data'];
|
||||
$episodes = array_slice($episodes, -$nbepisodemin, $nbepisodemin);
|
||||
foreach($episodes as $episode){
|
||||
$episodedata = array();
|
||||
$episodedata['uri'] = $this->getURI().'?tab=episode&seriesid='.$serie_id.'&seasonid='.$episode->airedSeasonID.'&id='.$episode->id;
|
||||
// check if the absoluteNumber exist
|
||||
if(isset($episode->absoluteNumber)){
|
||||
$episodedata['title'] = 'S'.$episode->airedSeason.'E'.$episode->airedEpisodeNumber.'('.$episode->absoluteNumber.') : '.$episode->episodeName;
|
||||
}else{
|
||||
$episodedata['title'] = 'S'.$episode->airedSeason.'E'.$episode->airedEpisodeNumber.' : '.$episode->episodeName;
|
||||
}
|
||||
$episodedata['author'] = $seriename;
|
||||
$date = DateTime::createFromFormat('Y-m-d H:i:s', $episode->firstAired.' 00:00:00');
|
||||
$episodedata['timestamp'] = $date->getTimestamp();
|
||||
$episodedata['content'] = $episode->overview;
|
||||
$episodelist[] = $episodedata;
|
||||
}
|
||||
}
|
||||
class TheTVDBBridge extends BridgeAbstract {
|
||||
|
||||
public function collectData(){
|
||||
$serie_id = $this->getInput('serie_id');
|
||||
$nbepisode = $this->getInput('nb_episode');
|
||||
$episodelist = array();
|
||||
$token = $this->getToken();
|
||||
$maxseason = $this->getLatestSeasonNumber($token, $serie_id);
|
||||
$seriename = $this->getSerieName($token, $serie_id);
|
||||
$season = $maxseason;
|
||||
while(sizeof($episodelist) < $nbepisode and $season >= 1){
|
||||
$nbepisodetmp = $nbepisode - sizeof($episodelist);
|
||||
$this->getSeasonEpisodes($token, $serie_id, $season, $seriename, $episodelist, $nbepisodetmp);
|
||||
$season = $season - 1;
|
||||
}
|
||||
// add the 10 last specials episodes
|
||||
try{ // catch to avoid error if empty
|
||||
$this->getSeasonEpisodes($token, $serie_id, 0, $seriename, $episodelist, $nbepisode);
|
||||
} catch (Exception $e) { }
|
||||
// sort and keep the 10 last episodes, works bad with the netflix serie (all episode lauch at once)
|
||||
usort($episodelist, function ($a, $b) { return $a['timestamp'] < $b['timestamp'];});
|
||||
$this->items = array_slice($episodelist, 0, $nbepisode);
|
||||
}
|
||||
const MAINTAINER = 'Astyan';
|
||||
const NAME = 'TheTVDB';
|
||||
const URI = 'http://thetvdb.com/';
|
||||
const APIURI = 'https://api.thetvdb.com/';
|
||||
const CACHE_TIMEOUT = 43200; // 12h
|
||||
const DESCRIPTION = 'Returns latest episodes of a serie with theTVDB api. You can contribute to theTVDB.';
|
||||
const PARAMETERS = array(
|
||||
array(
|
||||
'serie_id' => array(
|
||||
'type' => 'number',
|
||||
'name' => 'ID',
|
||||
'required' => true,
|
||||
),
|
||||
'nb_episode' => array(
|
||||
'type' => 'number',
|
||||
'name' => 'Number of episodes',
|
||||
'defaultValue' => 10,
|
||||
'required' => true,
|
||||
),
|
||||
)
|
||||
);
|
||||
const APIACCOUNT = 'RSSBridge';
|
||||
const APIKEY = '76DE1887EA401C9A';
|
||||
const APIUSERKEY = 'B52869AC6005330F';
|
||||
|
||||
private function getApiUri(){
|
||||
return self::APIURI;
|
||||
}
|
||||
|
||||
private function getToken(){
|
||||
//login and get token, don't use curlJob to do less adaptations
|
||||
$login_array = array(
|
||||
'apikey' => self::APIKEY,
|
||||
'username' => self::APIACCOUNT,
|
||||
'userkey' => self::APIUSERKEY
|
||||
);
|
||||
|
||||
$login_json = json_encode($login_array);
|
||||
$ch = curl_init($this->getApiUri() . 'login');
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $login_json);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json',
|
||||
'Accept: application/json'
|
||||
)
|
||||
);
|
||||
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$token_json = (array)json_decode($result);
|
||||
if(isset($token_json['Error'])){
|
||||
throw new Exception($token_json['Error']);
|
||||
die;
|
||||
}
|
||||
$token = $token_json['token'];
|
||||
return $token;
|
||||
}
|
||||
|
||||
private function curlJob($token, $url){
|
||||
$token_header = 'Authorization: Bearer ' . $token;
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Accept: application/json',
|
||||
$token_header
|
||||
)
|
||||
);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$result_array = (array)json_decode($result);
|
||||
if(isset($result_array['Error'])){
|
||||
throw new Exception($result_array['Error']);
|
||||
die;
|
||||
}
|
||||
return $result_array;
|
||||
}
|
||||
|
||||
private function getLatestSeasonNumber($token, $serie_id){
|
||||
// get the last season
|
||||
$url = $this->getApiUri() . 'series/' . $serie_id . '/episodes/summary';
|
||||
$summary = $this->curlJob($token, $url);
|
||||
return max($summary['data']->airedSeasons);
|
||||
}
|
||||
|
||||
private function getSerieName($token, $serie_id){
|
||||
$url = $this->getApiUri() . 'series/' . $serie_id;
|
||||
$serie = $this->curlJob($token, $url);
|
||||
return $serie['data']->seriesName;
|
||||
}
|
||||
|
||||
private function getSeasonEpisodes($token
|
||||
, $serie_id
|
||||
, $season
|
||||
, $seriename
|
||||
, &$episodelist
|
||||
, $nbepisodemin
|
||||
, $page = 1){
|
||||
$url = $this->getApiUri()
|
||||
. 'series/'
|
||||
. $serie_id
|
||||
. '/episodes/query?airedSeason='
|
||||
. $season
|
||||
. '?page='
|
||||
. $page;
|
||||
|
||||
$episodes = $this->curlJob($token, $url);
|
||||
// we don't check the number of page because we assume there is less
|
||||
//than 100 episodes in every season
|
||||
$episodes = (array)$episodes['data'];
|
||||
$episodes = array_slice($episodes, -$nbepisodemin, $nbepisodemin);
|
||||
foreach($episodes as $episode){
|
||||
$episodedata = array();
|
||||
$episodedata['uri'] = $this->getURI()
|
||||
. '?tab=episode&seriesid='
|
||||
. $serie_id
|
||||
. '&seasonid='
|
||||
. $episode->airedSeasonID
|
||||
. '&id='
|
||||
. $episode->id;
|
||||
|
||||
// check if the absoluteNumber exist
|
||||
if(isset($episode->absoluteNumber)){
|
||||
$episodedata['title'] = 'S'
|
||||
. $episode->airedSeason
|
||||
. 'E'
|
||||
. $episode->airedEpisodeNumber
|
||||
. '('
|
||||
. $episode->absoluteNumber
|
||||
. ') : '
|
||||
. $episode->episodeName;
|
||||
} else {
|
||||
$episodedata['title'] = 'S'
|
||||
. $episode->airedSeason
|
||||
. 'E'
|
||||
. $episode->airedEpisodeNumber
|
||||
. ' : '
|
||||
. $episode->episodeName;
|
||||
}
|
||||
$episodedata['author'] = $seriename;
|
||||
$date = DateTime::createFromFormat(
|
||||
'Y-m-d H:i:s',
|
||||
$episode->firstAired . ' 00:00:00'
|
||||
);
|
||||
|
||||
$episodedata['timestamp'] = $date->getTimestamp();
|
||||
$episodedata['content'] = $episode->overview;
|
||||
$episodelist[] = $episodedata;
|
||||
}
|
||||
}
|
||||
|
||||
public function collectData(){
|
||||
$serie_id = $this->getInput('serie_id');
|
||||
$nbepisode = $this->getInput('nb_episode');
|
||||
$episodelist = array();
|
||||
$token = $this->getToken();
|
||||
$maxseason = $this->getLatestSeasonNumber($token, $serie_id);
|
||||
$seriename = $this->getSerieName($token, $serie_id);
|
||||
$season = $maxseason;
|
||||
while(sizeof($episodelist) < $nbepisode && $season >= 1){
|
||||
$nbepisodetmp = $nbepisode - sizeof($episodelist);
|
||||
$this->getSeasonEpisodes(
|
||||
$token,
|
||||
$serie_id,
|
||||
$season,
|
||||
$seriename,
|
||||
$episodelist,
|
||||
$nbepisodetmp
|
||||
);
|
||||
|
||||
$season = $season - 1;
|
||||
}
|
||||
// add the 10 last specials episodes
|
||||
try { // catch to avoid error if empty
|
||||
$this->getSeasonEpisodes(
|
||||
$token,
|
||||
$serie_id,
|
||||
0,
|
||||
$seriename,
|
||||
$episodelist,
|
||||
$nbepisode
|
||||
);
|
||||
} catch(Exception $e){
|
||||
unset($e);
|
||||
}
|
||||
// sort and keep the 10 last episodes, works bad with the netflix serie
|
||||
// (all episode lauch at once)
|
||||
usort(
|
||||
$episodelist,
|
||||
function ($a, $b){
|
||||
return $a['timestamp'] < $b['timestamp'];
|
||||
}
|
||||
);
|
||||
$this->items = array_slice($episodelist, 0, $nbepisode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue