[DEV] update the whole application

This commit is contained in:
Edouard DUPIN 2019-12-19 00:18:52 +01:00
parent b9d44e648e
commit 7c41e3c391
8 changed files with 345 additions and 66 deletions

View File

@ -82,6 +82,8 @@ def add(_app, _name_api):
answer_data = { answer_data = {
"size": total_size, "size": total_size,
"sha512": str(sha1.hexdigest()), "sha512": str(sha1.hexdigest()),
'filename': _request.headers["filename"],
'mime-type': _request.headers["mime-type"],
"already_exist": True, "already_exist": True,
} }
@ -98,6 +100,8 @@ def add(_app, _name_api):
answer_data = { answer_data = {
"size": total_size, "size": total_size,
"sha512": str(sha1.hexdigest()), "sha512": str(sha1.hexdigest()),
'filename': _request.headers["filename"],
'mime-type': _request.headers["mime-type"],
"already_exist": True, "already_exist": True,
} }
await _response.write(json.dumps(answer_data, sort_keys=True, indent=4)) await _response.write(json.dumps(answer_data, sort_keys=True, indent=4))

View File

@ -78,6 +78,16 @@ def add(_app, _name_api):
return response.json(value) return response.json(value)
raise ServerError("No data found", status_code=404) raise ServerError("No data found", status_code=404)
@elem_blueprint.get('/' + _name_api + '/<id:int>/video', strict_slashes=True)
@doc.summary("Show videos")
@doc.description("List all the videos availlable for this group.")
@doc.produces(content_type='application/json')
async def retrive(request, id):
value = data_global_elements.get_interface(data_global_elements.API_VIDEO).gets_where(select=[["==", "group_id", id]], filter=["id"])
if value != None:
return response.json(value)
raise ServerError("No data found", status_code=404)
@elem_blueprint.put('/' + _name_api + '/<id:int>', strict_slashes=True) @elem_blueprint.put('/' + _name_api + '/<id:int>', strict_slashes=True)
@doc.summary("Update resource") @doc.summary("Update resource")
@doc.description("Update the specified resource in storage.") @doc.description("Update the specified resource in storage.")

View File

@ -86,4 +86,37 @@ def add(_app, _name_api):
return response.json({}) return response.json({})
raise ServerError("No data found", status_code=404) raise ServerError("No data found", status_code=404)
@elem_blueprint.get('/' + _name_api + '/<id:int>/count', strict_slashes=True)
@doc.summary("Count resources in this cathegory")
@doc.description("count resources in this cathegory, in the whole tree.")
@doc.produces(content_type='application/json')
async def count_values(request, id):
count_value = data_global_elements.get_interface(data_global_elements.API_VIDEO).count(select=[["==", "type_id", id]])
return response.json({"count":count_value})
@elem_blueprint.get('/' + _name_api + '/<id:int>/video', strict_slashes=True)
@doc.summary("List the whole video ids")
@doc.description("List all video availlable with this type (list of ids).")
@doc.produces(content_type='application/json')
async def count_values(request, id):
list_values = data_global_elements.get_interface(data_global_elements.API_VIDEO).gets_where(select=[["==", "type_id", id]], filter=["id"])
return response.json(list_values)
@elem_blueprint.get('/' + _name_api + '/<id:int>/video_no_group', strict_slashes=True)
@doc.summary("List the whole video ids")
@doc.description("List all video availlable with this type (list of ids).")
@doc.produces(content_type='application/json')
async def count_values(request, id):
list_values = data_global_elements.get_interface(data_global_elements.API_VIDEO).gets_where(select=[["==", "type_id", id], ["==", "group_id", None]], filter=["id"])
return response.json(list_values)
@elem_blueprint.get('/' + _name_api + '/<id:int>/group', strict_slashes=True)
@doc.summary("List the whole video ids")
@doc.description("List all video availlable with this type (list of ids).")
@doc.produces(content_type='application/json')
async def count_values(request, id):
list_values = data_global_elements.get_interface(data_global_elements.API_VIDEO).gets_where(select=[["==", "type_id", id], ["!=", "group_id", None]], filter=["group_id"])
return response.json(list_values)
_app.blueprint(elem_blueprint) _app.blueprint(elem_blueprint)

