pandora/pandora/config.0xdb.jsonc

777 lines
26 KiB
Text

/*
Pan.do/ra Settings
You can edit this file.
*/
{
"additionalSort": [
{"key": "director", "operator": "+"},
{"key": "year", "operator": "-"},
{"key": "title", "operator": "+"}
],
"annotations": {
"showUsers": false
},
"cantPlay": {
"icon": "NoCopyright",
"link": "/rights",
"text": "This part of this video is not available in<br/>your part of your country. Sorry for that."
},
/*
Capabilities are per user level.
They can either be general:
{level: true} means a user of that level has the capability)
or related to items:
{level: x} means a user of that level has the capability
for items of a rights level up to and including x
*/
"capabilities": {
"canDeleteItems": {"admin": true},
"canDownloadVideo": {"guest": -1, "member": -1, "friend": -1, "staff": -1, "admin": -1},
"canEditAnnotations": {"staff": true, "admin": true},
"canEditEvents": {"staff": true, "admin": true},
"canEditFeaturedLists": {"staff": true, "admin": true},
"canEditMetadata": {"staff": true, "admin": true},
"canEditPlaces": {"staff": true, "admin": true},
"canEditSitePages": {"staff": true, "admin": true},
"canEditUsers": {"admin": true},
"canImportAnnotations": {},
"canManageTitlesAndNames": {"staff": true, "admin": true},
"canManagePlacesAndEvents": {"staff": true, "admin": true},
"canManageUsers": {"staff": true, "admin": true},
"canPlayClips": {"guest": 2, "member": 2, "friend": 4, "staff": 4, "admin": 4},
"canPlayVideo": {"guest": 1, "member": 1, "friend": 4, "staff": 4, "admin": 4},
"canSeeAccessed": {"staff": true, "admin": true},
"canSeeDebugMenu": {"staff": true, "admin": true},
"canSeeExtraItemViews": {"staff": true, "admin": true},
"canSeeFiles": {"staff": true, "admin": true},
"canSeeItem": {"guest": 3, "member": 3, "friend": 4, "staff": 4, "admin": 4},
"canSeeSize": {"friend": true, "staff": true, "admin": true},
"canSendMail": {"staff": true, "admin": true},
"canUploadVideo": {"guest": false, "member": false, "staff": true, "admin": true}
},
/*
clipKeys are the properties that clips can by sorted by.
If sortOperator is not specified, it will be + for strings and - for numbers.
*/
"clipKeys": [
{"id": "text", "title": "Text", "type": "string"},
{"id": "position", "title": "Position", "type": "float", "sortOperator": "+"},
{"id": "duration", "title": "Duration", "type": "float"},
{"id": "hue", "title": "Hue", "type": "float", "sortOperator": "+"},
{"id": "saturation", "title": "Saturation", "type": "float"},
{"id": "lightness", "title": "Lightness", "type": "float"},
{"id": "volume", "title": "Volume", "type": "float"}
],
/*
clipLayers is the ordered list of public layers that will appear as the
text of clips. Excluding a layer from this list means it will not be
included in find annotations.
*/
"clipLayers": ["subtitles"],
// fixme: either this, or filter: true in itemKeys, but not both
"filters": [
{"id": "director", "title": "Director", "type": "string"},
{"id": "country", "title": "Country", "type": "string"},
{"id": "year", "title": "Year", "type": "integer"},
{"id": "language", "title": "Language", "type": "string"},
{"id": "genre", "title": "Genre", "type": "string"},
{"id": "writer", "title": "Writer", "type": "string"},
{"id": "producer", "title": "Producer", "type": "string"},
{"id": "cinematographer", "title": "Cinematographer", "type": "string"},
{"id": "editor", "title": "Editor", "type": "string"},
{"id": "actor", "title": "Actor", "type": "string"},
{"id": "keyword", "title": "Keyword", "type": "string"}
],
/*
An itemKey must have the following properties:
id: The id of the key (as known by the server)
title: The title of the key (as displayed by the client)
type: text, string, float, integer, or array of any of these
and can have any of the following properties:
autocomplete: If true, find element will autocomplete
autocompleteSortKey: The key that suggestions will be sorted by
capability: A capability required to see this key
columnRequired: If true, the column can't be removed
columnWidth: Default column width in px
filter: If true, one can filter results by this key
find: If true, this key will appear as a find option
format: {type: "...", args: [...]}, for special formatting
(Ox.formatType(args) will be called)
sort: If true, one can sort results by this key
sortOperator: sort operator (+, -), in case it differs from the
default for the key's type (+ for strings, - for numbers)
sortType: special sort type (title, person)
value: {key: "...", type: "..."}, for keys that are derived
from other keys (like number of actors), or "capability"
*/
"itemKeys": [
{
"id": "*",
"title": "All",
"type": "text",
"find": true
},
{
"id": "title",
"title": "Title",
"type": "string",
"additionalSort": [{"key": "year", "operator": "-"}, {"key": "director", "operator": "+"}],
"autocomplete": true,
"autocompleteSortKey": "votes",
"columnRequired": true,
"columnWidth": 180,
"find": true,
"sort": true,
"sortType": "title"
},
{
"id": "director",
"title": "Director",
"type": ["string"],
"additionalSort": [{"key": "year", "operator": "-"}, {"key": "title", "operator": "-"}],
"autocomplete": true,
"columnRequired": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true,
"sortType": "person"
},
{
"id": "country",
"title": "Country",
"type": ["string"],
"autocomplete": true,
"columnWidth": 120,
"filter": true,
"find": true,
"sort": true
},
{
"id": "year",
"title": "Year",
"type": "year",
"additionalSort": [{"key": "director", "operator": "+"}, {"key": "title", "operator": "+"}],
"autocomplete": true,
"columnWidth": 60,
"filter": true,
"find": true,
"sort": true
},
{
"id": "language",
"title": "Language",
"type": ["string"],
"autocomplete": true,
"columnWidth": 120,
"filter": true,
"find": true,
"sort": true
},
{
"id": "runtime",
"title": "Runtime",
"type": "time",
"columnWidth": 60,
"format": {"type": "duration", "args": [0, "short"]},
"sort": true
},
{
"id": "writer",
"title": "Writer",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true,
"sortType": "person"
},
{
"id": "producer",
"title": "Producer",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true,
"sortType": "person"
},
{
"id": "cinematographer",
"title": "Cinematographer",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true,
"sortType": "person"
},
{
"id": "editor",
"title": "Editor",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": true,
"sortType": "person"
},
{
"id": "actor",
"title": "Actor",
"type": ["string"],
"autocomplete": true,
"filter": true,
"find": true,
"sortType": "person"
},
{
"id": "numberofactors",
"title": "Number of Actors",
"type": "integer",
"columnWidth": 60,
"sort": true,
"value": {"key": "actor", "type": "length"}
},
{
"id": "character",
"title": "Character",
"type": ["string"],
"autocomplete": true,
"find": true,
"sortType": "string"
},
{
"id": "name",
"title": "Name",
"type": ["string"],
"autocomplete": true,
"find": true
},
{
"id": "series",
"title": "TV Series",
"type": "boolean"
},
{
"id": "genre",
"title": "Genre",
"type": ["string"],
"autocomplete": true,
"columnWidth": 120,
"filter": true,
"find": true,
"sort": true
},
{
"id": "keyword",
"title": "Keyword",
"type": ["string"],
"autocomplete": true,
"filter": true,
"find": true
},
{
"id": "summary",
"title": "Summary",
"type": "text",
"find": true
},
{
"id": "trivia",
"title": "Trivia",
"type": ["text"]
},
{
"id": "releasedate",
"title": "Release Date",
"type": "date",
"columnWidth": 120,
"format": {"type": "date", "args": ["%a, %b %e, %Y"]},
"sort": true
},
{
"id": "budget",
"title": "Budget",
"type": "integer",
"columnWidth": 90,
"format": {"type": "unit", "args": ["$"]},
"sort": true
},
{
"id": "gross",
"title": "Gross",
"type": "integer",
"columnWidth": 90,
"format": {"type": "unit", "args": ["$"]},
"sort": true
},
{
"id": "profit",
"title": "Profit",
"type": "integer",
"columnWidth": 90,
"format": {"type": "unit", "args": ["$"]},
"sort": true
},
{
"id": "rating",
"title": "Rating",
"type": "float",
"columnWidth": 60,
"format": {"type": "unit", "args": ["%"]},
"sort": true
},
{
"id": "votes",
"title": "Votes",
"type": "float",
"columnWidth": 60,
"format": {"type": "unit", "args": ["%", 2]},
"sort": true
},
{
"id": "id",
"title": "ID",
"type": "string",
"columnWidth": 90,
"sort": true
},
{
"id": "subtitles",
"title": "Subtitles",
"type": "layer",
"find": true
},
{
"id": "duration",
"title": "Duration",
"type": "float",
"columnWidth": 90,
"format": {"type": "duration", "args": []},
"sort": true
},
{
"id": "resolution",
"title": "Resolution",
"type": ["integer"],
"capability": "canSeeFiles",
"columnWidth": 90,
"format": {"type": "resolution", "args": ["px"]},
"sort": true
},
{
"id": "aspectratio",
"title": "Aspect Ratio",
"type": "float",
"columnWidth": 90,
"format": {"type": "unit", "args": [":1"]},
"sort": true
},
{
"id": "pixels",
"title": "Pixels",
"type": "integer",
"capability": "canSeeFiles",
"columnWidth": 90,
"format": {"type": "value", "args": ["px"]},
"sort": true
},
{
"id": "hue",
"title": "Hue",
"type": "float",
"columnWidth": 90,
"format": {"type": "color", "args": ["hue"]},
"sort": true,
"sortOperator": "+"
},
{
"id": "saturation",
"title": "Saturation",
"type": "float",
"columnWidth": 90,
"format": {"type": "color", "args": ["saturation"]},
"sort": true
},
{
"id": "lightness",
"title": "Lightness",
"type": "float",
"columnWidth": 90,
"format": {"type": "color", "args": ["lightness"]},
"sort": true
},
{
"id": "volume",
"title": "Volume",
"type": "float",
"columnWidth": 60,
"format": {"type": "color", "args": ["lightness"]},
"sort": true
},
{
"id": "numberofcuts",
"title": "Number of Cuts",
"type": "integer",
"columnWidth": 60,
"format": {"type": "number", "args": []},
"sort": true,
"value": {"key": "cuts", "type": "length"}
},
{
"id": "cutsperminute",
"title": "Cuts per Minute",
"type": "float",
"columnWidth": 60,
"format": {"type": "number", "args": [3]},
"sort": true,
"value": {"key": "cuts", "type": "lengthperminute"}
},
{
"id": "words",
"title": "Number of Words",
"type": "integer",
"columnWidth": 60,
"format": {"type": "number", "args": []},
"sort": true,
"value": {"layer": "subtitles", "type": "words"}
},
{
"id": "wordsperminute",
"title": "Words per Minute",
"type": "float",
"columnWidth": 60,
"format": {"type": "number", "args": [3]},
"sort": true,
"value": {"layer": "subtitles", "type": "wordsperminute"}
},
{
"id": "size",
"title": "Size",
"type": "integer",
"capability": "canSeeSize",
"columnWidth": 60,
"format": {"type": "value", "args": ["B"]},
"sort": true
},
{
"id": "bitrate",
"title": "Bitrate",
"type": "integer",
"capability": "canSeeFiles",
"columnWidth": 60,
"format": {"type": "value", "args": ["bps"]},
"sort": true
},
{
"id": "parts",
"title": "Number of Parts",
"type": "integer",
"capability": "canSeeFiles",
"columnWidth": 60,
"sort": true
},
{
"id": "numberoffiles",
"title": "Number of Files",
"type": "integer",
"capability": "canSeeFiles",
"columnWidth": 60,
"sort": true,
"value": {"key": "files", "type": "length"}
},
{
"id": "filename",
"title": "Filename",
"type": ["string"],
"capability": "canSeeFiles",
"find": true
},
{
"id": "created",
"title": "Date Created",
"type": "date",
"columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "modified",
"title": "Last Modified",
"type": "date",
"columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "accessed",
"title": "Last Accessed",
"type": "date",
"capability": "canSeeAccessed",
"columnWidth": 150,
"format": {"type": "date", "args": ["%Y-%m-%d %H:%M:%S"]},
"sort": true
},
{
"id": "timesaccessed",
"title": "Times Accessed",
"type": "integer",
"capability": "canSeeAccessed",
"columnWidth": 60,
"sort": true
},
{
"id": "rightslevel",
"title": "Rights Level",
"type": "enum",
"columnWidth": 90,
"format": {"type": "ColorLevel", "args": [
["Public", "Relaxed", "Regular", "Restricted", "Private"]
]},
"sort": true,
"sortOperator": "+",
"values": ["Public", "Relaxed", "Regular", "Restricted", "Private", "Unknown"]
},
{
"id": "canplayvideo",
"title": "Can Play Video",
"type": "boolean",
"value": "capability"
},
{
"id": "canplayclips",
"title": "Can Play Clips",
"type": "boolean",
"value": "capability"
},
{
"id": "random",
"title": "Random",
"type": "integer",
"sort": true
}
],
/*
itemName specifies how items are being referred to.
Anything excessively long may cause layout errors.
*/
"itemName": {
"singular": "Movie",
"plural": "Movies"
},
"itemViews": [
{"id": "info", "title": "Info"},
{"id": "player", "title": "Player"},
{"id": "editor", "title": "Editor"},
{"id": "timeline", "title": "Timeline"},
{"id": "clips", "title": "Clips"},
{"id": "map", "title": "Map"},
{"id": "calendar", "title": "Calendar"},
{"id": "data", "title": "Data"},
{"id": "files", "title": "Files"}
],
// fixme: should be renamed to annotationLayers
"layers": [
{
"id": "privatenotes",
"title": "Private Notes",
"canAddAnnotations": {"member": true, "friend": true, "staff": true, "admin": true},
"item": "Note",
"overlap": true,
"private": true,
"showInfo": true,
"type": "text"
},
{
"id": "publicnotes",
"title": "Public Notes",
"canAddAnnotations": {"member": true, "friend": true, "staff": true, "admin": true},
"item": "Note",
"overlap": true,
"showInfo": true,
"type": "text"
},
{
"id": "subtitles",
"title": "Subtitles",
"canAddAnnotations": {"staff": true, "admin": true},
"hasEvents": true,
"hasPlaces": true,
"isSubtitles": true,
"item": "Subtitle",
"type": "text"
}
],
"listViews": [
{"id": "list", "title": "as List"},
{"id": "grid", "title": "as Grid"},
//{"id": "info", "title": "with Info"},
{"id": "timelines", "title": "with Timelines"},
{"id": "clips", "title": "with Clips"},
//{"id": "maps", "title": "with Maps"},
//{"id": "calendars", "title": "with Calendars"},
{"id": "clip", "title": "as Clips"},
//{"id": "video", "title": "as Video"},
{"id": "map", "title": "on Map"},
{"id": "calendar", "title": "on Calendar"}
],
"media": {
"importPosters": true,
"importFrames": true
},
"personalLists": [
{"title": "Favorites"},
{"title": "1960s", "query": {"conditions": [{"key": "year", "value": ["1960", "1970"], "operator": "="}], "operator": "&"}}
//{"title": "Movies with Video", "query": {"conditions": [{"key": "canplayvideo", "value": "true", "operator": "="}], "operator": "&"}},
//{"title": "Movies with Clips", "query": {"conditions": [{"key": "canplayclips", "value": "true", "operator": "="}], "operator": "&"}}
],
"rightsLevel": {"member": 4, "staff": 3, "admin": 2},
"rightsLevels": [
{"name": "Public", "color": [128, 255, 128]},
{"name": "Relaxed", "color": [192, 255, 128]},
{"name": "Regular", "color": [255, 255, 128]},
{"name": "Restricted", "color": [255, 192, 128]},
{"name": "Private", "color": [255, 128, 128]}
],
"sendReferrer": false,
"site": {
"description": "0xDB is an experimental - and to some degree imaginary - movie database. It is intended to help us rethink the future of cinema on the Internet, just as it tries to push the boundaries of what we understand as \"web applications\". What 0xDB proposes is an entirely new approach to visualizing and navigating moving images, and we hope that it can serve as a point of reference for individuals and institutions who are dealing with large collections of films.",
// FIXME: "from" and "to" would be more intuitive as keys here
"email": {
// E-mail address in contact form (to)
"contact": "0xDB@0xDB.org",
"footer": "-- \n0xDB - https://0xDB.org",
"prefix": "0xDB Newsletter -",
// E-mail address uses by the system (from)
"system": "0xDB@0xDB.org"
},
"id": "0xdb",
"name": "0xDB",
"url": "0xDB.org",
"videoprefix": ""
},
"sitePages": [
{"id": "about", "title": "About"},
{"id": "news", "title": "News"},
// {"id": "tour", "title": "Take a Tour"},
{"id": "faq", "title": "Frequently Asked Questions"},
{"id": "terms", "title": "Terms of Service"},
{"id": "rights", "title": "Rights Management"},
{"id": "contact", "title": "Contact"}
],
"timelines": [
{"id": "antialias", "title": "Anti-Alias"},
{"id": "slitscan", "title": "Slit-Scan"},
{"id": "keyframes", "title": "Key Frames"},
{"id": "audio", "title": "Audio"}
],
"totals": [
{"id": "items"},
{"id": "runtime"},
{"id": "files", "admin": true},
{"id": "duration", "admin": true},
{"id": "size", "admin": true},
{"id": "pixels"}
],
"tv": {
"showLogo": false
},
"user": {
"level": "guest",
"newsletter": true,
"ui": {
"annotationsFont": "small",
"annotationsRange": "all",
"annotationsSize": 256,
"annotationsSort": "position",
"clipsColumns": 2,
"columns": {
"Colors": {
"columns": ["title", "director", "country", "year", "hue", "saturation", "brightness"],
"columnWidth": {}
}
},
"filters": [
{"id": "director", "sort": [{"key": "items", "operator": "-"}]},
{"id": "country", "sort": [{"key": "items", "operator": "-"}]},
{"id": "year", "sort": [{"key": "name", "operator": "-"}]},
{"id": "language", "sort": [{"key": "items", "operator": "-"}]},
{"id": "genre", "sort": [{"key": "items", "operator": "-"}]}
],
"filtersSize": 176,
"find": {"conditions": [], "operator": "&"},
"followPlayer": true,
"icons": "posters",
"infoIconSize": 256,
"item": "",
"itemFind": "",
"itemSort": [{"key": "position", "operator": "+"}],
"itemView": "info",
"listColumns": ["title", "director", "country", "year", "language", "runtime", "genre"],
"listColumnWidth": {},
"listSelection": [],
"listSort": [{"key": "director", "operator": "+"}],
"listView": "grid",
"lists": {},
"mapFind": "",
"mapSelection": "",
"page": "",
"section": "items",
"sequenceMode": "shape",
"sequenceSort": [{"key": "director", "operator": "+"}],
"showAnnotations": true,
"showBrowser": true,
"showCalendarControls": true, // fixme: should be false
"showFilters": true,
"showFlags": true, // fixme: this should be a site preference
"showHome": true,
"showIconBrowser": false,
"showInfo": true,
"showLayers": {
"privatenotes": true,
"publicnotes": true,
"subtitles": true
},
"showMapControls": false,
"showMapLabels": false,
"showFolder": {
"items": {
"personal": true,
"favorite": true,
"featured": true,
"volumes": true
}
},
"showSidebar": true,
"showSitePosters": false,
"showTimeline": true,
"sidebarSize": 256,
"theme": "modern",
"videoMuted": false,
"videoPoints": {},
"videoResolution": 96,
"videoScale": "fit",
"videoSize": "small",
"videoSubtitles": true,
"videoTimeline": "antialias",
"videoView": "player",
"videoVolume": 1
},
"username": "",
"volumes": []
},
// fixme: this should include colors
"userLevels": ["guest", "member", "friend", "staff", "admin"],
"video": {
"download": false,
"formats": ["webm", "mp4"],
"previewRatio": 1.7777777778,
"resolutions": [96]
}
}