add playlist-video and channel-video api views

This commit is contained in:
simon 2022-04-17 09:58:18 +07:00
parent 7d45d23767
commit b8ca324aaf
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
3 changed files with 64 additions and 9 deletions

View File

@ -123,12 +123,18 @@ POST /api/channel/
## Channel Item View
/api/channel/\<channel_id>/
## Channel Videos View
/api/channel/\<channel_id>/video/
## Playlist List View
/api/playlist/
## Playlists Item View
/api/playlist/\<playlist_id>/
## Playlist Videos View
/api/playlist/\<playlist_id>/video/
## Download Queue List View
/api/download/

View File

@ -2,12 +2,14 @@
from api.views import (
ChannelApiListView,
ChannelApiVideoView,
ChannelApiView,
DownloadApiListView,
DownloadApiView,
LoginApiView,
PingView,
PlaylistApiListView,
PlaylistApiVideoView,
PlaylistApiView,
VideoApiListView,
VideoApiView,
@ -50,15 +52,25 @@ urlpatterns = [
name="api-channel",
),
path(
"playlist/<slug:playlist_id>/",
PlaylistApiView.as_view(),
name="api-playlist",
"channel/<slug:channel_id>/video/",
ChannelApiVideoView.as_view(),
name="api-channel-video",
),
path(
"playlist/",
PlaylistApiListView.as_view(),
name="api-playlist-list",
),
path(
"playlist/<slug:playlist_id>/",
PlaylistApiView.as_view(),
name="api-playlist",
),
path(
"playlist/<slug:playlist_id>/video/",
PlaylistApiVideoView.as_view(),
name="api-playlist-video",
),
path(
"download/",
DownloadApiListView.as_view(),

View File

@ -222,6 +222,41 @@ class ChannelApiListView(ApiBaseView):
return Response(data)
class ChannelApiVideoView(ApiBaseView):
"""resolves to /api/channel/<channel-id>/video
GET: returns a list of videos of channel
"""
search_base = "ta_video/_search/"
def get(self, request, channel_id):
# pylint: disable=unused-argument
"""handle get request"""
data = {
"query": {"term": {"channel.channel_id": {"value": channel_id}}}
}
self.get_document_list(data)
self.get_paginate()
return Response(self.response)
class PlaylistApiListView(ApiBaseView):
"""resolves to /api/playlist/
GET: returns list of indexed playlists
"""
search_base = "ta_playlist/_search/"
def get(self, request):
# pylint: disable=unused-argument
"""handle get request"""
data = {"query": {"match_all": {}}}
self.get_document_list(data)
self.get_paginate()
return Response(self.response)
class PlaylistApiView(ApiBaseView):
"""resolves to /api/playlist/<playlist_id>/
GET: returns metadata dict of playlist
@ -236,17 +271,19 @@ class PlaylistApiView(ApiBaseView):
return Response(self.response, status=self.status_code)
class PlaylistApiListView(ApiBaseView):
"""resolves to /api/playlist/
GET: returns list of indexed playlists
class PlaylistApiVideoView(ApiBaseView):
"""resolves to /api/playlist/<playlist_id>/video
GET: returns list of videos in playlist
"""
search_base = "ta_playlist/_search/"
search_base = "ta_video/_search/"
def get(self, request):
def get(self, request, playlist_id):
# pylint: disable=unused-argument
"""handle get request"""
data = {"query": {"match_all": {}}}
data = {
"query": {"term": {"playlist.keyword": {"value": playlist_id}}}
}
self.get_document_list(data)
self.get_paginate()
return Response(self.response)