View File

@ -12,6 +12,7 @@ import time
import json import json
import os import os
import sys import sys
import copy
import datetime import datetime
import time, threading import time, threading
import realog.debug as debug import realog.debug as debug
@ -29,6 +30,37 @@ import tools
import data_interface import data_interface
import data_global_elements import data_global_elements
def generate_name(_value):
group_name = ""
if "group_id" in _value.keys():
group_property = data_global_elements.get_interface(data_global_elements.API_GROUP).get(_value["group_id"])
if group_property != None:
group_name = group_property["name"]
saison_number = ""
if "saison_id" in _value.keys():
saison_property = data_global_elements.get_interface(data_global_elements.API_SAISON).get(_value["saison_id"])
if saison_property != None:
saison_number = str(saison_property["number"])
if len(saison_number) == 1:
saison_number = "0" + saison_number
out = ""
if group_name != "":
out += group_name + "-"
if saison_number != "":
out += "s" + saison_number + "-"
if "episode" in _value.keys() and _value["episode"] != None:
if _value["episode"] < 10:
out += "e00" + str(_value["episode"]) + "-"
elif _value["episode"] < 100:
out += "e0" + str(_value["episode"]) + "-"
else:
out += "e" + str(_value["episode"]) + "-"
out += _value["name"]
if "time" in _value.keys() and _value["time"] != None:
out += "(" + _value["name"] + ")"
return out
def add(_app, _name_api): def add(_app, _name_api):
elem_blueprint = Blueprint(_name_api) elem_blueprint = Blueprint(_name_api)
@ -36,13 +68,13 @@ def add(_app, _name_api):
id = int id = int
sha512 = str sha512 = str
type_id = int type_id = int
saison_id = int saison_id = [int, type(None)]
episode = [int, type(None)] episode = [int, type(None)]
group_id = int group_id = [int, type(None)]
name = str name = str
description = str description = [str, type(None)]
# creating time # creating time
date = str create_date = str
# number of second # number of second
time = [int, type(None)] time = [int, type(None)]
@ -56,7 +88,7 @@ def add(_app, _name_api):
name = str name = str
description = str description = str
# creating time # creating time
date = str create_date = str
# number of second # number of second
time = int time = int
@ -73,14 +105,21 @@ def add(_app, _name_api):
@doc.consumes(DataModel, location='body')#, required=True) @doc.consumes(DataModel, location='body')#, required=True)
@doc.response_success(status=201, description='If successful created') @doc.response_success(status=201, description='If successful created')
async def create(request): async def create(request):
""" for type_key in ["sha512","type_id","name"]:
if "group_name" in request.json.keys(): if type_key not in request.json.keys():
id_group = data_global_elements.get_interface(API_GROUP).find_or_create_name(request.json["group_name"]) raise ServerError("Bad Request: Missing Key '" + type_key + "'", status_code=400)
""" for type_key in ["date"]:
if "episode" not in request.json.keys(): if type_key in request.json.keys():
request.json["episode"] = None raise ServerError("Forbidden: Must not be set Key '" + type_key + "'", status_code=403)
else: for type_key in ["saison_id","episode","time","group_id","description"]:
request.json["episode"] = int(request.json["episode"]) if type_key not in request.json.keys():
request.json[type_key] = None
request.json["create_date"] = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
#Find if already exist
list_elem = data_global_elements.get_interface(_name_api).find(["group_id", "sha512"], request.json);
for elem in list_elem:
return response.json(elem)
return response.json(data_global_elements.get_interface(_name_api).post(request.json)) return response.json(data_global_elements.get_interface(_name_api).post(request.json))
@elem_blueprint.get('/' + _name_api + '/<id:int>', strict_slashes=True) @elem_blueprint.get('/' + _name_api + '/<id:int>', strict_slashes=True)
@ -90,7 +129,10 @@ def add(_app, _name_api):
async def retrive(request, id): async def retrive(request, id):
value = data_global_elements.get_interface(_name_api).get(id) value = data_global_elements.get_interface(_name_api).get(id)
if value != None: if value != None:
return response.json(value) generated_name = generate_name(value)
tmp = copy.deepcopy(value)
tmp["generated_name"] = generated_name
return response.json(tmp)
raise ServerError("No data found", status_code=404) raise ServerError("No data found", status_code=404)
@elem_blueprint.put('/' + _name_api + '/<id:int>', strict_slashes=True) @elem_blueprint.put('/' + _name_api + '/<id:int>', strict_slashes=True)

