Upload multiple contents at once (bulk upload)

Modified on Tue, 19 Dec, 2023 at 11:36 AM

Bulk allows you to import content, Smartlists and Castings with their metadata (titles, descriptions, keywords, castings, etc.) all at once.


TABLE OF CONTENTS




How to upload in bulk from your back office

How to do a bulk import from the back office

Go to the menu CONTENT MANAGEMENT > Imports (the menu is not activated for all users, so if you don't see the menu in your back office, ask your sales contact).


To do this, you need to create JSON files in accordance with the structure described in the Object Structure chapter of this page (limited to a maximum of 25 contents per bulk).


The content created is common to all your projects within your organisation. Smartlists and Castings remain specific to the selected project.


The table summarising the imports you have made is organised into 4 columns:


Status :

GREEN > Completed

ORANGE > Created or in progress

RED > Failed 

Reference: Copy and paste the reference for bulk-related exchanges with the support team.

Project name: The name you have chosen.

Date: Import creation date.


Then click on the button Create a new import

The file will first be analysed to determine the number of contents and/or castings.

 

Once you have your .JSON file ready (as explained above) click on Upload a JSON file


Once your file is ready to be processed, simply click on Start ingest and the import will begin: the content and castings will be created and added automatically to your platform.


Note that the information in red in the To Do section is not blocking, but indicative.


Finally, you can download a report (a CSV file) for more information via the Download report button


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

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.

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.

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.



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"
}
  • 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.