pandora/pandora/config.0xdb.jsonc

910 lines
30 KiB
Text

/*
Pan.do/ra Settings
You can edit this file.
*/
{
"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": {
"canAddItems": {"staff": true, "admin": true},
"canDownloadVideo": {"guest": -1, "member": -1, "friend": -1, "staff": -1, "admin": -1},
"canEditAnnotations": {"staff": true, "admin": true},
"canEditDocuments": {"staff": true, "admin": true},
"canEditEvents": {"staff": true, "admin": true},
"canEditFeaturedEdits": {"staff": true, "admin": true},
"canEditFeaturedLists": {"staff": true, "admin": true},
"canEditFeaturedTexts": {"staff": true, "admin": true},
"canEditMedia": {"staff": true, "admin": true},
"canEditMetadata": {"staff": true, "admin": true},
"canEditPlaces": {"staff": true, "admin": true},
"canEditRightsLevel": {"staff": true, "admin": true},
"canEditSitePages": {"staff": true, "admin": true},
"canEditUsers": {"admin": true},
"canExportAnnotations": {},
"canImportAnnotations": {},
"canManageDocuments": {"staff": true, "admin": true},
"canManagePlacesAndEvents": {"staff": true, "admin": true},
"canManageTitlesAndNames": {"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},
"canReadText": {"guest": 0, "member": 0, "friend": 1, "staff": 1, "admin": 1},
"canRemoveItems": {"admin": true},
"canSeeAccessed": {"staff": true, "admin": true},
"canSeeDebugMenu": {"staff": true, "admin": true},
"canSeeExtraItemViews": {"staff": true, "admin": true},
"canSeeMedia": {"staff": true, "admin": true},
"canSeeItem": {"guest": 3, "member": 3, "friend": 4, "staff": 4, "admin": 4},
"canSeeSize": {"friend": true, "staff": true, "admin": true},
"canSeeSoftwareVersion": {"staff": true, "admin": true},
"canSendMail": {"staff": true, "admin": true}
},
/*
clipKeys are the properties that clips can be 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"],
"flags": true,
"help": [
{"id": "help", "title": "Help"},
{"id": "accounts", "title": "Accounts"},
{"id": "navigation", "title": "Navigation"},
{"id": "views", "title": "Views"},
{"id": "timelines", "title": "Timelines"},
{"id": "clips", "title": "Clips"},
{"id": "maps", "title": "Maps"},
{"id": "calendars", "title": "Calendars"},
{"id": "find", "title": "Find"},
{"id": "filters", "title": "Filters"},
{"id": "lists", "title": "Lists"},
{"id": "player", "title": "Player"},
{"id": "editor", "title": "Editor"},
{"id": "documents", "title": "Documents"},
{"id": "edits", "title": "Edits"},
{"id": "texts", "title": "Texts"},
{"id": "embeds", "title": "Embeds"}
],
/*
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
autocompleteSort: Sort order of autocomplete suggestions
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)
secondaryId: If true, loading /value will redirect to the item
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,
"autocompleteSort": [{"key": "likes", "operator": "-"}],
"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": "color",
"title": "Color",
"type": ["string"],
"columnWidth": 120,
"filter": true,
"sort": true
},
{
"id": "sound",
"title": "Sound",
"type": ["string"],
"columnWidth": 120,
"filter": true,
"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": "productionCompany",
"title": "Production Company",
"type": ["string"],
"autocomplete": true,
"columnWidth": 180,
"filter": true,
"find": true,
"sort": 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": "currency", "args": ["$"]},
"sort": true
},
{
"id": "gross",
"title": "Gross",
"type": "integer",
"columnWidth": 90,
"format": {"type": "currency", "args": ["$"]},
"sort": true
},
{
"id": "profit",
"title": "Profit",
"type": "integer",
"columnWidth": 90,
"format": {"type": "currency", "args": ["$"]},
"sort": true
},
{
"id": "votes",
"title": "Mainstream Score",
"type": "float",
"columnWidth": 60,
"default": 0,
"format": {"type": "ColorPercent", "args": [1, true]},
"sort": true
},
{
"id": "likes",
"title": "Arthouse Score",
"type": "float",
"columnWidth": 60,
"default": 0,
"format": {"type": "ColorPercent", "args": [1, true]},
"sort": true
},
{
"id": "notes",
"title": "Notes",
"type": "text",
"capability": "canEditMetadata"
},
{
"id": "id",
"title": "ID",
"type": "string",
"columnWidth": 90,
"sort": true
},
{
"id": "oxdbId",
"title": "0xDB ID",
"type": "string",
"columnWidth": 90,
"sort": true
},
{
"id": "subtitles",
"title": "Subtitles",
"type": "layer",
"find": true
},
{
"id": "duration",
"title": "Duration",
"type": "time",
"columnWidth": 90,
"format": {"type": "duration", "args": []},
"sort": true
},
{
"id": "resolution",
"title": "Resolution",
"type": ["integer"],
"capability": "canSeeMedia",
"columnWidth": 90,
"format": {"type": "resolution", "args": ["px"]},
"sort": true
},
{
"id": "aspectratio",
"title": "Aspect Ratio",
"type": "float",
"columnWidth": 90,
"format": {"type": "unit", "args": [":1", 3]},
"sort": true
},
{
"id": "pixels",
"title": "Pixels",
"type": "integer",
"capability": "canSeeMedia",
"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": "canSeeMedia",
"columnWidth": 60,
"format": {"type": "value", "args": ["bps"]},
"sort": true
},
{
"id": "parts",
"title": "Number of Parts",
"type": "integer",
"capability": "canSeeMedia",
"columnWidth": 60,
"sort": true
},
{
"id": "numberoffiles",
"title": "Number of Files",
"type": "integer",
"capability": "canSeeMedia",
"columnWidth": 60,
"sort": true,
"value": {"key": "files", "type": "length"}
},
{
"id": "filename",
"title": "Filename",
"type": ["string"],
"capability": "canSeeMedia",
"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,
"format": {"type": "number", "args": []},
"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"
},
"itemRequiresVideo": true,
"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": "media", "title": "Media"}
],
"language": "en",
"languages": ["ar", "el", "en", "hi"],
// fixme: should be renamed to annotationLayers
"layers": [
{
"id": "privatenotes",
"title": "Private Notes",
"canAddAnnotations": {"member": true, "friend": true, "staff": true, "admin": true},
"item": "Private Note",
"overlap": true,
"private": true,
"showInfo": true,
"type": "text"
},
{
"id": "publicnotes",
"title": "Public Notes",
"canAddAnnotations": {"member": true, "friend": true, "staff": true, "admin": true},
"item": "Public 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
},
"menuExtras": [
"user",
//"persona",
//"locale",
"reload"
],
"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": "&"}}
],
"posters": {
"ratio": 0.625
},
"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]}
],
"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"
},
"https": true,
"id": "0xdb",
"name": "0xDB",
"sendReferrer": false,
"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"}
],
"sites": [
{"name": "Indiancine.ma", "url": "indiancine.ma", "https": true},
{"name": "Pad.ma", "url": "pad.ma", "https": true}
],
"textRightsLevels": [
{"name": "Public", "color": [128, 255, 128]},
{"name": "Private", "color": [255, 128, 128]}
],
"themes": ["oxlight", "oxmedium", "oxdark"],
"timelines": [
{"id": "antialias", "title": "Anti-Alias"},
{"id": "slitscan", "title": "Slit-Scan"},
{"id": "keyframes", "title": "Keyframes"},
{"id": "audio", "title": "Waveform"}
],
"totals": [
{"id": "items"},
{"id": "runtime"},
{"id": "files", "capability": "canSeeMedia"},
{"id": "duration", "capability": "canSeeMedia"},
{"id": "size", "capability": "canSeeMedia"},
{"id": "pixels"}
],
"tv": {
"showLogo": false
},
"user": {
"level": "guest",
"newsletter": true,
"ui": {
"annotationsCalendarSize": 128,
"annotationsMapSize": 128,
"annotationsRange": "all",
"annotationsSize": 256,
"annotationsSort": "position",
"calendarFind": "",
"calendarSelection": "",
"clipColumns": 2,
"columns": {
"Colors": {
"columns": ["title", "director", "country", "year", "hue", "saturation", "brightness"],
"columnWidth": {}
}
},
"document": "",
"documents": {},
"documentSize": 256,
"documentsSelection": {},
"documentsSort": [{"key": "name", "operator": "+"}],
"documentsView": "grid",
"edit": "",
"edits": {},
"editSelection": [],
"editSort": [
{"key": "index", "operator": "+"},
{"key": "year", "operator": "+"},
{"key": "director", "operator": "+"},
{"key": "title", "operator": "+"},
{"key": "position", "operator": "+"},
{"key": "duration", "operator": "+"}
],
"editView": "list",
"embedSize": 256,
"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,
"help": "",
"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": "+"},
{"key": "year", "operator": "-"},
{"key": "title", "operator": "+"}
],
"listView": "grid",
"lists": {},
"locale": "en",
"mapFind": "",
"mapSelection": "",
"onload": "",
"page": "",
"part": {
"api": "",
"documents": "",
"faq": "",
"help": "",
"news": "",
"preferences": "",
"tv": ""
},
"section": "items",
"sequenceMode": "shape",
"sequenceSort": [{"key": "director", "operator": "+"}],
"showAdvancedEmbedOptions": false,
"showAnnotations": true,
"showAnnotationsCalendar": true,
"showAnnotationsMap": true,
"showBrowser": true,
"showCalendarControls": true, // fixme: should be false
"showClips": true,
"showDocument": true,
"showFilters": true,
"showIconBrowser": false,
"showInfo": true,
"showLayers": {
"privatenotes": true,
"publicnotes": true,
"subtitles": true
},
"showMapControls": false,
"showMapLabels": false,
"showFolder": {
"edits": {
"personal": true,
"favorite": true,
"featured": true
},
"items": {
"personal": true,
"favorite": true,
"featured": true,
"volumes": true
},
"texts": {
"personal": true,
"favorite": true,
"featured": true
}
},
"showReflections": true,
"showSidebar": true,
"showSitePosters": false,
"showTimeline": true,
"sidebarSize": 256,
"text": "",
"texts": {},
"theme": "oxdark",
"updateAdvancedFindResults": false,
"videoLoop": false,
"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": {
"torrent": true,
"formats": ["webm", "mp4"],
// fixme: this should be named "ratio" or "defaultRatio",
// as it also applies to clip lists (on load)
"previewRatio": 1.7777777778,
"resolutions": [96]
}
}