View File

@ -65,33 +65,28 @@ app.blueprint(swagger_blueprint)
def add_interface(_name): def add_interface(_name):
data_global_elements.add_interface(_name, data_interface.DataInterface(_name, os.path.join(tools.get_run_path(), app.config['REST_DATA'], "bdd_" + _name + ".json"))) data_global_elements.add_interface(_name, data_interface.DataInterface(_name, os.path.join(tools.get_run_path(), app.config['REST_DATA'], "bdd_" + _name + ".json")))
API_TYPE = "type" add_interface(data_global_elements.API_TYPE)
add_interface(API_TYPE) add_interface(data_global_elements.API_GROUP)
API_GROUP = "group" add_interface(data_global_elements.API_SAISON)
add_interface(API_GROUP) add_interface(data_global_elements.API_VIDEO)
API_SAISON = "saison"
add_interface(API_SAISON)
API_VIDEO = "video"
add_interface(API_VIDEO)
API_DATA = "data"
import api.root as api_root import api.root as api_root
api_root.add(app) api_root.add(app)
import api.type as api_type import api.type as api_type
api_type.add(app, API_TYPE) api_type.add(app, data_global_elements.API_TYPE)
import api.group as api_group import api.group as api_group
api_group.add(app, API_GROUP) api_group.add(app, data_global_elements.API_GROUP)
import api.saison as api_saison import api.saison as api_saison
api_saison.add(app, API_SAISON) api_saison.add(app, data_global_elements.API_SAISON)
import api.video as api_video import api.video as api_video
api_video.add(app, API_VIDEO) api_video.add(app, data_global_elements.API_VIDEO)
import api.data as api_data import api.data as api_data
api_data.add(app, API_DATA) api_data.add(app, data_global_elements.API_DATA)

View File

@ -32,3 +32,10 @@ def check_save():
check_save() check_save()
API_TYPE = "type"
API_GROUP = "group"
API_SAISON = "saison"
API_VIDEO = "video"
API_DATA = "data"

View File

