The bulk upload allows you to import multiple metadata and content in your OKAST platform at once.
To do that you need to provide a .JSON format that follows the structure hereafter.
Objects defined are common for all your projects within your organization.
Objects Structure
For simplicity, the unicity of object and dependency between objects are made using object’s LABEL or key as a unique key.
- LANGUAGE SUPPORT
- Each import file is having a default language defined globally for all objects: “default_language”
- Each object has several language support (for name, description, biography… but not label which is unique) via translations with ALPHA2 country code (check https://www.iban.com/country-codes):
"translations" : [ { "language": "fr", // LIST OF PARAMETERS FOR THIS OBJECT }, { "language": "en", // LIST OF PARAMETERS FOR THIS OBJECT } ]
- PICTURES
- Objects can support up 4 pictures size per translation. Each file is expected to be available on S3 bucket. Support format: jpeg / png
"pictures": { "16_6_s3_location": "s3://my_bucket_url/my_picture_16_6.jpg", "16_9_s3_location": "s3://my_bucket_url//my_picture_16_9.jpg", "4_3_s3_location": "s3://my_bucket_url//my_picture_4_3.jpg", "1_1_s3_location": "s3://my_bucket_url//my_picture_1_1.jpg" }
- COPYRIGHT
- key : text (255)
- CASTING
- label: text (255)
- slug: text (255)
- name: text (255)
- biography (optional): markdown (2046)
- pictures (optional): 1_1
- MEDIA
- label: text (255)
- slug: text (255)
- media_S3_location (optional): path on S3 bucket
- type: audio / video
- storage : hosted / live
- geoblock_mode (optional): disabled, allow, deny
- media_countries (for geoblock – optional): array of ALPHA2 country code
- temporal_restriction (optional)
- begin_date: yyyy-mm-dd hh:mm:ss
- end_date: yyyy-mm-dd hh:mm:ss
- commercial_restriction(optional)
- begin_date: yyyy-mm-dd hh:mm:ss
- end_date: yyyy-mm-dd hh:mm:ss
- duration (in seconds – optional) : integer
- isan_code (optional): ISAN 0000-0001-8947-0000-8-0000-0000-D
- isrc_code (optional): ISRC FR-Z11-92-20350
- eidr_code (optional): 10.5240/3202-A3F9-0937-E9DC-7B21-9
- custom_id (optional): text (255)
- production_date (optional): yyyy-mm-dd
- publication_date (optional): yyyy-mm-dd
- copyright: text (255) // must match existing copyright key
- title: text (255)
- description (optional): markdown (2046)
- short_description (optional): markdown (2046)
- pictures (optional) : 1_1, 16_9, 16_6, 3_4
- media_castings (optional): array of type casting label // must match existing casting label
- type // actor, director, author, producer
- the castings will be sorted in the order of the list of the different castings present in the list
- genre (optional): text from this list, warning: case sensitive
- action, advanced, music, men, show, tutorial, 2t, science, natural, other, polonaise, documentary, intermediate, society, animation, 3t, human, sport, mazurka, horror, discovery, history, arts, adventure, culture, waltz, comedy, baby, film, 6t, scienceFiction, affairs, drame, performance, 4t, coda, ragtime, interview, thriller, beginner, adult
- category (optional): text from this list, warning: case sensitive
- techsolution, ballet, dancejazz, class, repertoire, series, barre, hiphop, film, collection, character, music, bonus, shortProgram, trailer, contemporary, others, project
- keywords (optional): text array (255)
- S3 CREDENTIALS (OPTIONAL):
- s3_credentials
- s3_access_key
- s3_secret_key
- s3_bucket_url
- s3_bucket_region: as defined per AWS
- SMARTLISTS
- – uuid: uuid of the smartlist(s) to which you want to associate the content
- label: internal title of the smartlist
- action: “linked” to associate to the smartlist or “undo” to unassociate the content from the smartlist
- OFFERS
- uuid: uuid of the offer(s) to which you want to associate the content
- label: internal title of the offer
- action: “linked” to associate with the offer, or “undo” to unlink the content of the offer
Example
{ "default_language": "FR", "castings": [ { "label": "John Doe", "slug": "john-doe" "translations" : [ { "language": "fr", "name": "John Doe", "biography": "Personne inconnue" }, { "language": "en", "name": "John Doe", "biography": "unknown person", "pictures": { "1_1_s3_location": "s3://my_bucket_url/johndoe_1_1.jpg" } } ] }, { "label": "Mickey", "translations" : [ { "language": "fr", "name": "Mickey", "biography": "Une souris célèbre" } ] } ], "copyright": [ { "key": "OKAST" } ], "medias": [ { "label": "Great movie", "media_s3_location": "s3://my_bucket_url/my_great_movie.mp4", "type": "video", "storage": "hosted", "geoblock_mode": "allow", "media_countries": ["FR", "GB"], "temporal_restriction": { "begin_date": "2018-01-23 00:00:00", "end_date": "2018-01-25 00:00:00" }, "duration": 900, "isan_code": "ISAN 0000-0001-8947-0000-8-0000-0000-D", "isrc_code": "ISRC FR-Z11-92-20350", "eidr_code": "10.5240/3202-A3F9-0937-E9DC-7B21-9", "custom_id": "xxxx", "production_date": "2042-01-01", "publication_date": "2042-01-01", "copyright": "OKAST", "translations": [ { "language": "fr", "title": "Un grand film", "description": "Un grand film avec de grands acteurs", "short_description": "Un grand film", "pictures": { "16_6_s3_location": "s3://my_bucket_url/my_great_movie_16_6.jpg", "16_9_s3_location": "s3://my_bucket_url/my_great_movie_16_9.jpg", "4_3_s3_location": "s3://my_bucket_url/my_great_movie_4_3.jpg", "1_1_s3_location": "s3://my_bucket_url/my_great_movie_1_1.jpg" } }, { "language": "en", "title": "A great movie", "description": "A great movie with great actors", "short_description": "A great movie" } ], "media_castings" : { "actor": [ "John Doe", "Mickey" ], "director": [ "John Doe" ], "producer": [ "John Doe" ], "author": [ "Mickey" ] }, "genre": "action", "category": "series", "keywords": ["pop", "yoga", "animation"] } ], "s3_credentials": { "s3_access_key": "lksjdfkljqslkdjlksqjd", "s3_secret_key": "lkjhdfkjhfksjfsd", "s3_bucket_url": "s3://my_bucket_url", "s3_bucket_region": "eu-west-3" } }
CURRENT LIMITATIONS:
- subtitles are not available;
- mp3 audio files must not contain a cover, otherwise, the encoding won’t start;
- maximum 25 Contents can be ingested per imported JSON file, if a file includes more than that then import is cancelled.
- multi audio tracks not available.
How to upload in bulk from your back office
Go to Content Management menu > Imports (if you don’t see the menu on your back office, ask your sales representative).
Then click on the button “Create a new import” :
Once you have your .JSON file ready (as explained above) click on “Upload a JSON file” :
First, the file will be parsed and the system will calculate how many contents and/or credits are detected.
If there is any error, the system will show where if you click on the button “Details” :
Once your file is ready to ingest, just click on “Start Ingest” and the import will start: content and credits will be created and added automatically on your platform. You can download a report (a CSV file) to have more info via the “Download Report” button.
Error Management
Duplicates: If your JSON file includes Contents or Credits already ingested in your catalog (detection is based on the filed “Label”) then it will be ignored during the ingestion process.
Update of bulk imports
Following a bulk import, you can have an update by clicking on the pencil next to the import you want and then by clicking on “Download an import”.
The downloaded JSON file will give a state of the objects previously imported into the database on your back office.
You have the possibility to update this file by changing all the information previously entered. Moreover, changing the “linked” by “undo” allows you to remove the link previously made to an offer or a smartlist.
By uploading the modified file again, it will modify the objects in the database.
For any questions, please contact us.