[DEV] auto_create bdd when startup and update the sended automatic
@ -36,6 +36,7 @@ import data_global_elements
|
||||
|
||||
import hashlib
|
||||
import shutil
|
||||
import random
|
||||
|
||||
tmp_value = 0
|
||||
|
||||
@ -58,6 +59,7 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -65,6 +67,7 @@ def add(_app, _name_api):
|
||||
"name": "size",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -72,6 +75,7 @@ def add(_app, _name_api):
|
||||
"name": "sha512",
|
||||
"type": "str",
|
||||
"modifiable": False,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -79,6 +83,7 @@ def add(_app, _name_api):
|
||||
"name": "mime_type",
|
||||
"type": "str",
|
||||
"modifiable": False,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -86,6 +91,7 @@ def add(_app, _name_api):
|
||||
"name": "original_name",
|
||||
"type": "str",
|
||||
"modifiable": False,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": False,
|
||||
},
|
||||
@ -98,9 +104,9 @@ def add(_app, _name_api):
|
||||
@doc.description("simply check if the resource is already uploaded.")
|
||||
@doc.produces(content_type='application/json')
|
||||
async def check_existance(request, sha512):
|
||||
value = data_global_elements.get_interface(_name_api).gets_where(select=[["==", "sha512", sha512]], filter=["id"])
|
||||
value = data_global_elements.get_interface(_name_api).find("sha512", sha512)
|
||||
if value != None:
|
||||
return response.json({"found":True, "ids":value})
|
||||
return response.json(value)
|
||||
raise ServerError("No data found", status_code=404)
|
||||
|
||||
|
||||
@ -114,8 +120,10 @@ def add(_app, _name_api):
|
||||
args_with_blank_values = _request.headers
|
||||
debug.info("List arguments: " + str(args_with_blank_values));
|
||||
async def streaming(_response):
|
||||
global tmp_value
|
||||
#debug.info("streaming " + str(_response));
|
||||
total_size = 0
|
||||
tmp_value += random.randint(1,50)
|
||||
temporary_file = os.path.join(_app.config['REST_TMP_DATA'], str(tmp_value) + ".tmp")
|
||||
if not os.path.exists(_app.config['REST_TMP_DATA']):
|
||||
os.makedirs(_app.config['REST_TMP_DATA'])
|
||||
@ -140,8 +148,7 @@ def add(_app, _name_api):
|
||||
"size": total_size,
|
||||
"sha512": str(sha1.hexdigest()),
|
||||
'original_name': _request.headers["filename"],
|
||||
'mime_type': _request.headers["mime-type"],
|
||||
'create_date': datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'
|
||||
'mime_type': _request.headers["mime-type"]
|
||||
}
|
||||
# TODO: Check if the element already exist ...
|
||||
|
||||
|
@ -39,24 +39,28 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
},
|
||||
{
|
||||
"name": "type",
|
||||
"type": "string",
|
||||
"modifiable": False,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
}
|
||||
]
|
||||
@ -96,10 +100,9 @@ def add(_app, _name_api):
|
||||
@doc.consumes(DataModel, location='body')#, required=True)
|
||||
@doc.response_success(status=201, description='If successful created')
|
||||
async def find_with_name(request):
|
||||
api = data_global_elements.get_interface(_name_api)
|
||||
for elem in api.bdd:
|
||||
if elem["name"] == request.json["name"]:
|
||||
return response.json({"id": elem["id"]})
|
||||
value = data_global_elements.get_interface(_name_api).find("name", request.json["name"])
|
||||
if value != None:
|
||||
return response.json(value)
|
||||
raise ServerError("No data found", status_code=404)
|
||||
|
||||
@elem_blueprint.get('/' + _name_api + '/<id:int>', strict_slashes=True)
|
||||
|
@ -38,6 +38,7 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -45,6 +46,7 @@ def add(_app, _name_api):
|
||||
"name": "number",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -52,13 +54,15 @@ def add(_app, _name_api):
|
||||
"name": "description",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
{
|
||||
"name": "group_id",
|
||||
"name": "parent_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -69,7 +73,7 @@ def add(_app, _name_api):
|
||||
class DataModel:
|
||||
number = int
|
||||
description = str
|
||||
group_id = int
|
||||
parent_id = int
|
||||
|
||||
@elem_blueprint.get('/' + _name_api, strict_slashes=True)
|
||||
@doc.summary("Show saisons")
|
||||
@ -94,11 +98,9 @@ def add(_app, _name_api):
|
||||
@doc.consumes(DataModel, location='body')
|
||||
@doc.response_success(status=201, description='If successful created')
|
||||
async def find_with_name(request):
|
||||
api = data_global_elements.get_interface(_name_api)
|
||||
for elem in api.bdd:
|
||||
if elem["group_id"] == request.json["group_id"] \
|
||||
and elem["number"] == request.json["number"]:
|
||||
return response.json({"id": elem["id"]})
|
||||
value = data_global_elements.get_interface(_name_api).find2("parent_id", request.json["parent_id"], "name", request.json["name"])
|
||||
if value != None:
|
||||
return response.json(value)
|
||||
raise ServerError("No data found", status_code=404)
|
||||
|
||||
@elem_blueprint.get('/' + _name_api + '/<id:int>', strict_slashes=True)
|
||||
|
@ -39,6 +39,7 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -46,6 +47,7 @@ def add(_app, _name_api):
|
||||
"name": "name",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -53,6 +55,7 @@ def add(_app, _name_api):
|
||||
"name": "description",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
|
@ -37,6 +37,7 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -44,6 +45,7 @@ def add(_app, _name_api):
|
||||
"name": "name",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -51,6 +53,7 @@ def add(_app, _name_api):
|
||||
"name": "description",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
|
@ -78,6 +78,7 @@ def add(_app, _name_api):
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"modifiable": False,
|
||||
"creatable": False,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -85,6 +86,7 @@ def add(_app, _name_api):
|
||||
"name": "data_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": False,
|
||||
"visible": True,
|
||||
},
|
||||
@ -92,6 +94,7 @@ def add(_app, _name_api):
|
||||
"name": "type_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -99,6 +102,7 @@ def add(_app, _name_api):
|
||||
"name": "saison_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -106,6 +110,7 @@ def add(_app, _name_api):
|
||||
"name": "episode",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -113,6 +118,7 @@ def add(_app, _name_api):
|
||||
"name": "univers_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -120,6 +126,7 @@ def add(_app, _name_api):
|
||||
"name": "group_id",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -127,6 +134,7 @@ def add(_app, _name_api):
|
||||
"name": "name",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -134,6 +142,7 @@ def add(_app, _name_api):
|
||||
"name": "description",
|
||||
"type": "str",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -141,6 +150,7 @@ def add(_app, _name_api):
|
||||
"name": "date",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
@ -148,6 +158,7 @@ def add(_app, _name_api):
|
||||
"name": "time",
|
||||
"type": "int",
|
||||
"modifiable": True,
|
||||
"creatable": True,
|
||||
"can_be_null": True,
|
||||
"visible": True,
|
||||
},
|
||||
|
@ -40,6 +40,10 @@ import data_interface
|
||||
import data_global_elements
|
||||
|
||||
|
||||
import create_bdd
|
||||
|
||||
create_bdd.create_if_needed();
|
||||
|
||||
from sanic_cors.extension import cors
|
||||
app = Sanic(__name__)
|
||||
spf = SanicPluginsFramework(app)
|
||||
@ -70,7 +74,7 @@ def add_interface(_name, _base_name, _name_view):
|
||||
interface = data_interface.DataInterface(_name, _base_name, _name_view)
|
||||
data_global_elements.add_interface(_name, interface)
|
||||
|
||||
add_interface(data_global_elements.API_DATA, data_global_elements.API_DATA, "data")
|
||||
add_interface(data_global_elements.API_DATA, data_global_elements.API_DATA, "view_data")
|
||||
add_interface(data_global_elements.API_TYPE, "node", "view_type")
|
||||
add_interface(data_global_elements.API_UNIVERS, "node", "view_univers")
|
||||
add_interface(data_global_elements.API_GROUP, "node", "view_serie")
|
||||
|
402
back/src/create_bdd.py
Executable file
@ -0,0 +1,402 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
##
|
||||
## @author Edouard DUPIN
|
||||
##
|
||||
## @copyright 2012, Edouard DUPIN, all right reserved
|
||||
##
|
||||
## @license MPL v2.0 (see license file)
|
||||
##
|
||||
#pip install paho-mqtt --user
|
||||
|
||||
from realog import debug
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import copy
|
||||
import config
|
||||
import tools
|
||||
from dateutil import parser
|
||||
|
||||
import db
|
||||
import psycopg2
|
||||
|
||||
def create_if_needed():
|
||||
connection = db.connect_bdd();
|
||||
|
||||
debug.info("create the table:")
|
||||
|
||||
c = connection.cursor()
|
||||
|
||||
need_to_create_table = False
|
||||
try:
|
||||
c.execute('''
|
||||
SELECT * FROM object LIMIT 2;
|
||||
''');
|
||||
connection.commit()
|
||||
except psycopg2.errors.UndefinedTable:
|
||||
need_to_create_table = True
|
||||
|
||||
if need_to_create_table == False:
|
||||
debug.info("Does not need to create the BDD");
|
||||
connection.commit()
|
||||
db.remove_connection();
|
||||
return
|
||||
connection.commit()
|
||||
debug.info("Add default BDD format");
|
||||
c.execute('''
|
||||
CREATE TYPE node_type AS ENUM ('type', 'univers', 'serie', 'saison', 'media');
|
||||
CREATE TYPE age_type AS ENUM ('-', '5', '9', '12', '14', '16', '18');
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE SEQUENCE kar_id_sequence;
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE OR REPLACE FUNCTION trigger_set_timestamp()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.modify_date = NOW();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
aaa = '''
|
||||
CREATE OR REPLACE FUNCTION check_exist(_table character, _id INTEGER)
|
||||
RETURNS BOOLEAN AS $$
|
||||
DECLARE vvv int;
|
||||
DECLARE eee text;
|
||||
BEGIN
|
||||
raise WARNING 'check_exist(%,%)%', _table, _id, E'\n';
|
||||
IF _id IS NULL THEN
|
||||
raise WARNING ' ==> return 1 (detect NULL)%', E'\n';
|
||||
RETURN 1;
|
||||
END IF;
|
||||
eee = 'select 1 FROM ' || quote_ident(_table) || ' WHERE id = ' || _id;
|
||||
raise WARNING 'Execute: % %', eee, E'\n';
|
||||
EXECUTE 'select 1 FROM ' || quote_ident(_table) || ' WHERE id = ' || _id INTO vvv;
|
||||
raise WARNING 'Value vvv: % %', vvv, E'\n';
|
||||
IF vvv = 1 THEN
|
||||
raise WARNING ' ==> return 1 %', E'\n';
|
||||
RETURN 1;
|
||||
ELSE
|
||||
raise WARNING ' ==> return 0 %', E'\n';
|
||||
RETURN 0;
|
||||
END IF;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
'''
|
||||
|
||||
c.execute('''
|
||||
CREATE OR REPLACE FUNCTION check_exist(_table character, _id INTEGER)
|
||||
RETURNS BOOLEAN AS $$
|
||||
DECLARE vvv int;
|
||||
DECLARE eee text;
|
||||
BEGIN
|
||||
IF _id IS NULL THEN
|
||||
RETURN 1;
|
||||
END IF;
|
||||
EXECUTE 'select 1 FROM ' || quote_ident(_table) || ' WHERE id = ' || _id INTO vvv;
|
||||
IF vvv = 1 THEN
|
||||
RETURN 1;
|
||||
ELSE
|
||||
RETURN 0;
|
||||
END IF;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
c.execute("""
|
||||
CREATE OR REPLACE FUNCTION check_node_exist(_type character, _id INTEGER)
|
||||
RETURNS BOOLEAN AS $$
|
||||
DECLARE vvv int;
|
||||
DECLARE eee text;
|
||||
BEGIN
|
||||
IF _id IS NULL THEN
|
||||
RETURN 1;
|
||||
END IF;
|
||||
EXECUTE 'select 1 FROM node WHERE type = ''' || quote_ident(_type) || ''' AND id = ' || _id INTO vvv;
|
||||
IF vvv = 1 THEN
|
||||
RETURN 1;
|
||||
ELSE
|
||||
RETURN 0;
|
||||
END IF;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
""")
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add Main Object interface");
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE TABLE object (
|
||||
id INTEGER PRIMARY KEY default nextval('kar_id_sequence'),
|
||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||
create_date TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
modify_date TIMESTAMPTZ NOT NULL DEFAULT NOW());
|
||||
COMMENT ON TABLE object IS 'Basic element in this BDD (manage the create and modfy property, the deletion and the unique ID.';
|
||||
COMMENT ON COLUMN object.id IS 'Unique global ID in the BDD.';
|
||||
COMMENT ON COLUMN object.deleted IS 'If true the element is dead and must not be shown.';
|
||||
COMMENT ON COLUMN object.create_date IS 'Creation date of this Object (automatically setup by the BDD).';
|
||||
COMMENT ON COLUMN object.modify_date IS 'Modify date of this object (automatically updated by the BDD).';
|
||||
''')
|
||||
|
||||
c.execute('''
|
||||
CREATE TRIGGER set_timestamp
|
||||
BEFORE UPDATE ON object
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add DATA interface");
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE TABLE data (
|
||||
sha512 VARCHAR(129) NOT NULL,
|
||||
mime_type VARCHAR(128) NOT NULL,
|
||||
size BIGINT NOT NULL,
|
||||
original_name TEXT
|
||||
) INHERITS (object);
|
||||
COMMENT ON TABLE data IS 'Data basic reference on the big data managed.';
|
||||
COMMENT ON COLUMN data.sha512 IS 'Unique Sha512 of the file.';
|
||||
COMMENT ON COLUMN data.mime_type IS 'Type of the object with his mine-type description.';
|
||||
COMMENT ON COLUMN data.size IS 'Size of the file in Byte.';
|
||||
COMMENT ON COLUMN data.original_name IS 'Name of the file when upload it in the BDD ==> MUST be remove later.';
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
c.execute('''
|
||||
CREATE TRIGGER set_timestamp_data
|
||||
BEFORE UPDATE ON data
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
|
||||
debug.info("Add NODE interface");
|
||||
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE TABLE node (
|
||||
type node_type NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
parent_id INTEGER CHECK(check_exist('node', parent_id))
|
||||
) INHERITS (object);
|
||||
COMMENT ON TABLE node IS 'Node is a basic element of what must be hierarchie apears.';
|
||||
COMMENT ON COLUMN node.name IS 'Name of the Node.';
|
||||
COMMENT ON COLUMN node.description IS 'Description of the Node.';
|
||||
''')
|
||||
connection.commit()
|
||||
c.execute('''
|
||||
CREATE TRIGGER set_timestamp_node
|
||||
BEFORE UPDATE ON node
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add Cover interface");
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE TABLE cover_link (
|
||||
node_id INTEGER CHECK(check_exist('node', node_id)),
|
||||
data_id INTEGER CHECK(check_exist('data', data_id))
|
||||
) INHERITS (object);
|
||||
COMMENT ON TABLE cover_link IS 'Link between cover data id and Nodes.';
|
||||
''')
|
||||
connection.commit()
|
||||
c.execute('''
|
||||
CREATE TRIGGER set_timestamp_cover_link
|
||||
BEFORE UPDATE ON cover_link
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add MEDIA interface");
|
||||
# Create table
|
||||
c.execute('''
|
||||
CREATE TABLE media (
|
||||
data_id INTEGER CHECK(check_exist('data', data_id)),
|
||||
type_id INTEGER CHECK(check_node_exist('type', type_id)),
|
||||
univers_id INTEGER CHECK(check_node_exist('univers', univers_id)),
|
||||
serie_id INTEGER CHECK(check_node_exist('serie', serie_id)),
|
||||
saison_id INTEGER CHECK(check_node_exist('saison', saison_id)),
|
||||
episode INTEGER CHECK(episode >=0),
|
||||
date INTEGER CHECK(date > 1850),
|
||||
time INTEGER CHECK(time >= 0),
|
||||
age_limit age_type NOT NULL DEFAULT '-'
|
||||
) INHERITS (node);
|
||||
COMMENT ON TABLE media IS 'Media Media that is visible.';
|
||||
COMMENT ON COLUMN media.episode IS 'Number of the episode in the saison sequence.';
|
||||
COMMENT ON COLUMN media.date IS 'Simple date in years of the creation of the media.';
|
||||
COMMENT ON COLUMN media.time IS 'Time in second of the media';
|
||||
COMMENT ON COLUMN media.age_limit IS 'Limitation of the age to show the display ("-" for no limitation)';
|
||||
''')
|
||||
|
||||
# Save (commit) the changes
|
||||
connection.commit()
|
||||
c.execute('''
|
||||
CREATE TRIGGER set_timestamp_media
|
||||
BEFORE UPDATE ON media
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add Views models");
|
||||
|
||||
c.execute('''
|
||||
CREATE VIEW view_data AS
|
||||
SELECT id, sha512, mime_type, size
|
||||
FROM data
|
||||
WHERE deleted = false
|
||||
ORDER BY id;
|
||||
CREATE VIEW view_type AS
|
||||
SELECT id, name, description,
|
||||
array(
|
||||
SELECT data_id
|
||||
FROM cover_link
|
||||
WHERE cover_link.node_id = node.id
|
||||
) AS covers
|
||||
FROM node
|
||||
WHERE deleted = false AND type = 'type'
|
||||
ORDER BY name;
|
||||
CREATE VIEW view_univers AS
|
||||
SELECT id, name, description,
|
||||
array(
|
||||
SELECT data_id
|
||||
FROM cover_link
|
||||
WHERE cover_link.node_id = node.id
|
||||
) AS covers
|
||||
FROM node
|
||||
WHERE deleted = false AND type = 'univers'
|
||||
ORDER BY name;
|
||||
CREATE VIEW view_serie AS
|
||||
SELECT id, name, description,
|
||||
array(
|
||||
SELECT data_id
|
||||
FROM cover_link
|
||||
WHERE cover_link.node_id = node.id
|
||||
) AS covers
|
||||
FROM node
|
||||
WHERE deleted = false AND type = 'serie'
|
||||
ORDER BY name;
|
||||
CREATE VIEW view_saison AS
|
||||
SELECT id, name, description, parent_id,
|
||||
array(
|
||||
SELECT data_id
|
||||
FROM cover_link
|
||||
WHERE cover_link.node_id = node.id
|
||||
) AS covers
|
||||
FROM node
|
||||
WHERE deleted = false AND type = 'saison'
|
||||
ORDER BY name;
|
||||
CREATE VIEW view_video AS
|
||||
SELECT id, name, description, data_id, type_id, univers_id, serie_id, saison_id, episode, date, time, age_limit,
|
||||
array(
|
||||
SELECT data_id
|
||||
FROM cover_link
|
||||
WHERE cover_link.node_id = media.id
|
||||
) AS covers
|
||||
FROM media
|
||||
WHERE deleted = false AND type = 'media'
|
||||
ORDER BY name;
|
||||
''')
|
||||
connection.commit()
|
||||
|
||||
debug.info("Add default type");
|
||||
|
||||
default_values_type = [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Documentary",
|
||||
"description": "Documentary (annimals, space, earth...)",
|
||||
"image": "../default_images/type_documentary.svg"
|
||||
},{
|
||||
"id": 1,
|
||||
"name": "Movie",
|
||||
"description": "Movie with real humans (film)",
|
||||
"image": "../default_images/type_film.svg"
|
||||
},{
|
||||
"id": 2,
|
||||
"name": "Annimation",
|
||||
"description": "Annimation movies (film)",
|
||||
"image": "../default_images/type_annimation.svg"
|
||||
},{
|
||||
"id": 3,
|
||||
"name": "Short movie",
|
||||
"description": "Small movies (less 2 minutes)",
|
||||
"image": "../default_images/type_film-short.svg"
|
||||
},{
|
||||
"id": 4,
|
||||
"name": "TV show",
|
||||
"description": "Tv show form old peoples",
|
||||
"image": "../default_images/type_tv-show.svg"
|
||||
}, {
|
||||
"id": 5,
|
||||
"name": "Anniation TV show",
|
||||
"description": "Tv show form young peoples",
|
||||
"image": "../default_images/type_tv-show-annimation.svg"
|
||||
}, {
|
||||
"id": 6,
|
||||
"name": "Theater",
|
||||
"description": "recorder theater pices",
|
||||
"image": "../default_images/type_theater.svg"
|
||||
}, {
|
||||
"id": 7,
|
||||
"name": "One man show",
|
||||
"description": "Recorded stand up",
|
||||
"image": "../default_images/type_one-man-show.svg"
|
||||
}, {
|
||||
"id": 8,
|
||||
"name": "Concert",
|
||||
"description": "Recorded concert",
|
||||
"image": "../default_images/type_concert.svg"
|
||||
}, {
|
||||
"id": 9,
|
||||
"name": "Opera",
|
||||
"description": "Recorded Opera",
|
||||
"image": "../default_images/type_opera.svg"
|
||||
}
|
||||
]
|
||||
tmp_config = config.get_rest_config()
|
||||
for elem in default_values_type:
|
||||
debug.info(" add type: " + elem["name"]);
|
||||
request_insert = (elem["name"], elem["description"])
|
||||
c.execute('INSERT INTO node (type, name, description) VALUES (\'type\', %s, %s) RETURNING id', request_insert)
|
||||
elem["id"] = c.fetchone()[0]
|
||||
connection.commit()
|
||||
if elem["image"] != None and elem["image"] != "":
|
||||
# calculate sha512:
|
||||
local_file_name = os.path.join(tools.get_current_path(__file__), elem["image"])
|
||||
sha512 = tools.calculate_sha512(local_file_name)
|
||||
mime_type = "image/svg+xml"
|
||||
size = tools.file_size(local_file_name)
|
||||
original_name = local_file_name
|
||||
c.execute('INSERT INTO data (sha512, mime_type, size, original_name) VALUES (%s, %s, %s, %s) RETURNING id', (sha512, mime_type, size, original_name))
|
||||
connection.commit()
|
||||
elem["data_id"] = c.fetchone()[0]
|
||||
c.execute('INSERT INTO cover_link (node_id, data_id) VALUES (%s, %s)', (elem["id"], elem["data_id"]))
|
||||
connection.commit()
|
||||
tools.file_copy(local_file_name, os.path.join(tmp_config["data_media"] , str(elem["data_id"]), "data"))
|
||||
connection.commit()
|
||||
|
||||
|
||||
# We can also close the connection if we are done with it.
|
||||
# Just be sure any changes have been committed or they will be lost.
|
||||
db.remove_connection();
|
||||
|
||||
|
||||
|
@ -132,6 +132,25 @@ class DataInterface():
|
||||
#debug.info("get specific data = " + json.dumps(results))
|
||||
return results;
|
||||
|
||||
def find(self, _key, _value):
|
||||
debug.info("get " + self.name + ": " + str(_value))
|
||||
cursor = self.connection.cursor(cursor_factory=RealDictCursor)
|
||||
req = (_value,)
|
||||
cursor.execute('SELECT * FROM ' + self.name_view + ' WHERE ' + _key + '=%s', req)
|
||||
results = cursor.fetchone()
|
||||
self.connection.commit()
|
||||
#debug.info("get specific data = " + json.dumps(results))
|
||||
return results;
|
||||
def find2(self, _key1, _value1, _key2, _value2):
|
||||
debug.info("get " + self.name + ": " + str(_value1))
|
||||
cursor = self.connection.cursor(cursor_factory=RealDictCursor)
|
||||
req = (_value1,_value2)
|
||||
cursor.execute('SELECT * FROM ' + self.name_view + ' WHERE ' + _key1 + '=%s AND ' + _key2 + '=%s', req)
|
||||
results = cursor.fetchone()
|
||||
self.connection.commit()
|
||||
#debug.info("get specific data = " + json.dumps(results))
|
||||
return results;
|
||||
|
||||
def delete(self, _id):
|
||||
debug.info("delete " + self.name + ": " + str(_id))
|
||||
cursor = self.connection.cursor()
|
||||
@ -141,12 +160,12 @@ class DataInterface():
|
||||
self.connection.commit()
|
||||
return True
|
||||
|
||||
def is_value_modifiable_and_good_type(self, _key, _value):
|
||||
def is_value_modifiable_and_good_type(self, _key, _value, _check_with="modifiable"):
|
||||
if self.model == None:
|
||||
return True
|
||||
for elem in self.model:
|
||||
if _key == elem["name"]:
|
||||
if elem["modifiable"] == False:
|
||||
if elem[_check_with] == False:
|
||||
debug.warning("Try to set an input '" + str(_key) + "' but the element is not modifiable ... ");
|
||||
raise ServerError("FORBIDDEN Try to set an input '" + str(_key) + "' but the element is not modifiable", status_code=403)
|
||||
if elem["type"] == "str":
|
||||
@ -206,7 +225,7 @@ class DataInterface():
|
||||
for elem in _value.keys():
|
||||
if elem == "id":
|
||||
continue
|
||||
if self.is_value_modifiable_and_good_type(elem, _value[elem]) == False:
|
||||
if self.is_value_modifiable_and_good_type(elem, _value[elem], "creatable") == False:
|
||||
return;
|
||||
if aaa != "":
|
||||
aaa += " , "
|
||||
|
@ -124,11 +124,15 @@ def file_write_data_safe(path, data):
|
||||
|
||||
|
||||
def file_move(path_src, path_dst):
|
||||
#real write of data:
|
||||
create_directory_of_file(path_dst)
|
||||
shutil.move(path_src, path_dst)
|
||||
return True
|
||||
|
||||
def file_copy(path_src, path_dst):
|
||||
create_directory_of_file(path_dst)
|
||||
shutil.copyfile(path_src, path_dst)
|
||||
return True
|
||||
|
||||
|
||||
def list_to_str(list):
|
||||
if type(list) == type(str()):
|
||||
@ -139,3 +143,63 @@ def list_to_str(list):
|
||||
for elem in list:
|
||||
result += list_to_str(elem)
|
||||
return result
|
||||
|
||||
import hashlib
|
||||
|
||||
def str_limit_4(_data):
|
||||
data = str(_data)
|
||||
if len(data) >= 4:
|
||||
return data
|
||||
if len(data) == 3:
|
||||
return " " + data
|
||||
if len(data) == 2:
|
||||
return " " + data
|
||||
return " " + data
|
||||
|
||||
def int_to_human(_data, _bigger = False):
|
||||
tera = int(_data/(1024*1024*1024*1024))%1024
|
||||
giga = int(_data/(1024*1024*1024))%1024
|
||||
mega = int(_data/(1024*1024))%1024
|
||||
kilo = int(_data/(1024))%1024
|
||||
byte = int(_data)%1024
|
||||
|
||||
tera_str = str_limit_4(tera)
|
||||
giga_str = str_limit_4(giga)
|
||||
mega_str = str_limit_4(mega)
|
||||
kilo_str = str_limit_4(kilo)
|
||||
byte_str = str_limit_4(byte)
|
||||
out = ""
|
||||
if tera != 0:
|
||||
out += tera_str + "T"
|
||||
if _bigger == True:
|
||||
return out
|
||||
if giga != 0 or len(out) != 0:
|
||||
out += giga_str + "G"
|
||||
if _bigger == True:
|
||||
return out
|
||||
if mega != 0 or len(out) != 0:
|
||||
out += mega_str + "M"
|
||||
if _bigger == True:
|
||||
return out
|
||||
if kilo != 0 or len(out) != 0:
|
||||
out += kilo_str + "k"
|
||||
if _bigger == True:
|
||||
return out
|
||||
out += byte_str + "B"
|
||||
return out
|
||||
|
||||
def calculate_sha512(_path):
|
||||
sha1 = hashlib.sha512()
|
||||
file = open(_path, "rb")
|
||||
totalsize = os.path.getsize(_path)
|
||||
current = 0
|
||||
while True:
|
||||
body = file.read(10*1024*1024)
|
||||
if len(body) == 0:
|
||||
break;
|
||||
current += len(body)
|
||||
sha1.update(body)
|
||||
percent = current/totalsize*100
|
||||
debug.debug("\r Checking data: {percent:3.0f}% {size} / {total_size}".format(percent=percent, size=int_to_human(current), total_size=int_to_human(totalsize)))
|
||||
file.close()
|
||||
return str(sha1.hexdigest())
|
@ -29,8 +29,8 @@ src_path = folder
|
||||
dst_path = os.path.join(folder, "..", "zzz_video_push_done")
|
||||
|
||||
property = {
|
||||
"hostname": "192.168.1.157",
|
||||
#"hostname": "127.0.0.1",
|
||||
#"hostname": "192.168.1.157",
|
||||
"hostname": "127.0.0.1",
|
||||
"port": 15080,
|
||||
"login": None,
|
||||
"password": None,
|
||||
@ -219,6 +219,32 @@ def calculate_sha512(_path):
|
||||
sys.stderr.write("\n")
|
||||
return str(sha1.hexdigest())
|
||||
|
||||
|
||||
result_list_types = requests.get(get_base_url() + "type")
|
||||
debug.info(" List of types *********** : " + str(result_list_types))
|
||||
#debug.info(" " + str(result_list_types.json()))
|
||||
result_list_types = result_list_types.json()
|
||||
|
||||
def get_type_id(_name):
|
||||
for elem in result_list_types:
|
||||
if elem["name"] == _name:
|
||||
return elem["id"]
|
||||
return None
|
||||
|
||||
def print_list_of_type():
|
||||
print("List of type:")
|
||||
for elem in result_list_types:
|
||||
print(" - '" + elem["name"] + "'")
|
||||
|
||||
def get_list_of_type():
|
||||
print("List of type:")
|
||||
out = []
|
||||
for elem in result_list_types:
|
||||
out.append(elem["name"])
|
||||
return out
|
||||
|
||||
#exit(-1);
|
||||
|
||||
def push_video_file(_path, _basic_key={}):
|
||||
file_name, file_extension = os.path.splitext(_path);
|
||||
# internal file_extension ...
|
||||
@ -239,106 +265,9 @@ def push_video_file(_path, _basic_key={}):
|
||||
|
||||
if file_name in ["cover_1.jpg","cover_1.png", "cover_1.till", "cover_1.bmp", "cover_1.tga"]:
|
||||
# find a cover...
|
||||
debug.warning(" Not send cover Not managed ... : " + _path + " Not manage ...")
|
||||
"""
|
||||
result_group_data = requests.post(get_base_url() + "group/find", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4))
|
||||
debug.info("Create group ??? *********** : " + str(result_group_data) + " " + result_group_data.text)
|
||||
if result_group_data.status_code == 404:
|
||||
result_group_data = requests.post(get_base_url() + "group", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4))
|
||||
debug.info("yes we create new group *********** : " + str(result_group_data) + " " + result_group_data.text)
|
||||
group_id = result_group_data.json()["id"]
|
||||
os.path.join(_path, it_path)
|
||||
|
||||
result_group_data = requests.post(get_base_url() + "group", data=json.dumps({"name":_basic_key["series-name"]}, sort_keys=True, indent=4))
|
||||
debug.info("yes we create new group *********** : " + str(result_group_data) + " " + result_group_data.text)
|
||||
"""
|
||||
|
||||
"""
|
||||
debug.info("Send cover for: " + _basic_key["series-name"] + " " + _basic_key["saison"]);
|
||||
if _basic_key["series-name"] == "":
|
||||
debug.error(" ==> can not asociate at a specific seri");
|
||||
return False;
|
||||
|
||||
etk::String groupName = _basic_key["series-name"];
|
||||
if _basic_key["saison"] != "":
|
||||
groupName += ":" + _basic_key["saison"];
|
||||
|
||||
auto sending = _srv.setGroupCover(zeus::File::create(_path.getString(), ""), groupName);
|
||||
sending.onSignal(progressCallback);
|
||||
sending.waitFor(echrono::seconds(20000));
|
||||
"""
|
||||
return True
|
||||
|
||||
"""
|
||||
if etk::path::exist(_path + ".sha512") == True:
|
||||
debug.verbose("file sha512 exist ==> read it");
|
||||
uint64_t time_sha512 = get_modify_time(_path + ".sha512");
|
||||
uint64_t time_elem = get_modify_time(_path);
|
||||
storedSha512_file = file_read_data(_path + ".sha512")
|
||||
debug.verbose("file sha == " + storedSha512_file);
|
||||
if time_elem > time_sha512:
|
||||
debug.verbose("file time > sha time ==> regenerate new one ...");
|
||||
# check the current sha512
|
||||
storedSha512 = calculate_sha512(_path);
|
||||
debug.verbose("calculated new sha'" + storedSha512 + "'");
|
||||
if storedSha512_file != storedSha512:
|
||||
# need to remove the old sha file
|
||||
auto idFileToRemove_fut = _srv.gdelta_secondsetId(storedSha512_file).waitFor(echrono::seconds(2));
|
||||
if idFileToRemove_fut.hasError() == True:
|
||||
debug.error("can not remove the remote file with sha " + storedSha512_file);
|
||||
else:
|
||||
debug.info("Remove old deprecated file: " + storedSha512_file);
|
||||
_srv.remove(idFileToRemove_fut.get());
|
||||
# note, no need to wait the call is async ... and the user does not interested with the result ...
|
||||
|
||||
|
||||
# store new sha512 ==> this update tile too ...
|
||||
file.open(etk::io::OpenMode::Write);
|
||||
file.writeAll(storedSha512);
|
||||
file.close();
|
||||
else:
|
||||
# store new sha512
|
||||
/*
|
||||
storedSha512 = file.readAllString();
|
||||
file.open(etk::io::OpenMode::Read);
|
||||
file.writeAll(storedSha512);
|
||||
file.close();
|
||||
*/
|
||||
storedSha512 = storedSha512_file;
|
||||
debug.verbose("read all sha from the file'" + storedSha512 + "'");
|
||||
|
||||
else:
|
||||
"""
|
||||
"""
|
||||
if True:
|
||||
storedSha512 = calculate_sha512(_path)
|
||||
file_write_data(_path + ".sha512", storedSha512);
|
||||
debug.info("calculate and store sha512 '" + storedSha512 + "'");
|
||||
debug.info("check file existance: sha='" + storedSha512 + "'");
|
||||
"""
|
||||
|
||||
|
||||
# push only if the file exist
|
||||
"""
|
||||
# TODO : Check the metadata updating ...
|
||||
auto idFile_fut = _srv.getId(storedSha512).waitFor(echrono::seconds(2));
|
||||
if idFile_fut.hasError() == False:
|
||||
# media already exit ==> stop here ...
|
||||
return True;
|
||||
|
||||
# TODO: Do it better ==> add the calback to know the push progression ...
|
||||
debug.verbose("Add File : " + _path + " sha='" + storedSha512 + "'");
|
||||
auto sending = _srv.add(zeus::File::create(_path, storedSha512));
|
||||
sending.onSignal(progressCallback);
|
||||
debug.verbose("Add done ... now waiting ... ");
|
||||
uint32_t mediaId = sending.waitFor(echrono::seconds(20000)).get();
|
||||
debug.verbose("END WAITING ... ");
|
||||
if mediaId == 0:
|
||||
debug.error("Get media ID = 0 With no error");
|
||||
return False;
|
||||
"""
|
||||
#mime = magic.Magic(mime=True)
|
||||
#mime_type = mime.from_file(_path)
|
||||
mime_type = "unknown"
|
||||
# do it by myself .. it is better ...
|
||||
filename___, file_extension = os.path.splitext(_path)
|
||||
@ -370,11 +299,6 @@ def push_video_file(_path, _basic_key={}):
|
||||
'filename': path_send,
|
||||
'mime-type': mime_type
|
||||
}
|
||||
"""
|
||||
,
|
||||
'Connection': "keep-alive"
|
||||
}
|
||||
"""
|
||||
debug.info(" Calculate SHA ...")
|
||||
local_sha = calculate_sha512(_path)
|
||||
debug.info(" ==> sha is " + local_sha)
|
||||
@ -382,11 +306,9 @@ def push_video_file(_path, _basic_key={}):
|
||||
remote_id_data = None
|
||||
if result_check_sha.status_code == 200:
|
||||
debug.info(" Find the data : " + str(result_check_sha) + " " + result_check_sha.text)
|
||||
if result_check_sha.json()["found"] == True \
|
||||
and len(result_check_sha.json()["ids"]) != 0:
|
||||
remote_id_data = result_check_sha.json()["ids"][0]
|
||||
else:
|
||||
debug.warning(" Did not find the file ...")
|
||||
remote_id_data = result_check_sha.json()["id"]
|
||||
elif result_check_sha.status_code == 404:
|
||||
debug.info(" Did not find the file ... ==> need to send it")
|
||||
else:
|
||||
debug.warning(" error interface ...")
|
||||
if remote_id_data == None:
|
||||
@ -394,7 +316,7 @@ def push_video_file(_path, _basic_key={}):
|
||||
debug.info(" result *********** : " + str(result_send_data) + " " + result_send_data.text)
|
||||
remote_id_data = result_send_data.json()["id"]
|
||||
if remote_id_data == None:
|
||||
debug.warning(" pb in filile sending ....");
|
||||
debug.warning(" pb in file sending ....");
|
||||
return
|
||||
|
||||
file_name = os.path.basename(file_name)
|
||||
@ -522,7 +444,6 @@ def push_video_file(_path, _basic_key={}):
|
||||
finally:
|
||||
pass
|
||||
|
||||
|
||||
debug.info(" Find a internal mode series: :");
|
||||
debug.info(" origin : '" + file_name + "'");
|
||||
saisonPrint = "XX";
|
||||
@ -610,10 +531,10 @@ def push_video_file(_path, _basic_key={}):
|
||||
group_id = result_group_data.json()["id"]
|
||||
data_model["group_id"] = group_id
|
||||
if "saison" in _basic_key.keys():
|
||||
result_saison_data = requests.post(get_base_url() + "saison/find", data=json.dumps({"number":_basic_key["saison"], "group_id":group_id}, sort_keys=True, indent=4))
|
||||
result_saison_data = requests.post(get_base_url() + "saison/find", data=json.dumps({"name":_basic_key["saison"], "parent_id":group_id}, sort_keys=True, indent=4))
|
||||
debug.info(" Create saison ??? *********** : " + str(result_saison_data) + " " + result_saison_data.text)
|
||||
if result_saison_data.status_code == 404:
|
||||
result_saison_data = requests.post(get_base_url() + "saison", data=json.dumps({"number":_basic_key["saison"], "group_id":group_id}, sort_keys=True, indent=4))
|
||||
result_saison_data = requests.post(get_base_url() + "saison", data=json.dumps({"name":_basic_key["saison"], "parent_id":group_id}, sort_keys=True, indent=4))
|
||||
debug.info(" yes we create new saison *********** : " + str(result_saison_data) + " " + result_saison_data.text)
|
||||
saison_id = result_saison_data.json()["id"]
|
||||
data_model["saison_id"] = saison_id
|
||||
@ -640,27 +561,9 @@ def install_video_path( _path, _basic_key = {}):
|
||||
debug.info("Add Sub path: '" + it_path + "'");
|
||||
if len(basic_key_tmp) == 0:
|
||||
debug.info("find A '" + it_path + "' " + str(len(basic_key_tmp)));
|
||||
if it_path == "documentary":
|
||||
basic_key_tmp["type"] = 0
|
||||
elif it_path == "film":
|
||||
basic_key_tmp["type"] = 1
|
||||
elif it_path == "film-annimation":
|
||||
basic_key_tmp["type"] = 2
|
||||
elif it_path == "film-short":
|
||||
basic_key_tmp["type"] = 3
|
||||
elif it_path == "tv-show":
|
||||
basic_key_tmp["type"] = 4
|
||||
elif it_path == "tv-show-annimation":
|
||||
basic_key_tmp["type"] = 5
|
||||
elif it_path == "theater":
|
||||
basic_key_tmp["type"] = 6
|
||||
elif it_path == "one-man":
|
||||
basic_key_tmp["type"] = 7
|
||||
elif it_path == "concert":
|
||||
basic_key_tmp["type"] = 8
|
||||
elif it_path == "opera":
|
||||
basic_key_tmp["type"] = 9
|
||||
else:
|
||||
basic_key_tmp["type"] = get_type_id(it_path);
|
||||
if basic_key_tmp["type"] == None:
|
||||
debug.warning("Not supported type: '" + str(it_path) + "' availlable: " + str(get_list_of_type()))
|
||||
continue
|
||||
else:
|
||||
debug.info("find B '" + it_path + "' " + str(len(basic_key_tmp)))
|
||||
@ -794,6 +697,7 @@ my_args.add("a", "action", list=[
|
||||
["list","List all the files"],
|
||||
["push","push a single file"],
|
||||
["push_path","push a full folder"],
|
||||
["types","List all the types availlable"],
|
||||
], desc="possible action")
|
||||
my_args.add("c", "color", desc="Display message in color")
|
||||
my_args.add("f", "folder", haveParam=False, desc="Display the folder instead of the git repository name")
|
||||
@ -1039,6 +943,14 @@ elif requestAction == "push_path":
|
||||
debug.info("============================================");
|
||||
debug.info("== DONE ==");
|
||||
debug.info("============================================");
|
||||
elif requestAction == "types":
|
||||
debug.info("============================================");
|
||||
debug.info("== Display list of types: ");
|
||||
debug.info("============================================");
|
||||
print_list_of_type();
|
||||
debug.info("============================================");
|
||||
debug.info("== DONE ==");
|
||||
debug.info("============================================");
|
||||
else:
|
||||
debug.info("============================================");
|
||||
debug.error("== Unknow action: '" + requestAction + "'");
|
||||
|
@ -241,6 +241,11 @@ connection.commit()
|
||||
|
||||
|
||||
c.execute('''
|
||||
CREATE VIEW view_data AS
|
||||
SELECT id, sha512, mime_type, size
|
||||
FROM data
|
||||
WHERE deleted = false
|
||||
ORDER BY id;
|
||||
CREATE VIEW view_type AS
|
||||
SELECT id, name, description,
|
||||
array(
|
||||
|
@ -1,7 +1,7 @@
|
||||
<div>
|
||||
<div class="imgContainer-small">
|
||||
<div *ngIf="imageSource">
|
||||
<img src="{{imageSource}}" alt="type image" class="miniature-small"/>
|
||||
<div *ngIf="cover">
|
||||
<img src="{{cover}}" alt="type image" class="miniature-small"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title-small">
|
||||
|
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><g transform="translate(0.000000,511.000000) scale(0.100000,-0.100000)"><path d="M2917.1,4972.9c-137.3-218.3-598.7-992.5-594.1-997c78.8-58.5,560.4-326.3,591.9-326.3c42.8,0,1348.1,585.1,1334.6,598.7c-9,6.7-1208.5,726.9-1255.8,751.7C2957.7,5017.9,2944.1,5013.5,2917.1,4972.9z"/><path d="M4231.5,3534.8c-351.1-159.8-643.7-297.1-648.2-301.6c-11.3-11.3,672.9-416.4,704.4-416.4c22.5,0,1314.3,576.2,1334.6,596.4c15.8,13.5-677.4,416.4-713.4,416.4C4888.6,3829.6,4584.8,3696.9,4231.5,3534.8z"/><path d="M6065.7,2922.7c-87.8-42.8-344.3-159.8-573.9-263.3c-229.6-103.5-443.4-204.8-477.1-225.1l-63-38.3l96.8-51.8c51.7-29.3,171-105.8,267.8-171c288.1-195.8,411.8-191.3,855.2,33.8c164.3,85.5,414.1,202.5,553.6,261.1c137.3,60.8,252.1,117,252.1,123.8c0,31.5-648.2,405.1-699.9,405.1C6245.7,2996.9,6151.2,2963.2,6065.7,2922.7z"/><path d="M7629.8,2171c-63-18-1303.1-580.6-1305.3-591.9c0-6.8,47.3-36,108-67.5c58.5-31.5,171.1-99,252.1-153c303.8-202.5,366.8-209.3,666.2-65.3c110.3,54,378.1,177.8,594.2,274.6c216,96.8,400.6,182.3,409.6,191.3c15.8,11.3-567.1,373.6-654.9,407.4C7679.3,2173.2,7647.8,2175.5,7629.8,2171z"/><path d="M1384.5,1439.5c-27-110.3-821.5-4998.5-814.7-5005.2c4.5-4.5,877.7-150.8,1942.2-324.1c3459.1-567.2,4786.9-785.4,5093-844c164.3-31.5,328.6-56.3,362.3-56.3h60.8l159.8,974.5c90,533.4,272.3,1642.9,407.4,2462.1l245.3,1487.6l294.8,483.9c162,265.6,294.8,492.9,294.8,504.1s-87.8,69.8-193.5,130.5c-175.6,96.8-200.3,105.8-263.3,83.3c-65.3-20.3-1255.8-562.6-1271.6-578.4c-4.5-2.2,112.5-78.8,258.8-168.8c146.3-90,270.1-166.5,274.6-171c31.5-29.2-47.3-24.8-330.8,22.5c-175.5,27-319.6,47.2-319.6,45c0-2.3,137.3-294.8,306.1-650.4c168.8-355.6,301.6-650.4,294.8-654.9c-6.7-6.7-162,11.3-344.3,40.5c-252.1,38.3-346.6,63-384.9,96.8c-27,24.8-177.8,317.4-333.1,652.7c-155.3,333.1-292.6,616.7-301.6,625.6c-22.5,22.5-789.9,157.5-805.7,144c-4.5-6.7,130.5-301.6,299.3-654.9c168.8-355.6,301.6-650.4,297.1-657.1c-6.7-4.5-90,6.7-189,24.7c-96.8,18-252.1,42.8-344.3,56.3c-92.3,13.5-182.3,36-202.6,51.8c-38.3,31.5-369.1,711.2-463.6,954.3c-110.3,281.3-238.6,391.6-495.1,420.9c-74.3,9-209.3,27-299.3,40.5c-90,13.5-168.8,18-175.6,11.3c-6.7-4.5,123.8-297.1,292.6-648.2c166.5-351.1,299.3-643.7,292.6-648.2c-11.3-13.5-641.4,87.8-702.2,112.5c-38.3,15.7-101.3,123.8-236.3,407.3c-103.5,213.8-216.1,461.4-252.1,546.9c-36,87.8-90,195.8-119.3,240.8c-67.5,103.5-245.3,198-378.1,198c-51.8,0-182.3,15.8-290.3,33.8c-108,20.3-200.3,31.5-202.6,29.3c-2.3-4.5,135-299.3,303.8-659.4c171-357.8,308.3-654.9,306.1-657.2c-2.3-2.2-130.5,15.8-285.8,40.5c-153,24.8-310.6,49.5-348.8,56.3c-38.3,4.5-90,31.5-114.8,60.8c-51.8,54-357.8,697.7-447.9,938.5c-117,308.3-213.8,387.1-528.9,427.6C1443,1502.6,1398,1498.1,1384.5,1439.5z M4818.9-761.5c1737.4-283.6,3186.8-522.1,3218.3-528.9l56.3-13.5l-33.8-211.6c-18-117-45-213.8-56.3-213.8c-65.3-2.2-6418.6,1044.3-6436.6,1060c-11.3,9-6.8,96.8,9,204.8c29.3,198,36,220.5,65.3,220.5C1652.3-243.9,3081.4-475.7,4818.9-761.5z M4476.8-3257.4c1737.4-283.6,3168.8-526.6,3182.3-540.1c22.5-22.5-22.5-400.6-49.5-416.4c-6.7-4.5-155.3,15.8-328.6,42.8c-173.3,29.3-1620.4,267.8-3218.3,528.9c-1595.6,261-2905.5,479.4-2912.2,483.9c-11.3,11.3,42.8,393.8,58.5,423.1c4.5,9,31.5,11.3,58.5,4.5C1294.5-2737.5,2739.4-2973.8,4476.8-3257.4z"/></g></g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -1,115 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="1279.000000pt" height="1280.000000pt" viewBox="0 0 1279.000000 1280.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.15, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M8860 12794 c-14 -2 -59 -9 -100 -15 -239 -33 -517 -147 -776 -317
|
||||
-253 -167 -443 -325 -819 -682 -289 -274 -407 -378 -542 -479 -519 -386 -1257
|
||||
-658 -2443 -901 l-156 -32 -89 58 c-553 357 -1131 620 -1767 804 -195 57 -477
|
||||
122 -628 146 -125 19 -378 22 -470 5 -396 -73 -610 -344 -660 -836 -17 -158
|
||||
-8 -489 20 -755 94 -917 291 -1732 625 -2595 130 -336 155 -428 155 -568 -1
|
||||
-133 -47 -238 -167 -378 -26 -31 -117 -129 -200 -218 -84 -89 -193 -216 -242
|
||||
-281 -327 -434 -515 -957 -583 -1620 -17 -164 -17 -713 0 -895 41 -446 102
|
||||
-807 228 -1360 75 -325 82 -363 100 -490 18 -130 46 -197 103 -251 33 -32 139
|
||||
-89 148 -80 2 1 -15 56 -37 122 -331 981 -467 2193 -345 3069 63 449 180 794
|
||||
364 1066 84 125 155 206 249 283 417 340 958 352 1592 35 731 -366 1229 -927
|
||||
1365 -1539 26 -118 31 -375 10 -501 -81 -484 -404 -847 -863 -971 -121 -33
|
||||
-373 -37 -520 -9 -458 88 -858 409 -1068 857 -25 55 -62 131 -80 171 -64 135
|
||||
-170 194 -224 125 -50 -62 -4 -272 106 -482 83 -160 174 -280 324 -431 228
|
||||
-229 457 -359 755 -427 138 -32 259 -42 645 -52 374 -10 459 -19 603 -65 115
|
||||
-37 218 -87 326 -159 133 -89 222 -165 476 -406 251 -238 343 -317 469 -402
|
||||
118 -79 219 -129 347 -171 94 -32 188 -52 609 -132 404 -78 626 -196 775 -414
|
||||
l46 -68 -25 -89 c-67 -241 -97 -383 -87 -403 12 -22 107 -61 151 -61 58 0 66
|
||||
17 130 273 86 350 118 437 206 568 110 164 210 287 348 425 394 392 882 646
|
||||
1363 709 611 80 1175 -201 1482 -740 132 -232 196 -482 189 -743 l-3 -132 30
|
||||
-12 c96 -40 221 27 261 139 18 52 17 209 -2 318 -47 272 -223 638 -431 895
|
||||
-61 75 -221 235 -320 320 l-53 45 236 415 c707 1245 769 1347 864 1433 94 85
|
||||
219 109 337 65 78 -28 185 -136 231 -229 96 -197 82 -365 -63 -767 -116 -325
|
||||
-141 -460 -132 -720 8 -257 61 -471 177 -711 149 -307 359 -552 628 -732 123
|
||||
-83 235 -137 379 -185 180 -61 272 -48 338 45 l30 43 -2 236 c-4 659 -168
|
||||
1348 -472 1977 -103 213 -190 365 -326 570 -138 207 -243 342 -456 585 -195
|
||||
223 -275 333 -340 465 -66 136 -89 237 -89 395 0 160 16 253 94 563 104 407
|
||||
141 633 155 939 22 501 -50 960 -239 1510 -33 97 -128 346 -211 555 -364 913
|
||||
-411 1112 -454 1933 -24 472 -43 684 -76 880 -79 471 -251 842 -508 1101 -185
|
||||
185 -377 292 -623 345 -70 15 -326 27 -378 18z m310 -389 c418 -154 764 -684
|
||||
909 -1391 108 -528 85 -1038 -69 -1488 -33 -99 -38 -156 -15 -200 8 -15 57
|
||||
-85 109 -155 564 -762 742 -1203 850 -2111 61 -511 54 -960 -25 -1530 -45
|
||||
-325 -135 -704 -195 -821 -7 -15 -50 -134 -95 -265 -44 -131 -103 -288 -130
|
||||
-349 -194 -433 -500 -797 -942 -1118 -234 -171 -447 -291 -883 -498 -1049
|
||||
-498 -1480 -649 -1998 -700 -175 -17 -564 -6 -736 20 -370 58 -792 181 -1245
|
||||
363 -458 184 -929 419 -971 483 -24 37 -11 67 55 124 33 29 83 84 112 124 29
|
||||
40 73 99 97 132 54 72 105 178 127 260 23 84 30 291 16 411 -18 141 -54 305
|
||||
-116 526 -122 439 -218 648 -386 848 -30 36 -77 94 -104 130 -28 36 -78 96
|
||||
-112 133 -96 105 -96 126 1 238 35 41 100 116 145 168 219 254 389 514 675
|
||||
1034 277 502 376 870 445 1652 40 444 37 631 -13 829 -44 172 -163 438 -242
|
||||
542 -49 64 -64 98 -64 149 0 41 5 51 45 94 95 102 276 168 815 299 380 93 898
|
||||
177 1175 191 102 5 150 12 177 25 68 33 188 172 323 374 71 106 165 237 209
|
||||
290 104 125 381 407 508 520 360 316 881 621 1175 686 109 25 279 16 373 -19z
|
||||
m-7618 -2080 c128 -22 260 -69 398 -142 439 -231 634 -454 690 -793 32 -188
|
||||
-30 -385 -184 -590 -123 -164 -422 -426 -566 -497 -173 -85 -303 -10 -472 273
|
||||
-146 245 -255 484 -322 707 -44 145 -122 492 -136 601 -29 233 80 406 280 445
|
||||
72 14 220 12 312 -4z"/>
|
||||
<path d="M8851 11829 c-71 -12 -216 -61 -288 -98 -259 -131 -535 -391 -766
|
||||
-724 -137 -196 -187 -308 -187 -419 0 -132 69 -206 275 -293 50 -21 252 -119
|
||||
449 -218 198 -98 387 -190 420 -202 177 -66 342 -72 461 -17 221 104 336 414
|
||||
322 872 -6 190 -21 294 -86 585 -44 196 -55 235 -96 314 -85 168 -265 239
|
||||
-504 200z m64 -342 c64 -67 101 -182 179 -547 47 -223 67 -393 69 -586 2 -146
|
||||
0 -164 -17 -183 -37 -41 -114 -24 -335 70 -210 90 -382 193 -576 344 -163 127
|
||||
-194 188 -142 284 37 70 256 350 350 448 138 143 260 212 376 213 51 0 57 -3
|
||||
96 -43z"/>
|
||||
<path d="M8896 7075 c-33 -13 -110 -58 -170 -98 -61 -41 -150 -100 -197 -131
|
||||
-98 -63 -185 -152 -220 -223 -35 -72 -38 -174 -7 -232 36 -68 87 -103 153
|
||||
-109 53 -4 57 -3 89 32 23 24 48 72 76 143 69 180 119 240 260 306 113 54 177
|
||||
42 294 -55 32 -27 73 -56 90 -66 42 -22 141 -22 184 1 69 37 92 129 53 206
|
||||
-30 58 -123 137 -215 181 -156 75 -282 90 -390 45z"/>
|
||||
<path d="M10005 6115 c-133 -23 -455 -129 -567 -186 -47 -24 -78 -64 -78 -101
|
||||
0 -39 32 -100 70 -132 51 -42 99 -36 233 29 98 48 126 57 222 71 86 12 126 24
|
||||
184 52 85 43 92 55 95 159 1 60 -2 75 -19 91 -28 28 -60 31 -140 17z"/>
|
||||
<path d="M4960 5864 c-14 -2 -52 -9 -85 -15 -143 -25 -289 -131 -389 -282
|
||||
-146 -222 -157 -309 -46 -384 44 -31 106 -30 151 0 21 14 49 50 74 97 52 97
|
||||
186 236 266 274 115 55 216 53 379 -9 109 -41 160 -44 221 -12 84 45 90 109
|
||||
18 191 -61 70 -113 91 -289 120 -93 16 -261 27 -300 20z"/>
|
||||
<path d="M10045 5513 c-332 -90 -336 -92 -371 -128 -34 -37 -49 -87 -34 -115
|
||||
5 -10 24 -23 41 -29 58 -20 114 -13 226 30 99 38 117 41 223 45 146 5 244 21
|
||||
263 42 40 45 32 125 -18 177 -29 31 -38 35 -81 34 -27 -1 -139 -26 -249 -56z"/>
|
||||
<path d="M7263 5475 c-261 -47 -493 -195 -623 -396 -63 -98 -77 -186 -41 -264
|
||||
42 -90 132 -142 318 -181 267 -56 316 -74 332 -117 19 -49 62 -389 62 -490 0
|
||||
-96 -4 -117 -37 -217 -58 -176 -123 -258 -246 -315 -193 -88 -433 -28 -636
|
||||
159 -51 46 -108 90 -127 96 -53 18 -98 -8 -131 -76 -23 -48 -26 -63 -22 -124
|
||||
8 -113 72 -196 203 -262 158 -81 327 -113 544 -105 286 10 431 83 523 260 77
|
||||
148 159 236 242 258 36 10 49 9 106 -12 59 -22 84 -24 260 -27 107 -2 253 1
|
||||
324 7 156 13 204 32 295 117 35 32 107 95 159 139 127 106 138 128 164 331 12
|
||||
92 17 175 13 201 -8 55 -51 106 -103 121 -53 16 -155 15 -195 -2 -62 -26 -70
|
||||
-45 -78 -179 -9 -136 -37 -262 -70 -309 -30 -42 -101 -85 -184 -111 -89 -28
|
||||
-266 -30 -365 -4 -151 40 -271 128 -304 222 -8 26 -20 93 -27 149 -21 189 10
|
||||
317 129 534 116 209 135 255 140 341 3 71 2 79 -26 123 -58 90 -226 148 -422
|
||||
147 -58 0 -137 -7 -177 -14z"/>
|
||||
<path d="M9828 4739 c-44 -13 -88 -60 -88 -95 0 -40 25 -88 61 -118 32 -27 36
|
||||
-28 99 -20 142 18 180 12 282 -39 102 -51 140 -57 193 -31 43 20 135 117 135
|
||||
142 0 56 -99 111 -257 143 -115 23 -369 34 -425 18z"/>
|
||||
<path d="M4855 4609 c-171 -59 -384 -188 -478 -289 -56 -60 -86 -123 -74 -154
|
||||
11 -29 57 -39 114 -28 68 14 505 196 566 236 68 45 76 168 15 234 -27 28 -64
|
||||
28 -143 1z"/>
|
||||
<path d="M4830 3973 c-14 -2 -60 -15 -102 -29 -195 -64 -340 -225 -308 -343
|
||||
14 -52 62 -108 101 -116 43 -10 125 33 185 96 27 28 58 56 69 62 12 6 71 11
|
||||
140 12 104 0 126 4 162 23 70 37 88 93 54 167 -46 102 -162 151 -301 128z"/>
|
||||
<path d="M4955 3331 c-46 -21 -106 -77 -227 -215 -117 -131 -132 -191 -66
|
||||
-256 89 -89 261 -41 354 100 35 52 61 67 144 85 139 29 180 62 180 146 0 57
|
||||
-18 80 -85 109 -47 20 -188 50 -234 50 -14 0 -44 -9 -66 -19z"/>
|
||||
<path d="M3003 4475 c-34 -15 -37 -23 -33 -95 5 -94 71 -212 180 -320 86 -87
|
||||
153 -125 201 -115 42 9 95 59 109 100 15 46 3 83 -59 177 -95 145 -182 220
|
||||
-290 252 -65 19 -67 19 -108 1z"/>
|
||||
<path d="M2341 4194 c-13 -9 -29 -32 -37 -50 -25 -60 -19 -78 47 -136 70 -60
|
||||
99 -106 133 -205 45 -131 81 -159 188 -147 83 9 102 29 95 98 -10 94 -53 189
|
||||
-118 260 -98 107 -222 196 -271 196 -8 0 -24 -7 -37 -16z"/>
|
||||
<path d="M1684 3875 c-26 -40 -14 -104 34 -177 56 -87 87 -157 116 -267 14
|
||||
-52 33 -102 41 -110 10 -10 33 -16 61 -16 40 0 50 5 79 36 83 91 38 290 -100
|
||||
438 -108 115 -195 151 -231 96z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 5.4 KiB |
@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
width="225"
|
||||
height="225"
|
||||
viewBox="0 0 225 225"
|
||||
sodipodi:docname="type_documentary.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
||||
<metadata
|
||||
id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
id="namedview4"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.0977778"
|
||||
inkscape:cx="69.686932"
|
||||
inkscape:cy="51.888857"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:22.32067108;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="rect821"
|
||||
width="189.09904"
|
||||
height="194.34268"
|
||||
x="19.142218"
|
||||
y="14.375268"
|
||||
ry="28.992929" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:8.39999962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 68.167373,163.98305 19.544491,-54.34322 25.264826,30.03178 41.47246,-63.877119 33.84534,85.805089"
|
||||
id="path825"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:12.19999981;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 17.161017,161.59958 H 212.60593"
|
||||
id="path823"
|
||||
inkscape:connector-curvature="0" />
|
||||
<circle
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:12.69999981;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path827"
|
||||
cx="58.633472"
|
||||
cy="56.25"
|
||||
r="19.544491" />
|
||||
</svg>
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,132 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Capa_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="100"
|
||||
height="100"
|
||||
viewBox="0 0 99.999999 99.999999"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="type_film-short.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
|
||||
id="metadata43"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs41" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
id="namedview39"
|
||||
showgrid="true"
|
||||
inkscape:zoom="4.7895499"
|
||||
inkscape:cx="73.393795"
|
||||
inkscape:cy="42.536152"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Capa_1"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid871" /></sodipodi:namedview>
|
||||
|
||||
<g
|
||||
id="g8"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g10"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g12"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g14"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g16"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g18"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g20"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g22"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g24"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g26"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g28"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g30"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g32"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g34"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g36"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.77471006;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
d="M 5 5 L 5 95 L 95 95 L 95 5 L 5 5 z M 40 27 L 60 27 L 60 33 L 40 33 L 40 27 z M 40 67 L 60 67 L 60 73 L 40 73 L 40 67 z "
|
||||
id="rect869" /><rect
|
||||
style="fill:#d5d5d5;fill-opacity:0.70980394;stroke:none;stroke-width:0.77471006;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="rect869-2"
|
||||
width="70"
|
||||
height="20"
|
||||
x="15"
|
||||
y="5"
|
||||
ry="0" /><rect
|
||||
style="fill:#d5d5d5;fill-opacity:0.70980394;stroke:none;stroke-width:0.94586086;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="rect869-2-3"
|
||||
width="70"
|
||||
height="29.81303"
|
||||
x="15"
|
||||
y="35"
|
||||
ry="0" /><rect
|
||||
style="fill:#d5d5d5;fill-opacity:0.70980394;stroke:none;stroke-width:0.77471006;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="rect869-2-7"
|
||||
width="70"
|
||||
height="20"
|
||||
x="15"
|
||||
y="75"
|
||||
ry="0" /></svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -1,118 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Capa_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="100"
|
||||
height="100"
|
||||
viewBox="0 0 99.999999 99.999999"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="type_film.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
|
||||
id="metadata43"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs41" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
id="namedview39"
|
||||
showgrid="true"
|
||||
inkscape:zoom="76.632798"
|
||||
inkscape:cx="15.14015"
|
||||
inkscape:cy="5.9693833"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Capa_1"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid871" /></sodipodi:namedview>
|
||||
|
||||
<g
|
||||
id="g8"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g10"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g12"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g14"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g16"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g18"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g20"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g22"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g24"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g26"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g28"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g30"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g32"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g34"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<g
|
||||
id="g36"
|
||||
transform="translate(0,-457.47101)">
|
||||
</g>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.77471006;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
d="M 3,5 V 95 H 16 V 85 H 84 V 95 H 97 V 5 H 84 V 15 H 16 V 5 Z m 4,2 h 5 v 8 H 7 Z m 81,0 h 5 v 8 H 88 Z M 7,20 h 5 v 8 H 7 Z m 9,0 H 84 V 80 H 16 Z m 72,0 h 5 v 8 H 88 Z M 7,33 h 5 v 8 H 7 Z m 81,0 h 5 v 8 H 88 Z M 7,46 h 5 v 8 H 7 Z m 81,0 h 5 v 8 H 88 Z M 7,59 h 5 v 8 H 7 Z m 81,0 h 5 v 8 H 88 Z M 7,72 h 5 v 8 H 7 Z m 81,0 h 5 v 8 H 88 Z M 7,85 h 5 v 8 H 7 Z m 81,0 h 5 v 8 h -5 z"
|
||||
id="rect869"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /><path
|
||||
style="fill:#dddddd;fill-opacity:0.67843137;stroke:none;stroke-width:1.34183729;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
d="M 16,5 V 15 H 84 V 5 Z m 0,15 V 80 H 84 V 20 Z m 0,65 V 95 H 84 V 85 Z"
|
||||
id="rect869-2-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccc" /></svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -1,84 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="100"
|
||||
height="100"
|
||||
viewBox="0 0 100 100"
|
||||
enable-background="new 0 0 612 792"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="type_one-man-show.svg"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
|
||||
id="metadata15"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs13" /><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
id="namedview11"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.7425131"
|
||||
inkscape:cx="53.136368"
|
||||
inkscape:cy="20.736479"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Layer_1" />
|
||||
<g
|
||||
id="g8"
|
||||
transform="matrix(0.16745942,0,0,0.17111299,-0.7543833,-17.546408)">
|
||||
<path
|
||||
d="m 250.576,444.206 c -6.72,-1.069 -13.312,-0.929 -19.757,1.501 C 149.234,476.476 91.05,555.361 91.05,647.579 c 0,5.51 4.468,9.978 9.978,9.978 h 411.356 c 5.51,0 9.978,-4.468 9.978,-9.978 0,-91.746 -57.589,-170.295 -138.517,-201.396 -5.753,-2.211 -11.624,-2.637 -17.6,-2.025 z"
|
||||
id="path2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccssssccc" />
|
||||
|
||||
<path
|
||||
d="m 428.313,323.066 8.053,-21.844 -41.488,-15.296 39.978,-108.437 -114.511,-42.217 -39.978,108.437 -41.488,-15.296 -8.053,21.844 z"
|
||||
id="path6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
</g>
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path825"
|
||||
cx="50.352142"
|
||||
cy="44.011974"
|
||||
rx="15.572829"
|
||||
ry="15.276203" /><ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path827"
|
||||
cx="44.19717"
|
||||
cy="39.859219"
|
||||
rx="3.7078164"
|
||||
ry="3.0404093" /><ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path829"
|
||||
cx="57.174526"
|
||||
cy="41.935596"
|
||||
rx="1.7055955"
|
||||
ry="2.0022209" /><path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 48.475092,62.720751 0.926955,2.940843 -1.325449,19.51173 3.034532,7.973073 2.71766,-8.101926 -2.573992,-19.420297 1.260658,-2.908793 -2.065856,-2.042716 z"
|
||||
id="path831"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" /></svg>
|
Before Width: | Height: | Size: 3.4 KiB |
@ -1,61 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M501.801,445.935h-18.359v-31.618c0-5.632-4.567-10.199-10.199-10.199h-10.08l-9.129-233.698l6.826-21.914h12.383
|
||||
c5.632,0,10.199-4.567,10.199-10.199V115.48h12.239c4.897,0,9.102-3.479,10.019-8.289c0.916-4.81-1.713-9.592-6.266-11.394
|
||||
L259.752,0.945c-2.41-0.955-5.094-0.955-7.506,0L12.565,95.798c-4.553,1.801-7.182,6.584-6.266,11.394
|
||||
c0.917,4.81,5.122,8.289,10.019,8.289h12.239v22.827c0,5.632,4.566,10.199,10.199,10.199h12.383l6.826,21.912l-9.128,233.699
|
||||
h-10.08c-5.633,0-10.199,4.567-10.199,10.199v31.617H10.199C4.566,445.934,0,450.501,0,456.133v45.438
|
||||
c0,5.632,4.566,10.199,10.199,10.199h491.602c5.632,0,10.199-4.567,10.199-10.199v-45.438
|
||||
C512,450.502,507.433,445.935,501.801,445.935z M48.956,128.109v-12.628h286.598c5.632,0,10.199-4.567,10.199-10.199
|
||||
s-4.567-10.199-10.199-10.199H69.808L256,21.398l207.216,82.005l-0.172,24.706H48.956z M411.43,179.262h22.536l8.784,224.858
|
||||
h-40.102L411.43,179.262z M405.901,148.508h33.594l-3.226,10.355h-27.142L405.901,148.508z M391.36,170.419l-9.128,233.699h-30.2
|
||||
l-9.129-233.698l6.826-21.914h34.806L391.36,170.419z M300.298,179.262h22.536l8.784,224.858h-40.103L300.298,179.262z
|
||||
M294.768,148.508h33.595l-3.226,10.355h-27.143L294.768,148.508z M231.771,170.419l6.826-21.912h34.806l6.826,21.914
|
||||
L271.1,404.119h-30.201v-0.001L231.771,170.419z M189.167,179.262h22.536l8.784,224.858h-40.103L189.167,179.262z
|
||||
M183.638,148.508h33.594l-3.226,10.355h-27.142L183.638,148.508z M169.099,170.419l-9.129,233.699h-30.201l-9.129-233.699
|
||||
l6.826-21.912h34.807L169.099,170.419z M78.034,179.262h22.536l8.784,224.858H69.251L78.034,179.262z M72.505,148.507h33.594
|
||||
l-3.226,10.355H75.731L72.505,148.507z M48.956,424.517h414.088v21.418H48.956V424.517z M491.602,491.374H20.398v-25.04h471.203
|
||||
V491.374z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M383.49,95.083h-9.179c-5.632,0-10.199,4.567-10.199,10.199c0,5.632,4.567,10.199,10.199,10.199h9.179
|
||||
c5.632,0,10.199-4.567,10.199-10.199C393.689,99.65,389.122,95.083,383.49,95.083z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.5 KiB |
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><g transform="translate(0.000000,511.000000) scale(0.100000,-0.100000)"><path d="M1916.9,4475c-63.3-8.4-179.4-40.1-257.4-69.6c-386.2-145.6-664.7-436.8-810.3-846.2l-59.1-168.8l-6.3-1470.8l-6.3-1472.9h504.3c489.6,0,510.7,2.1,671.1,54.9C3265.4,938.3,4447.1,2540,4799.5,4356.9l27.4,141.4l-1397-2.1C2663.9,4494,1982.3,4485.6,1916.9,4475z"/><path d="M5202.6,4346.3c147.7-774.5,466.4-1553.1,905.3-2211.5c542.3-814.6,1236.6-1399.1,1939.3-1633.3c160.4-52.8,181.5-54.9,668.9-54.9h504.4v1388.5c-2.1,1470.8-6.3,1574.2-103.4,1814.8c-145.6,363-438.9,637.3-835.7,778.7l-168.8,59.1l-1468.7,6.3l-1470.8,6.3L5202.6,4346.3z"/><path d="M4917.7,1250.6c-16.9-10.6-88.6-194.2-160.4-407.3l-130.8-386.2l-413.6-10.6c-365.1-8.4-415.7-14.8-455.8-50.6c-48.5-44.3-59.1-135.1-16.9-185.7c12.7-16.9,164.6-135.1,337.6-257.4c170.9-124.5,310.2-227.9,310.2-230c0-2.1-52.8-164.6-116.1-362.9c-63.3-196.3-116.1-388.3-116.1-426.3c0-73.8,61.2-132.9,137.2-132.9c23.2,0,192,107.6,373.5,240.5l331.3,242.7l331.3-242.7c183.6-132.9,352.4-240.5,377.7-240.5c76,0,137.2,59.1,137.2,132.9c0,38-52.8,225.8-116.1,415.7S5612-296.2,5612-289.9c0,8.4,139.3,118.2,312.3,242.7c170.9,122.4,322.9,240.6,337.6,257.4c44.3,57,29.6,145.6-29.6,192c-52.8,42.2-84.4,44.3-460,44.3l-403.1,2.1l-116.1,360.9c-63.3,198.4-132.9,384.1-154,411.5C5059.1,1271.7,4972.6,1284.4,4917.7,1250.6z"/><path d="M779.5-1070.7v-1179.6l280.7-8.5c261.7-6.3,287-10.5,420-73.9c160.4-76,325-219.5,411.5-356.6c33.8-50.6,65.4-92.8,71.7-92.8c6.3,0,23.2,23.2,33.8,48.5c54.9,118.2,263.8,310.2,424.2,388.3c154.1,76,170.9,80.2,411.5,88.6l251.1,6.3l-14.8,109.7c-42.2,320.8-217.3,873.6-379.8,1194.4C2505.7-579,2197.6-199.2,1914.8,14l-126.6,94.9h-504.3H779.5V-1070.7z"/><path d="M8085.2,14c-287-215.3-595.1-599.3-780.8-970.7c-162.5-329.2-327.1-848.3-373.5-1183.9l-14.8-109.7l251.1-8.5c227.9-6.3,261.7-12.7,390.4-73.9c158.3-73.9,325-217.3,411.5-356.6c33.8-50.6,65.4-92.8,71.7-92.8c6.3,0,23.2,23.2,33.8,48.5c54.9,118.2,263.8,310.2,424.2,388.3c156.2,78.1,164.6,80.2,441,86.5l280.7,8.5v1179.6V108.9h-504.4h-504.3L8085.2,14z"/><path d="M593.8-2632.3c-137.2-48.6-280.7-181.5-352.4-329.2c-101.3-208.9-120.3-329.2-130.8-837.8L100-4280.4h848.3h848.3l-10.6,481.1c-10.5,510.7-29.6,628.9-130.8,839.9c-73.9,151.9-230,293.3-371.4,333.4C1123.5-2577.4,741.5-2581.6,593.8-2632.3z"/><path d="M2619.6-2632.3c-137.2-48.6-280.7-181.5-352.4-329.2c-101.3-208.9-120.3-329.2-130.8-837.8l-10.5-481.1h848.3h848.3l-10.6,481.1c-10.6,510.7-29.6,628.9-130.8,839.9c-73.9,151.9-230,293.3-371.4,333.4C3149.3-2577.4,2767.4-2581.6,2619.6-2632.3z"/><path d="M4645.5-2632.3c-204.7-69.6-379.8-299.6-447.4-582.4c-12.7-57-29.5-320.8-35.9-584.6l-10.6-481.1H5000h848.3l-10.5,481.1c-10.5,510.7-29.6,628.9-130.8,839.9c-73.9,151.9-230,293.3-371.4,333.4C5175.1-2577.4,4793.2-2581.6,4645.5-2632.3z"/><path d="M6671.3-2632.3c-137.2-48.6-280.7-181.5-352.4-329.2c-101.3-208.9-120.3-329.2-130.8-837.8l-10.5-481.1h848.3h848.3l-10.5,481.1c-10.6,510.7-29.6,628.9-130.8,839.9c-73.9,151.9-230,293.3-371.4,333.4C7201-2577.4,6819-2581.6,6671.3-2632.3z"/><path d="M8697.2-2632.3c-137.2-48.6-280.7-181.5-352.4-329.2c-101.3-208.9-120.3-329.2-130.8-837.8l-10.6-481.1h848.3H9900l-10.6,481.1c-10.5,510.7-29.6,628.9-130.8,839.9c-73.9,151.9-230,293.3-371.4,333.4C9226.8-2577.4,8844.9-2581.6,8697.2-2632.3z"/></g></g>
|
||||
</svg>
|
Before Width: | Height: | Size: 3.6 KiB |
@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||
<g><g><path d="M837.3,816.4c26.2,120.4-104.5,146.5-162.1,130.8c-57.6-15.7-175-18.3-175-18.3s-117.8,2.6-175.3,18.3c-57.6,15.8-188.4-10.4-162.3-130.8C188.7,696.1,303.9,701.3,335.4,539c31.5-162.3,164.9-151.8,164.9-151.8S633.4,376.7,664.9,539C696.2,701.3,811.2,696,837.3,816.4z M621,376.6c70.9,20.5,149.1-35.5,174.9-124.9c25.8-89.4-10.7-178.4-81.5-198.8c-70.9-20.5-149.1,35.5-174.9,124.9C513.7,267.1,550.2,356.2,621,376.6z M914.7,344.1c-68.2-27.9-152,19.4-187.2,105.6c-35.2,86.2-8.4,178.6,59.9,206.4c68.2,27.8,152-19.4,187.2-105.6C1009.7,464.2,982.9,371.9,914.7,344.1z M378.9,376.6c70.9-20.5,107.3-109.5,81.5-198.8C434.6,88.4,356.2,32.5,285.5,52.9C214.7,73.4,178.2,162.4,204,251.8C229.8,341.1,308,397.1,378.9,376.6z M212.7,656c68.2-27.9,95-120.3,59.9-206.4c-35.2-86.1-119-133.4-187.2-105.6c-68.2,27.9-95,120.3-59.9,206.4C60.6,636.6,144.4,683.9,212.7,656z"/></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.4 KiB |
@ -1,82 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="100"
|
||||
height="100"
|
||||
viewBox="0 0 100 100"
|
||||
version="1.1"
|
||||
id="svg857"
|
||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
||||
sodipodi:docname="type_tv-show.svg">
|
||||
<defs
|
||||
id="defs851" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9195959"
|
||||
inkscape:cx="43.300441"
|
||||
inkscape:cy="51.246657"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
units="px"
|
||||
inkscape:window-width="1918"
|
||||
inkscape:window-height="1038"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid5105" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata854">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-270.54167)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#00001d;stroke-width:6.53200006;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="rect5107"
|
||||
width="80"
|
||||
height="55.000015"
|
||||
x="10"
|
||||
y="285.54166"
|
||||
ry="5.0000134"
|
||||
rx="5" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:7.70200014;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 24.873731,353.44586 h 50"
|
||||
id="path5109"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 40,300.54167 v 20 l 20,-10 z"
|
||||
id="path5111"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 2.6 KiB |