@ -13,7 +13,9 @@ import json
from realog import debug from realog import debug
from sanic.exceptions import ServerError from sanic.exceptions import ServerError
##
## @breif Generic interface to access to the BDD (no BDD, direct file IO)
##
class DataInterface(): class DataInterface():
def __init__(self, _name, _file): def __init__(self, _name, _file):
self.model = None self.model = None
@ -23,7 +25,7 @@ class DataInterface():
self.need_save = False self.need_save = False
self.last_id = 0 self.last_id = 0
if tools.exist(self.file) == False: if tools.exist(self.file) == False:
self.need_save = True self.mark_to_store()
else: else:
data = tools.file_read_data(self.file) data = tools.file_read_data(self.file)
self.bdd = json.loads(data) self.bdd = json.loads(data)
@ -81,15 +83,25 @@ class DataInterface():
if elem["id"] >= self.last_id: if elem["id"] >= self.last_id:
self.last_id = elem["id"] + 1 self.last_id = elem["id"] + 1
def get_table_index(id): def get_table_index(self, _id):
id_in_bdd = 0 id_in_bdd = 0
for elem in self.bdd: for elem in self.bdd:
if 'id' in elem.keys() \ if 'id' in elem.keys() \
and elem["id"] == id: and elem["id"] == _id:
return id_in_bdd return id_in_bdd
id_in_bdd += 1 id_in_bdd += 1
return None return None
##
## @brief Mark the current BDD to store all in File system (sync)
##
def mark_to_store(self):
self.need_save = True
##
## @brief Check if the Bdd need to be stored. It is stored if it has been requested.
## The BDD is store in a separate file and move in the old one. Safe way to store
##
def check_save(self): def check_save(self):
if self.need_save == False: if self.need_save == False:
return return
@ -98,45 +110,136 @@ class DataInterface():
self.need_save = False self.need_save = False
tools.file_write_data_safe(self.file, data) tools.file_write_data_safe(self.file, data)
def gets(self): def gets(self, filter=None):
debug.info("gets " + self.name) debug.info("gets " + self.name)
return self.bdd if filter == None:
return self.bdd
return self.filter_object_values(self.bdd, filter)
def get(self, id): def gets_where(self, select, filter=None):
debug.info("get " + self.name + ": " + str(id)) debug.info("gets " + self.name)
tmp_list = self.get_sub_list(self.bdd, select)
return self.filter_object_values(tmp_list, filter);
def get(self, _id):
debug.info("get " + self.name + ": " + str(_id))
for elem in self.bdd: for elem in self.bdd:
if 'id' in elem.keys() \ if 'id' in elem.keys() \
and elem["id"] == id: and elem["id"] == _id:
return elem return elem
return None return None
def delete(self, id): def delete(self, _id):
debug.info("delete " + self.name + ": " + str(id)) debug.info("delete " + self.name + ": " + str(_id))
id_in_bdd = self.get_table_index(id) id_in_bdd = self.get_table_index(_id)
if id_in_bdd == None: if id_in_bdd == None:
return False return False
del self.bdd[id_in_bdd] del self.bdd[id_in_bdd]
self.need_save = True self.mark_to_store()
return True return True
def put(self, id, value): def put(self, _id, _value):
debug.info("put " + self.name + ": " + str(id)) debug.info("put " + self.name + ": " + str(_id))
id_in_bdd = self.get_table_index(id) id_in_bdd = self.get_table_index(_id)
if id_in_bdd == None: if id_in_bdd == None:
return False return False
value["id"] = id _value["id"] = _id
self.bdd[id_in_bdd] = value self.bdd[id_in_bdd] = _value
self.need_save = True self.mark_to_store()
return True return True
def post(self, value): def post(self, _value):
debug.info("post " + self.name) debug.info("post " + self.name)
value["id"] = self.last_id _value["id"] = self.last_id
self.last_id += 1 self.last_id += 1
if self.check_with_model(value) == False: if self.check_with_model(_value) == False:
raise ServerError("Corelation with BDD error", status_code=404) raise ServerError("Corelation with BDD error", status_code=404)
self.bdd.append(value) self.bdd.append(_value)
self.need_save = True self.mark_to_store()
return value return _value
# TODO : rework this
def find(self, _list_token, _values):
out = []
for elem in self.bdd:
find = True
for token in _list_token:
if elem[token] != _values[token]:
find = False
break
if find == True:
out.append(elem)
return out
def count(self, select = None):
if select == None:
return len(self.bdd)
tmp = self.get_sub_list(self.bdd, select)
return len(tmp)
def get_sub_list(self, _values, _select):
out = []
for elem in _values:
find = True
if len(_select) == 0:
find = False
for elem_select in _select:
if len(elem_select) != 3:
raise ServerError("Internal Server Error: wrong select definition", 500)
type_check = elem_select[0]
token = elem_select[1]
value = elem_select[2]
if token in elem.keys():
if type_check == "==":
if not (elem[token] == value):
find = False
break
elif type_check == "!=":
if not (elem[token] != value):
find = False
break
elif type_check == "<":
if not (elem[token] < value):
find = False
break
elif type_check == "<=":
if not (elem[token] <= value):
find = False
break
elif type_check == ">":
if not (elem[token] >= value):
find = False
break
elif type_check == ">=":
if not (elem[token] >= value):
find = False
break
else:
raise ServerError("Internal Server Error: unknow comparing type ...", 500)
else:
find = False
break
if find == True:
out.append(elem)
return out
def filter_object_values(self, _values, _filter):
out = []
if len(_filter) == 1:
token = _filter[0]
for elem in _values:
if token not in elem.keys():
continue
if elem[token] not in out:
out.append(elem[token])
return out
for elem in _values:
element_out = {}
for token in _filter:
if token not in elem.keys():
continue
element_out[token] = elem[token]
out.append(element_out)
return out

