Add api endpoint for getting the stream url
This commit is contained in:
parent
66a5f10813
commit
58ad3f729c
|
@ -17,7 +17,20 @@ class AboutResource():
|
||||||
}
|
}
|
||||||
r.update({"endpoints":[
|
r.update({"endpoints":[
|
||||||
{"url":"/",
|
{"url":"/",
|
||||||
"description":"About this API"}
|
"method":"GET",
|
||||||
|
"description":"About this API"},
|
||||||
|
{"url":"/movies",
|
||||||
|
"method":"GET",
|
||||||
|
"description":"All movies on this server"},
|
||||||
|
{"url":"/movies/{movie}",
|
||||||
|
"method":"GET",
|
||||||
|
"description":"Movie details"},
|
||||||
|
{"url":"/movies/{movie}/stream",
|
||||||
|
"method":"GET",
|
||||||
|
"description":"Returns list of stream urls for the movie"},
|
||||||
|
{"url":"/magnet",
|
||||||
|
"method":"POST",
|
||||||
|
"description":"Add a movie via magnet hash"}
|
||||||
]})
|
]})
|
||||||
|
|
||||||
resp.body = json.dumps(r, indent=4)
|
resp.body = json.dumps(r, indent=4)
|
||||||
|
@ -31,3 +44,6 @@ path = Path("/home/arti/Videod")
|
||||||
|
|
||||||
app.add_route("/movies", MoviesCollection(path))
|
app.add_route("/movies", MoviesCollection(path))
|
||||||
app.add_route("/movies/{movie}", MoviesResource(path))
|
app.add_route("/movies/{movie}", MoviesResource(path))
|
||||||
|
app.add_route("/movies/{movie}/stream", MovieStreamUrlResource(path))
|
||||||
|
|
||||||
|
app.add_route("/magnet", MagnetResource())
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import json
|
import json
|
||||||
from falcon import HTTPInternalServerError, HTTP_201
|
from falcon import HTTPInternalServerError, HTTP_201
|
||||||
|
@ -5,11 +6,11 @@ from .tools import TODOException
|
||||||
|
|
||||||
movie_name_and_year = re.compile("(.*)\((.*)\)")
|
movie_name_and_year = re.compile("(.*)\((.*)\)")
|
||||||
|
|
||||||
class BaseResource():
|
class BaseMovieResource():
|
||||||
def __init__(self, path):
|
def __init__(self, path):
|
||||||
self.path = path
|
self.path = path
|
||||||
|
|
||||||
class MoviesCollection(BaseResource):
|
class MoviesCollection(BaseMovieResource):
|
||||||
|
|
||||||
def on_get(self, req, resp):
|
def on_get(self, req, resp):
|
||||||
movie_paths = [p for p in (self.path / 'Filmid').iterdir() if p.is_dir()]
|
movie_paths = [p for p in (self.path / 'Filmid').iterdir() if p.is_dir()]
|
||||||
|
@ -69,7 +70,26 @@ class MoviesCollection(BaseResource):
|
||||||
}
|
}
|
||||||
resp.json = jobj
|
resp.json = jobj
|
||||||
|
|
||||||
class MoviesResource(BaseResource):
|
class MoviesResource(BaseMovieResource):
|
||||||
|
|
||||||
def on_get(self, req, resp, movie):
|
def on_get(self, req, resp, movie):
|
||||||
resp.json = [{"path": self.path, "movie":movie}]
|
resp.json = [{"path": self.path, "movie":movie}]
|
||||||
|
|
||||||
|
class MovieStreamUrlResource(BaseMovieResource):
|
||||||
|
|
||||||
|
def on_get(self, req, resp, movie):
|
||||||
|
movie_name = movie
|
||||||
|
path = self.path / "Filmid"
|
||||||
|
movie_files = os.listdir(str(path / movie_name))
|
||||||
|
sizes = []
|
||||||
|
for movie_file in movie_files:
|
||||||
|
sizes.append((os.path.getsize(str(path / movie_name / movie_file)), movie_file))
|
||||||
|
file_name = sorted(sizes)[-1][1]
|
||||||
|
resp.json = {
|
||||||
|
"default": 'https://media.arti.ee/Filmid/{}/{}'.format(movie_name.replace(" ", "%20"), file_name.replace(" ", "%20"))
|
||||||
|
}
|
||||||
|
|
||||||
|
class MagnetResource():
|
||||||
|
|
||||||
|
def on_post(self, req, resp):
|
||||||
|
resp.json = [req.json]
|
||||||
|
|
Loading…
Reference in New Issue