Example #1
0
 def get(self, request, *args, **kwargs):
     cast_url = request.GET['castUrl'] if 'castUrl' in request.GET else ''
     if cast_url != '':
         cast_url = unquote(cast_url, 'utf-8')
         friendly_name = request.GET[
             'device'] if 'device' in request.GET else ''
         file_suffix = cast_url.lower().split('.')[-1]
         is_picture = (file_suffix in ['jpg', 'jpeg', 'png', 'gif'])
         if friendly_name == '' and is_picture:
             device = SSDP.get_one_by_manufacturer('Xiaomi')
         else:
             device = SSDP.get_one_by_friendly_name(friendly_name)
         if device is not None:
             try:
                 meta_data = didl_meta_data(cast_url) if is_picture else ''
                 device.AVTransport.SetAVTransportURI(
                     InstanceID=0,
                     CurrentURI=cast_url,
                     CurrentURIMetaData=meta_data)
                 data = {'code': 0}
             except:
                 log.error(_('DLNA Device offline.'))
                 data = {'code': -3, 'msg': _('DLNA Device offline.')}
         else:
             log.error(_('DLNA Device not found.'))
             data = {'code': -2, 'msg': _('DLNA Device not found.')}
     else:
         log.error(_('Cast Url is blank.'))
         data = {'code': -1, 'msg': _('Cast Url is blank.')}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=result.json'
     return response
Example #2
0
 def render_to_response(self, context, **response_kwargs):
     album_list = self.get_queryset().order_by('id').reverse()
     albums = [{'id': album.id, 'name': album.name} for album in album_list]
     data = {'albums': albums}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=albums.json'
     return response
Example #3
0
 def render_to_response(self, context, **response_kwargs):
     video_list = self.get_queryset().order_by('id').reverse()
     files = [serialize(video) for video in video_list]
     data = {'files': files}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=files.json'
     return response
Example #4
0
 def form_valid(self, form):
     self.object = form.save()
     self.join_album(form)
     self.pic_process()
     files = [serialize(self.object)]
     data = {'files': files}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=files.json'
     return response
Example #5
0
 def delete(self, request, *args, **kwargs):
     self.object = self.get_object()
     assert self.object.type in ['video', 'picture'], 'media.type invalid.'
     if self.object.type == 'picture':
         self.object.picture.delete()
     elif self.object.type == 'video':
         self.object.video.delete()
     response = JSONResponse(True, mimetype=response_mimetype(request))
     response['Content-Disposition'] = 'inline; filename=result.json'
     return response
Example #6
0
 def render_to_response(self, context, **response_kwargs):
     video_list = self.get_queryset()
     total_count, per_page_count, page_count = cal_page_count(video_list)
     data = {
         'total_count': total_count,
         'per_page_count': per_page_count,
         'page_count': page_count
     }
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=paginfo.json'
     return response
Example #7
0
 def delete(self, request, *args, **kwargs):
     self.object = self.get_object()
     viedo_fp = os.path.join(self.object.file.storage.base_location,
                             self.object.file.name)
     m3u8_dir = viedo_fp.split('.')[0]
     if os.path.exists(m3u8_dir):
         shutil.rmtree(m3u8_dir)
     self.object.delete()
     response = JSONResponse(True, mimetype=response_mimetype(request))
     response['Content-Disposition'] = 'inline; filename=result.json'
     return response
Example #8
0
 def form_valid(self, form):
     self.object = form.save()
     self.join_album(form)
     video_fp, video_dir = VideoUploadView.mk_video_dir(self.object)
     self.hls_process(video_fp, video_dir)
     self.poster_process(video_fp, video_dir)
     self.video_info_process()
     files = [serialize(self.object)]
     data = {'files': files}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=files.json'
     return response
Example #9
0
def debug(request):
    switch = request.GET.get('switch')
    client_ip = get_client_ip(request)
    if switch is not None and switch == 'toggle':
        if client_ip in settings.INTERNAL_IPS:
            settings.INTERNAL_IPS.remove(client_ip)
        else:
            settings.INTERNAL_IPS.append(client_ip)
    return JSONResponse(
        {
            'code': 0,
            'isDebug': client_ip in settings.INTERNAL_IPS
        },
        mimetype=response_mimetype(request))
Example #10
0
    def render_to_response(self, context, **response_kwargs):
        page = int(self.request.GET.get('page', 1))
        if page <= 0:
            page = 1

        video_list = self.get_queryset().order_by('id').reverse()
        total_count, per_page_count, page_count = cal_page_count(video_list)
        if page > page_count:
            page = 1
        cur_page_start = (page - 1) * per_page_count
        cur_page_end = np.minimum(page * per_page_count, total_count)

        files = [
            serialize(video)
            for video in video_list[cur_page_start:cur_page_end]
        ]
        data = {'files': files, 'page': page}
        response = JSONResponse(data, mimetype=response_mimetype(self.request))
        response['Content-Disposition'] = 'inline; filename=pagidata.json'
        return response
Example #11
0
 def delete(self, request, *args, **kwargs):
     album = self.get_object()
     media_list = Media.objects.filter(album_id=album.id)
     picture_ids = []
     video_ids = []
     for media in media_list:
         assert media.type in ['video', 'picture'], 'media.type invalid.'
         if media.type == 'picture':
             # media.picture.delete()
             picture_ids.append(media.picture_id)
         elif media.type == 'video':
             # media.video.delete()
             video_ids.append(media.video_id)
     # first delete medias
     media_list.delete()
     # then delete pictures and videos
     Picture.objects.filter(id__in=picture_ids).delete()
     Video.objects.filter(id__in=video_ids).delete()
     # last delete album
     album.delete()
     response = JSONResponse(True, mimetype=response_mimetype(request))
     response['Content-Disposition'] = 'inline; filename=result.json'
     return response
Example #12
0
    def render_to_response(self, context, **response_kwargs):
        page = int(self.request.GET.get('page', 1))
        if page <= 0:
            page = 1
        album = self.get_object()
        media_list = Media.objects.filter(
            album_id=album.id).order_by('id').reverse()

        total_count, per_page_count, page_count = cal_page_count(
            media_list, per_page_count=8)
        if page > page_count:
            medias = []
        else:
            cur_page_start = (page - 1) * per_page_count
            cur_page_end = np.minimum(page * per_page_count, total_count)
            medias = [
                serialize(media)
                for media in media_list[cur_page_start:cur_page_end]
            ]
        data = {'medias': medias, 'pageCount': page_count}
        response = JSONResponse(data, mimetype=response_mimetype(self.request))
        response[
            'Content-Disposition'] = 'inline; filename=media-more-data.json'
        return response
Example #13
0
 def get(self, request, *args, **kwargs):
     data = {'devices': SSDP.get_devices()}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=devices.json'
     return response
Example #14
0
 def form_valid(self, form):
     self.object = form.save()
     data = {'code': 0}
     response = JSONResponse(data, mimetype=response_mimetype(self.request))
     response['Content-Disposition'] = 'inline; filename=reslut.json'
     return response
Example #15
0
 def delete(self, request, *args, **kwargs):
     self.object = self.get_object()
     self.object.delete()
     response = JSONResponse(True, mimetype=response_mimetype(request))
     response['Content-Disposition'] = 'inline; filename=result.json'
     return response