View File

@ -16,6 +16,8 @@ import realog.debug as debug
import magic import magic
import json import json
debug.enable_color();
class upload_in_chunks(object): class upload_in_chunks(object):
def __init__(self, filename, chunksize=1 + 13): def __init__(self, filename, chunksize=1 + 13):
self.filename = filename self.filename = filename
@ -40,7 +42,7 @@ class upload_in_chunks(object):
#filename = 'Totally_Spies.mp4' #filename = 'Totally_Spies.mp4'
#result = requests.post("http://127.0.0.1:15080/data", data=upload_in_chunks(filename, chunksize=4096)) #result = requests.post("http://127.0.0.1:15080/data", data=upload_in_chunks(filename, chunksize=4096))
#print("result : " + str(result) + " " + result.text)#str(dir(result))) #debug.info("result : " + str(result) + " " + result.text)#str(dir(result)))
def extract_and_remove(_input_value, _start_mark, _stop_mark): def extract_and_remove(_input_value, _start_mark, _stop_mark):
@ -221,7 +223,7 @@ def push_video_file(_path, _basic_key={}):
mime_type = mime.from_file(_path) mime_type = mime.from_file(_path)
headers_values = {'filename': _path, 'mime-type': mime_type} headers_values = {'filename': _path, 'mime-type': mime_type}
result_send_data = requests.post("http://127.0.0.1:15080/data", headers=headers_values, data=upload_in_chunks(_path, chunksize=4096)) result_send_data = requests.post("http://127.0.0.1:15080/data", headers=headers_values, data=upload_in_chunks(_path, chunksize=4096))
print("result *********** : " + str(result_send_data) + " " + result_send_data.text) debug.info("result *********** : " + str(result_send_data) + " " + result_send_data.text)
file_name = os.path.basename(file_name) file_name = os.path.basename(file_name)
debug.info("Find file_name : '" + file_name + "'"); debug.info("Find file_name : '" + file_name + "'");
# Remove Date (XXXX) or other titreadsofarle # Remove Date (XXXX) or other titreadsofarle
@ -324,7 +326,7 @@ def push_video_file(_path, _basic_key={}):
pass pass
else: else:
episode = int(list_element[2][1:]); episode = int(list_element[2][1:]);
_basic_key["episode"] = episode _basic_key["episode"] = int(episode)
debug.info("Find a internal mode series: :"); debug.info("Find a internal mode series: :");
debug.info(" origin : '" + file_name + "'"); debug.info(" origin : '" + file_name + "'");
@ -345,10 +347,10 @@ def push_video_file(_path, _basic_key={}):
pass pass
elif episode < 10: elif episode < 10:
episodePrint = "0" + str(episode); episodePrint = "0" + str(episode);
_basic_key["episode"] = str(episode) _basic_key["episode"] = episode
else: else:
episodePrint = str(episode); episodePrint = str(episode);
_basic_key["episode"] = str(episode) _basic_key["episode"] = episode
debug.info(" ==> '" + series_name + "-s" + saisonPrint + "-e" + episodePrint + "-" + full_episode_name + "'"); debug.info(" ==> '" + series_name + "-s" + saisonPrint + "-e" + episodePrint + "-" + full_episode_name + "'");
@ -363,28 +365,28 @@ def push_video_file(_path, _basic_key={}):
# number of second # number of second
"time": None, "time": None,
} }
for elem in ["actors", "date", "description", "episode", "title2"]: for elem in ["date", "description", "episode"]: #["actors", "date", "description", "episode", "title2"]:
if elem in _basic_key.keys(): if elem in _basic_key.keys():
data_model[elem] = _basic_key[elem] data_model[elem] = _basic_key[elem]
if "series-name" in _basic_key.keys(): if "series-name" in _basic_key.keys():
result_group_data = requests.post("http://127.0.0.1:15080/group/find", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4)) result_group_data = requests.post("http://127.0.0.1:15080/group/find", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4))
print("Create group ??? *********** : " + str(result_group_data) + " " + result_group_data.text) debug.info("Create group ??? *********** : " + str(result_group_data) + " " + result_group_data.text)
if result_group_data.status_code == 404: if result_group_data.status_code == 404:
result_group_data = requests.post("http://127.0.0.1:15080/group", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4)) result_group_data = requests.post("http://127.0.0.1:15080/group", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4))
print("yes we create new group *********** : " + str(result_group_data) + " " + result_group_data.text) debug.info("yes we create new group *********** : " + str(result_group_data) + " " + result_group_data.text)
group_id = result_group_data.json()["id"] group_id = result_group_data.json()["id"]
data_model["group_id"] = group_id data_model["group_id"] = group_id
if "saison" in _basic_key.keys(): if "saison" in _basic_key.keys():
result_saison_data = requests.post("http://127.0.0.1:15080/saison/find", data=json.dumps({"number":int(_basic_key["saison"]), "group_id":group_id}, sort_keys=True, indent=4)) result_saison_data = requests.post("http://127.0.0.1:15080/saison/find", data=json.dumps({"number":int(_basic_key["saison"]), "group_id":group_id}, sort_keys=True, indent=4))
print("Create saison ??? *********** : " + str(result_saison_data) + " " + result_saison_data.text) debug.info("Create saison ??? *********** : " + str(result_saison_data) + " " + result_saison_data.text)
if result_saison_data.status_code == 404: if result_saison_data.status_code == 404:
result_saison_data = requests.post("http://127.0.0.1:15080/saison", data=json.dumps({"number":int(_basic_key["saison"]), "group_id":group_id}, sort_keys=True, indent=4)) result_saison_data = requests.post("http://127.0.0.1:15080/saison", data=json.dumps({"number":int(_basic_key["saison"]), "group_id":group_id}, sort_keys=True, indent=4))
print("yes we create new saison *********** : " + str(result_saison_data) + " " + result_saison_data.text) debug.info("yes we create new saison *********** : " + str(result_saison_data) + " " + result_saison_data.text)
saison_id = result_saison_data.json()["id"] saison_id = result_saison_data.json()["id"]
data_model["saison_id"] = saison_id data_model["saison_id"] = saison_id
result_send_data = requests.post("http://127.0.0.1:15080/video", data=json.dumps(data_model, sort_keys=True, indent=4)) result_send_data = requests.post("http://127.0.0.1:15080/video", data=json.dumps(data_model, sort_keys=True, indent=4))
print("result *********** : " + str(result_send_data) + " " + result_send_data.text) debug.info("result *********** : " + str(result_send_data) + " " + result_send_data.text)
return True return True
@ -517,6 +519,7 @@ my_args.add("v", "verbose", list=[
["6","extreme_verbose"], ["6","extreme_verbose"],
], desc="display debug level (verbose) default =2") ], desc="display debug level (verbose) default =2")
my_args.add("a", "action", list=[ my_args.add("a", "action", list=[
["tree","List all the files in a tree view ..."],
["list","List all the files"], ["list","List all the files"],
["push","push a single file"], ["push","push a single file"],
["push_path","push a full folder"], ["push_path","push a full folder"],
@ -540,9 +543,9 @@ def usage():
def version(): def version():
color = debug.get_color_set() color = debug.get_color_set()
import pkg_resources import pkg_resources
print("version: 0.0.0") debug.info("version: 0.0.0")
foldername = os.path.dirname(__file__) foldername = os.path.dirname(__file__)
print("source folder is: " + foldername) debug.info("source folder is: " + foldername)
exit(0) exit(0)
folder = "dataPush" folder = "dataPush"
@ -613,6 +616,88 @@ elif requestAction == "list":
debug.info("============================================"); debug.info("============================================");
debug.info("== list files: "); debug.info("== list files: ");
debug.info("============================================"); debug.info("============================================");
list_types = requests.get("http://127.0.0.1:15080/type")
if list_types.status_code != 200:
debug.warning(" !! ca, ot get type list ... " + str(list_types.status_code) + "")
for elem in list_types.json():
debug.info(" get type id: " + str(elem["id"]))
debug.info(" name: " + str(elem["name"]))
# get the count of video in this type
result_count = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/count")
if result_count.status_code == 200:
debug.info(" count: " + str(result_count.json()["count"]))
else:
debug.warning(" count: !!!!!! " + str(result_count.status_code) + "")
# get all the video list
result_video = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/video")
if result_video.status_code == 200:
if len(result_video.json()) != 0:
debug.info(" List video: " + str(result_video.json()))
else:
debug.warning(" List video: !!!!!! " + str(result_video.status_code) + "")
# get list of groups for this type
result_groups = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/group")
if result_groups.status_code == 200:
if len(result_groups.json()) != 0:
debug.info(" List group: " + str(result_groups.json()))
else:
debug.warning(" List group: !!!!!! " + str(result_groups.status_code) + "")
# get list of video without groups
result_video_solo = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/video_no_group")
if result_video_solo.status_code == 200:
if len(result_video_solo.json()) != 0:
debug.info(" List video solo: " + str(result_video_solo.json()))
else:
debug.warning(" List video solo: !!!!!! " + str(result_video_solo.status_code) + "")
elif requestAction == "tree":
debug.info("============================================");
debug.info("== tree files: ");
debug.info("============================================");
list_types = requests.get("http://127.0.0.1:15080/type")
if list_types.status_code != 200:
debug.warning(" !! ca, ot get type list ... " + str(list_types.status_code) + "")
for elem in list_types.json():
debug.info("-------------------------------------------------")
debug.info(" " + str(elem["name"]))
debug.info("-------------------------------------------------")
# First get all the groups:
result_groups = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/group")
if result_groups.status_code == 200:
for elem_group_id in result_groups.json():
result_group = requests.get("http://127.0.0.1:15080/group/" + str(elem_group_id) + "")
if result_group.status_code == 200:
group = result_group.json()
debug.info(" o- " + str(group["name"]))
# step 1: all the video:
result_videos_in_group = requests.get("http://127.0.0.1:15080/group/" + str(elem_group_id) + "/video")
if result_videos_in_group.status_code == 200:
for elem_video_id in result_videos_in_group.json():
result_video = requests.get("http://127.0.0.1:15080/video/" + str(elem_video_id) + "")
if result_video.status_code == 200:
video = result_video.json()
debug.info(" - " + str(video["generated_name"]))
else:
debug.warning(" get video id: " + str(elem_video_id) + " !!!!!! " + str(result_video.status_code) + "")
else:
debug.warning(" get video in group id: " + str(elem_group_id) + " !!!!!! " + str(result_videos_in_group.status_code) + "")
else:
debug.warning(" get group id: " + str(elem_group_id) + " !!!!!! " + str(result_group.status_code) + "")
else:
debug.warning(" List group: !!!!!! " + str(result_groups.status_code) + "")
# get list of video without groups
result_video_solo = requests.get("http://127.0.0.1:15080/type/" + str(elem["id"]) + "/video_no_group")
if result_video_solo.status_code == 200:
for elem_video_id in result_video_solo.json():
result_video = requests.get("http://127.0.0.1:15080/video/" + str(elem_video_id) + "")
if result_video.status_code == 200:
video = result_video.json()
debug.info(" - " + str(video["generated_name"]))
else:
debug.warning(" get video id: " + str(elem_video_id) + " !!!!!! " + str(result_video.status_code) + "")
else:
debug.warning(" List video solo: !!!!!! " + str(result_video_solo.status_code) + "")
""" """
uint32_t count = remoteServiceVideo.count().wait().get(); uint32_t count = remoteServiceVideo.count().wait().get();
debug.debug("have " + count + " medias"); debug.debug("have " + count + " medias");