|
|
# API Documentation
|
|
|
|
|
|
## Sommaire
|
|
|
|
|
|
* [Informations](#informations)
|
|
|
* [Erreurs](#erreurs)
|
|
|
* [Récupération : GET](#récupération-get)
|
|
|
|
|
|
* [Récupération des films](#récupérer-des-films)
|
|
|
* [Récupération des séries](#récupérer-des-séries)
|
|
|
* [Récupération des épisodes](#récupérer-des-épisodes)
|
|
|
* [Récupération des acteurs](#récupérer-des-acteurs)
|
|
|
* [Récupération des fichiers](#récupérer-un-fichier)
|
|
|
* [Récupération des sous-titres](#récupérer-un-sous-titre)
|
|
|
|
|
|
* [Ajout : POST](#ajout-post)
|
|
|
|
|
|
* [Ajouter un film](#ajouter-un-film)
|
|
|
* [Ajouter une série](#ajouter-une-série)
|
|
|
* [Ajouter un épisode](#ajouter-un-épisode)
|
|
|
* [Ajouter un acteur](#ajouter-un-acteur)
|
|
|
* [Ajouter un fichier](#ajouter-un-fichier)
|
|
|
* [Ajouter un sous-titre](#ajouter-un-sous-titre)
|
|
|
|
|
|
* [Edition : PUT](#édition)
|
|
|
|
|
|
* [Editer un film](#éditer-un-film)
|
|
|
* [Editer une série](#éditer-une-série)
|
|
|
* [Editer un épisode](#éditer-un-épisode)
|
|
|
* [Editer un acteur](#éditer-un-acteur)
|
|
|
* [Editer un fichier](#éditer-un-fichier)
|
|
|
* [Editer un sous-titre](#éditer-un-sous-titre)
|
|
|
|
|
|
* [Suppression : DELETE](#suppression-delete)
|
|
|
|
|
|
* [Supprimer un film](#supprimer-un-film)
|
|
|
* [Supprimer une série](#supprimer-une-série)
|
|
|
* [Supprimer un épisode](#supprimer-un-épisode)
|
|
|
* [Supprimer un acteur](#supprimer-un-acteur)
|
|
|
* [Supprimer un fichier](#supprimer-un-fichier)
|
|
|
* [Supprimer un sous-titre](#supprimer-un-sous-titre)
|
|
|
|
|
|
* [Mauvais liens](#mauvais-liens)
|
|
|
|
|
|
* [GET /api/broken](#get-apibroken)
|
|
|
* [POST /api/broken](#post-apibroken)
|
|
|
* [PUT /api/broken](#put-apibroken)
|
|
|
* [DELETE /api/broken](#delete-apibroken)
|
|
|
|
|
|
### Informations
|
|
|
|
|
|
L'API utilise les conventions REST, c'est à dire qu'il faut appeler les liens (en **gras**) avec le header (GET, POST, DELETE, PUT). De plus, les URL sont données en relatif par rapport au site (`GET /api/films?param1=val1¶m2=val2` devra être `GET site.fr/api/films?param1=val1¶m2=val2`). Penser à encoder les URL (urlencode en PHP ou Python (urllib)) pour que
|
|
|
|
|
|
* ' ' : '+'
|
|
|
* '/' : '#2f'
|
|
|
* ...
|
|
|
|
|
|
Sinon il risque d'y avoir quelques problèmes.
|
|
|
|
|
|
* token : jeton de sécurité donné
|
|
|
* app : nom de l'application associé au token
|
|
|
* [*] champ obligatoire
|
|
|
* [?] champ renvoyé si demandé
|
|
|
|
|
|
### Erreurs
|
|
|
|
|
|
Si le token ou app n'est pas renseigné ou incorrect, on reçoit :
|
|
|
|
|
|
{
|
|
|
"error": 403,
|
|
|
"message": "token mismatch"
|
|
|
}
|
|
|
|
|
|
avec le header 403 (forbidden).
|
|
|
|
|
|
S'il manque des paramètres obligatoires :
|
|
|
|
|
|
{
|
|
|
"error": 400,
|
|
|
"message": "Missing parameters"
|
|
|
}
|
|
|
|
|
|
avec le header 400.
|
|
|
|
|
|
## Récupération : GET
|
|
|
|
|
|
Pas besoin de token pour ces requètes là.
|
|
|
|
|
|
### Récupérer des films
|
|
|
|
|
|
**GET /api/films/**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* id (int identifiant du film)
|
|
|
* title (str titre du film)
|
|
|
* title_vo (str titre vo du film)
|
|
|
* imdb_id (str identifiant IMDb)
|
|
|
* limit (int nombre de films maximum)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* files (bool récupère les fichiers)
|
|
|
* subtitles (bool récupère les sous-titres)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
title_vo (str)
|
|
|
imdb_id (str)
|
|
|
tmdb_id (int)
|
|
|
summary (longText)
|
|
|
cover_img (str)
|
|
|
rating (str)
|
|
|
runtime (int)
|
|
|
release_date (date)
|
|
|
background_img (str)
|
|
|
[?] files (array fichier : voir GET /api/files/)
|
|
|
[?] subtitles (array subtitle : voir GET /api/subtitles/)
|
|
|
}]
|
|
|
|
|
|
#### Exemple : GET /api/films?app=nom_app&token=valeur_du_token&id=1045&files=1
|
|
|
|
|
|
[
|
|
|
{
|
|
|
"id": 1045,
|
|
|
"title": "Blade Runner",
|
|
|
"title_vo": "Blade Runner",
|
|
|
"tmdb_id": "78",
|
|
|
"imdb_id": "tt0083658",
|
|
|
"summary": "Dans les dernières années du 20ème siècle, des milliers d'hommes et de femmes partent à la conquête de l'espace, fuyant les mégalopoles devenues insalubres. Sur les colonies, une nouvelle race d'esclaves voit le jour : les répliquants, des androïdes que rien ne peut distinguer de l'être humain. Los Angeles, 2019\. Après avoir massacré un équipage et pris le contrôle d'un vaisseau, les répliquants de type Nexus 6, le modèle le plus perfectionné, sont désormais déclarés \"hors la loi\". Quatre d'entre eux parviennent cependant à s'échapper et à s'introduire dans Los Angeles. Un agent d'une unité spéciale, un blade-runner, est chargé de les éliminer. Selon la terminologie officielle, on ne parle pas d'exécution, mais de retrait..",
|
|
|
"cover_img": "http://image.tmdb.org/t/p/w185/wuvsU227d8pvHvTRaqkPlsj0OvD.jpg",
|
|
|
"rating": "7.8",
|
|
|
"runtime": 117,
|
|
|
"release_date": "1982-06-25 00:00:00",
|
|
|
"files":
|
|
|
[
|
|
|
{
|
|
|
"id": 1137,
|
|
|
"path": "ftp://nas.fr/Movies/IMDB Top Films",
|
|
|
"name": "Blade Runner [1982].mkv",
|
|
|
"quality": "N/A",
|
|
|
"lang": "N/A",
|
|
|
"subtitles": "N/A",
|
|
|
"filable_id": 1045,
|
|
|
"filable_type": "App\\Film"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
]
|
|
|
|
|
|
### Récupérer des séries
|
|
|
|
|
|
**GET /api/series/**
|
|
|
|
|
|
#### Péramètres
|
|
|
|
|
|
* id (int identifiant du film)
|
|
|
* title (str titre du film)
|
|
|
* tmdb_id (int identifiant tmdb)
|
|
|
* imdb_id (str identifiant IMDb)
|
|
|
* limit (int nombre de films maximum)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* episodes (bool récupère les épisodes associés)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
tmdb_id (int)
|
|
|
imdb_id (str)
|
|
|
summary (longText)
|
|
|
cover_img (str)
|
|
|
rating (str)
|
|
|
release_date (date)
|
|
|
background_img (str)
|
|
|
[?] episodes (array episode : voir GET /api/episodes/)
|
|
|
}]
|
|
|
|
|
|
#### Exemple : GET /api/series?app=nom_app&token=valeur_du_token&first=1&episodes=1
|
|
|
|
|
|
{
|
|
|
"id": 1,
|
|
|
"title": "Grimm",
|
|
|
"status": "Running",
|
|
|
"summary": "<p><strong>Grimm </strong>is a drama series inspired by the classic Grimm Brothers' Fairy Tales. After Portland homicide detective Nick Burkhardt discovers he's descended from an elite line of criminal profilers known as \"Grimms\", he increasingly finds his responsibilities as a detective at odds with his new responsibilities as a Grimm.</p>",
|
|
|
"tmdb_id": 10,
|
|
|
"imdb_id": "tt1830617",
|
|
|
"cover_img": "http://static.tvmaze.com/uploads/images/medium_portrait/69/174906.jpg",
|
|
|
"rating": 8.4000000000000004,
|
|
|
"release_date": "2011-10-28 00:00:00",
|
|
|
"episodes":
|
|
|
[
|
|
|
{
|
|
|
"id": 1,
|
|
|
"title": "Pilot",
|
|
|
"summary": "<p>After the mysterious brutal attack of a local college co-ed, Portland homicide Detective Nick Burkhardt discovered he is descendant of an elite line of criminal profilers known as \"Grimms,\" charged with keeping balance between humanity and the mythological creatures of the world. As he tries to hide the dangers of his new found calling from his fiance's, Juliette Silverton, and his partner, Hank Griffin, he becomes ever more entrenched in the ancient rivalries and alliances of the Grimm world. With help from his reluctant confidant, Monroe, a reformed Grimm creature himself, Nick must navigate through the forces of a larger-than-life mythology. </p>",
|
|
|
"serie_id": 1,
|
|
|
"cover_img": "http://static.tvmaze.com/uploads/images/medium_landscape/15/39286.jpg",
|
|
|
"tmdb_id": "414",
|
|
|
"season": 1,
|
|
|
"episode": 1,
|
|
|
"release_date": "2011-10-28 00:00:00",
|
|
|
"air_time": "21:00:00"
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
|
|
|
### Récupérer des épisodes
|
|
|
|
|
|
**GET /api/episodes/**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* id (int identifiant du film)
|
|
|
* serie_id (int identifiant de la série associée)
|
|
|
* title (str titre du film)
|
|
|
* tmdb_id (int identifiant tvmaze)
|
|
|
* season (int numéro de la saison)
|
|
|
* episode (int numéro de l'épisode)
|
|
|
* limit (int nombre de films maximum)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* files (bool récupère les fichiers)
|
|
|
* subtitles (bool récupère les sous-titres)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
serie_id (int)
|
|
|
tmdb_id (int)
|
|
|
summary (longText)
|
|
|
cover_img (str)
|
|
|
season (int)
|
|
|
episode (int)
|
|
|
release_date (date)
|
|
|
rating (str)
|
|
|
[?] files (array fichier : voir GET /api/files/)
|
|
|
[?] subtitles (array sous-titre : voir GET /api/subtitles/)
|
|
|
}]
|
|
|
|
|
|
#### Exemple : GET /api/episodes?app=nom_app&token=valeur_du_token&first=true&season=1&episode=1&serie_id=1
|
|
|
|
|
|
{
|
|
|
"id": 1,
|
|
|
"title": "Pilot",
|
|
|
"summary": "<p>After the mysterious brutal attack of a local college co-ed, Portland homicide Detective Nick Burkhardt discovered he is descendant of an elite line of criminal profilers known as \"Grimms,\" charged with keeping balance between humanity and the mythological creatures of the world. As he tries to hide the dangers of his new found calling from his fiance's, Juliette Silverton, and his partner, Hank Griffin, he becomes ever more entrenched in the ancient rivalries and alliances of the Grimm world. With help from his reluctant confidant, Monroe, a reformed Grimm creature himself, Nick must navigate through the forces of a larger-than-life mythology. </p>",
|
|
|
"serie_id": 1,
|
|
|
"cover_img": "http://static.tvmaze.com/uploads/images/medium_landscape/15/39286.jpg",
|
|
|
"tmdb_id": "414",
|
|
|
"season": 1,
|
|
|
"episode": 1,
|
|
|
"release_date": "2011-10-28 00:00:00",
|
|
|
"air_time": "21:00:00"
|
|
|
}
|
|
|
|
|
|
### Récupérer des acteurs
|
|
|
|
|
|
**GET /api/actors/**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* id (int identifiant du film)
|
|
|
* name (str nom de l'acteur)
|
|
|
* imdb_id (str)
|
|
|
* tmdb_id (int)
|
|
|
* limit (int nombre de films maximum)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* films (bool films fait par l'acteur)
|
|
|
* series (bool séries fait par l'acteur)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
name (str)
|
|
|
tmdb_id (int)
|
|
|
imdb_id (str)
|
|
|
cover_img (str)
|
|
|
[?] films (array Film)
|
|
|
[?] series (array Serie)
|
|
|
}]
|
|
|
|
|
|
#### Exemple GET /api/actors?token=valeur_du_token&name=Stanley+Kubrick&films=1
|
|
|
|
|
|
[
|
|
|
{
|
|
|
"id": 18468,
|
|
|
"name": "Stanley Kubrick",
|
|
|
"tmdb_id": 240,
|
|
|
"imdb_id": "",
|
|
|
"cover_img": "http://image.tmdb.org/t/p/w185/ywoN9gI2lFOA5EAxxyRbQ1R4GQ6.jpg",
|
|
|
"films": [
|
|
|
{
|
|
|
"id": 1026,
|
|
|
"title": "2001 : L'Odyssée de l'espace",
|
|
|
"title_vo": "2001: A Space Odyssey",
|
|
|
"tmdb_id": "62",
|
|
|
"imdb_id": "tt0062622",
|
|
|
"summary": "A l'aube de l'humanité, des singes anthropoïdes vivent dans un milieu hostile et violent. Quelques-uns d'entre eux découvrent un jour un énigmatique monolithe noir, tombé du ciel, qui semble modifier leur comportement. Soudain inspiré, l'un de ces primates crée le premier outil avec un os et s'en sert pour chasser et se défendre. Des millénaires plus tard, en 2001, le docteur Heywood Floyd se dirige vers la Lune à bord d'un vaisseau spatial. Il est chargé d'une mission confidentielle : il doit enquêter sur un monolithe découvert au cours de fouilles dans le cirque lunaire de Tycho. Selon les premières observations, l'objet émettrait un signal mystérieux...",
|
|
|
"cover_img": "http://image.tmdb.org/t/p/w185/yIAINtrQPfHuzIUI56i93fhK8qP.jpg",
|
|
|
"rating": "7.8",
|
|
|
"runtime": 160,
|
|
|
"release_date": "1968-04-05 00:00:00",
|
|
|
"pivot": {
|
|
|
"actor_id": 18468,
|
|
|
"actable_id": 1026
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
"id": 1028,
|
|
|
"title": "Orange mécanique",
|
|
|
"title_vo": "A Clockwork Orange",
|
|
|
"tmdb_id": "185",
|
|
|
"imdb_id": "tt0066921",
|
|
|
"summary": "Au XXIème siècle, où règnent la violence et le sexe, Alex, jeune chef de bande, exerce avec sadisme une terreur aveugle. Après son emprisonnement, des psychanalystes l'emploient comme cobaye dans des expériences destinées à juguler la criminalité...",
|
|
|
"cover_img": "http://image.tmdb.org/t/p/w185/x2YcG7zW7d3Pc7MgHtVlFQtqE50.jpg",
|
|
|
"rating": "7.8",
|
|
|
"runtime": 136,
|
|
|
"release_date": "1971-12-18 00:00:00",
|
|
|
"pivot": {
|
|
|
"actor_id": 18468,
|
|
|
"actable_id": 1028
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
"id": 1041,
|
|
|
"title": "Barry Lyndon",
|
|
|
"title_vo": "Barry Lyndon",
|
|
|
"tmdb_id": "3175",
|
|
|
"imdb_id": "tt0072684",
|
|
|
"summary": "Au XVIIIe siècle en Irlande, à la mort de son père, le jeune Redmond Barry ambitionne de monter dans l'échelle sociale. Il élimine en duel son rival, un officier britannique amoureux de sa cousine mais est ensuite contraint à l'exil. Il s'engage dans l'armée britannique et part combattre sur le continent européen. Il déserte bientôt et rejoint l'armée prussienne des soldats de Frederic II afin d'échapper à la peine de mort. Envoyé en mission, il doit espionner un noble joueur, mène un double-jeu et se retrouve sous la protection de ce dernier. Introduit dans la haute société européenne, il parvient à devenir l'amant d'une riche et magnifique jeune femme, Lady Lyndon. Prenant connaissance de l'adultère, son vieil époux sombre dans la dépression et meurt de dépit. Redmond Barry épouse Lady Lyndon et devient Barry Lyndon.",
|
|
|
"cover_img": "http://image.tmdb.org/t/p/w185/sJfkIyQBOq8o06ihfJJJ9sAnB5K.jpg",
|
|
|
"rating": "7.4",
|
|
|
"runtime": 187,
|
|
|
"release_date": "1975-12-18 00:00:00",
|
|
|
"pivot": {
|
|
|
"actor_id": 18468,
|
|
|
"actable_id": 1041
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
]
|
|
|
|
|
|
### Récupérer un fichier
|
|
|
|
|
|
**GET /api/files/**
|
|
|
|
|
|
#### Paramètre
|
|
|
|
|
|
* id (int identifiant du fichier)
|
|
|
* path (str chemin du ficher, ex: 'ftp://nas.fr/Movies/2015')
|
|
|
* name (str nom du fichier, ex: 'Chappie [2015].mkv')
|
|
|
* limit (int nombre de fichiers maximums)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* filable (bool récupère les éléments pouvant avoir un fichier ex: Film ou Episode)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
path (str)
|
|
|
name (str)
|
|
|
quality (str)
|
|
|
lang (str)
|
|
|
subtitles (str)
|
|
|
filable_id (int)
|
|
|
filable_type (str, ex: App\Film ou App\Episode)
|
|
|
[?] filable (array Film ou Episode : voir /api/films/ ou /api/episodes)
|
|
|
}]
|
|
|
|
|
|
#### Exemple : GET /api/files?token=valeur_du_token&id=1137
|
|
|
|
|
|
[
|
|
|
{
|
|
|
"id": 1137,
|
|
|
"path": "ftp://nas.fr/Movies/IMDB Top Films",
|
|
|
"name": "Blade Runner [1982].mkv",
|
|
|
"quality": "N/A",
|
|
|
"lang": "N/A",
|
|
|
"subtitles": "N/A",
|
|
|
"filable_id": 1045,
|
|
|
"filable_type": "App\\Film"
|
|
|
}
|
|
|
]
|
|
|
|
|
|
### Récupérer un sous-titre
|
|
|
|
|
|
**GET /api/subtitles/**
|
|
|
|
|
|
#### Paramètre
|
|
|
|
|
|
* id (int identifiant du sous-titre)
|
|
|
* path (str chemin du sous-titre, ex: 'ftp://nas.fr/Movies/2015')
|
|
|
* name (str nom du sous-titre, ex: 'Chappie [2015].srt')
|
|
|
* limit (int nombre de sous-titres maximums)
|
|
|
* first (bool récupère que le premier élément)
|
|
|
* subtitlable (bool récupère les éléments pouvant avoir un sous-titre ex: Film ou Episode)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
path (str)
|
|
|
name (str)
|
|
|
lang (str)
|
|
|
subtitle_id (int)
|
|
|
subtitle_type (str, ex: App\Film ou App\Episode)
|
|
|
[?] subtitlable (array Film ou Episode : voir /api/films/ ou /api/episodes)
|
|
|
}]
|
|
|
|
|
|
## Ajout : POST
|
|
|
|
|
|
### Ajouter un film
|
|
|
|
|
|
**POST /api/films**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] title
|
|
|
* tmdb_id (si non renseigné recherche par titre, sinon recherche par l'id)
|
|
|
* year (année du film)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
title_vo (str)
|
|
|
imdb_id (str)
|
|
|
tmdb_id (int)
|
|
|
summary (longText)
|
|
|
cover_img (str)
|
|
|
rating (str)
|
|
|
release_date (date 1991-01-01 00:00:00)
|
|
|
runtime (int)
|
|
|
}]
|
|
|
|
|
|
Peut être long car récupère les infos sur une api externe limitée à 40 requète / 10 sec.
|
|
|
|
|
|
### Ajouter une série
|
|
|
|
|
|
**POST /api/series**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] title
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
status (str Running, Ended)
|
|
|
summary (str)
|
|
|
tmdb_id (int)
|
|
|
imdb_id (str)
|
|
|
cover_img (str)
|
|
|
release_date (date 1991-01-01 00:00:00)
|
|
|
rating (float)
|
|
|
}]
|
|
|
|
|
|
Peut être long car récupère les infos sur une api externe limitée à 40 requêtes / 10 sec.
|
|
|
|
|
|
### Ajouter un épisode
|
|
|
|
|
|
**POST /api/episodes**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] season (int numéro de saison)
|
|
|
* [*] episode (int numéro d'épisode)
|
|
|
* [*] serie_id (int id de la série associée)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
title (str)
|
|
|
season (int)
|
|
|
episode (int)
|
|
|
serie_id (int)
|
|
|
summary (str)
|
|
|
tmdb_id (int)
|
|
|
release_date (date)
|
|
|
rating (str)
|
|
|
cover_img (str)
|
|
|
serie (array Serie)
|
|
|
}]
|
|
|
|
|
|
### Ajouter un acteur
|
|
|
|
|
|
**POST /api/actors**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] name (str nom de l'acteur)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
name (str)
|
|
|
tmdb_id (int)
|
|
|
imdb_id (str)
|
|
|
cover_img (str)
|
|
|
}]
|
|
|
|
|
|
### Ajouter un fichier
|
|
|
|
|
|
**POST /api/files**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] path (str chemin du ficher, ex: 'ftp://nas.fr/Movies/2015')
|
|
|
* [*] name (str nom du fichier, ex: 'Chappie [2015].mkv')
|
|
|
* [*] type (str Film ou Episode)
|
|
|
* [*] type_id (int identifiant de la vidéo a ajouter)
|
|
|
* quality (str defaut N/A mettre Full HD, HD ou SD si connu)
|
|
|
* lang (str defaut N/A mettre FR, VO (EN), ... si connu)
|
|
|
* subtitles (str defaut N/A mettre FR, VO, ... si connu)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
path (str)
|
|
|
name (str)
|
|
|
quality (str)
|
|
|
lang (str)
|
|
|
filable_id (int id du media associé)
|
|
|
filable_type (str App\Film ou App\Episode)
|
|
|
filable (array media associé voir GET films ou episodes)
|
|
|
}]
|
|
|
|
|
|
### Ajouter un sous-titre
|
|
|
|
|
|
**POST /api/subtitles**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] path (str chemin du ficher, ex: 'ftp://nas.fr/Movies/2015')
|
|
|
* [*] name (str nom du fichier, ex: 'Chappie [2015].mkv')
|
|
|
* [*] type (str Film ou Episode)
|
|
|
* [*] type_id (int identifiant de la vidéo a ajouter)
|
|
|
* lang (str defaut N/A mettre FR, VO (EN), ... si connu)
|
|
|
|
|
|
#### Retour
|
|
|
|
|
|
[{
|
|
|
id (int)
|
|
|
path (str)
|
|
|
name (str)
|
|
|
lang (str)
|
|
|
subtitlable_id (int id du media associé)
|
|
|
subtitlable_type (str App\Film ou App\Episode)
|
|
|
subtitlable (array media associé voir GET films ou episodes)
|
|
|
}]
|
|
|
|
|
|
## Edition : PUT
|
|
|
|
|
|
Les paramètres obligatoires pour l'édition sont :
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id (identifiant de l'élément à modifier).
|
|
|
|
|
|
### Editer un film
|
|
|
|
|
|
**PUT /api/films**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* title
|
|
|
* title_vo
|
|
|
* tmdb_id
|
|
|
* summary
|
|
|
* cover_img
|
|
|
* rating
|
|
|
* runtime
|
|
|
* release_date
|
|
|
* autoFill (si tmdb_id est donné, remplie avec le film d'id tmdb_id, sinon à partir du titre)
|
|
|
* year (Si autoFill, recherche les films de l'année `year`)
|
|
|
|
|
|
### Editer une série
|
|
|
|
|
|
**PUT /api/series**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* title
|
|
|
* status
|
|
|
* imdb_id
|
|
|
* tmdb_id
|
|
|
* summary
|
|
|
* cover_img
|
|
|
* rating
|
|
|
* release_date
|
|
|
* autoFill
|
|
|
|
|
|
### Editer un épisode
|
|
|
|
|
|
**PUT /api/episodes**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* title
|
|
|
* serie_id
|
|
|
* tmdb_id
|
|
|
* summary
|
|
|
* cover_img
|
|
|
* season
|
|
|
* episode (numéro de l'épisode)
|
|
|
* rating
|
|
|
* release_date
|
|
|
|
|
|
### Editer un acteur
|
|
|
|
|
|
**PUT /api/actors**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* name
|
|
|
* imdb_id
|
|
|
* tmdb_id
|
|
|
* cover_img
|
|
|
|
|
|
### Editer un fichier
|
|
|
|
|
|
**PUT /api/files**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* path
|
|
|
* name
|
|
|
* quality
|
|
|
* lang
|
|
|
* subtitles
|
|
|
* filable_id
|
|
|
* filable_type : App\Film ou App\Episode. Attention à bien échapper l'antislash.
|
|
|
|
|
|
### Editer un sous-titre
|
|
|
|
|
|
**PUT /api/subtitles**
|
|
|
|
|
|
#### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id
|
|
|
* path
|
|
|
* name
|
|
|
* lang
|
|
|
* subtitlable_id
|
|
|
* subtitlable_type : App\Film ou App\Episode. Attention à bien échapper l'antislash.
|
|
|
|
|
|
## Suppression : DELETE
|
|
|
|
|
|
### Supprimer un film
|
|
|
|
|
|
**DELETE /api/films**
|
|
|
|
|
|
Attention, **supprime** aussi les **fichiers associés**.
|
|
|
|
|
|
### Supprimer une série
|
|
|
|
|
|
**DELETE /api/series**
|
|
|
|
|
|
Attention, **supprime** aussi les **épisodes associés** et les **fichiers associés** aux épisodes associés.
|
|
|
|
|
|
### Supprimer un épisode
|
|
|
|
|
|
**DELETE /api/episodes**
|
|
|
|
|
|
Attention, **supprime aussi** les **fichiers associés**.
|
|
|
|
|
|
### Supprimer un acteur
|
|
|
|
|
|
**DELETE /api/actors**
|
|
|
|
|
|
### Supprimer un fichier
|
|
|
|
|
|
**DELETE /api/files**
|
|
|
|
|
|
### Supprimer un sous-titre
|
|
|
|
|
|
**DELETE /api/subtitles**
|
|
|
|
|
|
### Paramètres
|
|
|
|
|
|
* [*] token
|
|
|
* [*] app
|
|
|
* [*] id (int identifiant de l'élément à supprimer (film, serie, épisode, file)
|
|
|
|
|
|
#### Exemple : DELETE /api/films?token=valeur_du_token&id=1
|
|
|
|
|
|
{
|
|
|
"success": true,
|
|
|
"message": "Film deleted"
|
|
|
}
|
|
|
|
|
|
## Mauvais liens
|
|
|
|
|
|
L'api propose aussi de récupérer les mauvais liens renseignés par l'utilisateur (permission de 3).
|
|
|
|
|
|
#### GET /api/broken/
|
|
|
|
|
|
* [*] app
|
|
|
* [*] token
|
|
|
* type (file, episode)
|
|
|
* id (identifiant du broken)
|
|
|
|
|
|
Si type et id, récupère les liens cassés de l'élément `id` du type `type`. Si que `type`, tous les éléments cassés sont renvoyés, si que `id` que l'élément `id` de la table broken-links et renvoyé. Si rien n'est renseigné, tout est renvoyé
|
|
|
|
|
|
Retour :
|
|
|
|
|
|
[{
|
|
|
id
|
|
|
brokable_id
|
|
|
brokable_type
|
|
|
treated (bool si l'élément a été traité)
|
|
|
created_at (heure de demande)
|
|
|
updated_at
|
|
|
[?] brokable (file ou épisode)
|
|
|
}]
|
|
|
|
|
|
#### POST /api/broken/
|
|
|
|
|
|
* [*] app
|
|
|
* [*] token
|
|
|
* [*] id (identifiant de l'élément cassé)
|
|
|
* [*] type (file, episode)
|
|
|
|
|
|
#### PUT /api/broken
|
|
|
|
|
|
* [*] app
|
|
|
* [*] token
|
|
|
* [*] id (identifiant **de la table broken-links**)
|
|
|
* [*] treated
|
|
|
|
|
|
#### DELETE /api/broken
|
|
|
|
|
|
* [*] app
|
|
|
* [*] token
|
|
|
* [*] id |