PageSourceSearch

https://docs.brightspot.com/assets/js/cf3562d1.9a447d93.js

js brightspot.com collected 2026-10-02 05:53:51 UTC 9,873 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunktemp=self.webpackChunktemp||[]).push([["10806"],{389408:function(e,t,i){i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>a,frontMatter:()=>c,metadata:()=>d,toc:()=>l});var d=i(694771),o=i(785893),n=i(250065);let c={slug:"/developing/brightcove"},r="Brightcove",s={},l=[{value:"Dependencies",id:"dependencies",level:2},{value:"Installation",id:"installation",level:2},{value:"API reference",id:"api-reference",level:2},{value:"<code>com.psddev.brightcove.BrightcoveDatabase</code>",id:"compsddevbrightcovebrightcovedatabase",level:3},{value:"<code>com.psddev.brightcove.BrightcoveVideoExternalItem</code>",id:"compsddevbrightcovebrightcovevideoexternalitem",level:3},{value:"Configuration",id:"configuration",level:2},{value:"Extending the plugin",id:"extending-the-plugin",level:2}];function h(e){let t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components},{Dependency:i}=t;return i||function(e,t){throw Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Dependency",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"brightcove",children:"Brightcove"})}),"\n",(0,o.jsxs)(t.p,{children:["The ",(0,o.jsx)(t.code,{children:"brightcove"})," module lets editors search and import videos from a Brightcove Video Cloud account through Brightspot's federated search, and can incrementally import new and updated videos on a schedule."]}),"\n",(0,o.jsx)(t.h2,{id:"dependencies",children:"Dependencies"}),"\n",(0,o.jsxs)(t.p,{children:["Depends on ",(0,o.jsx)(t.a,{href:"/docs/plugins/db-http/",children:(0,o.jsx)(t.code,{children:"db-http"})})," and the Brightcove CMS API v1 (",(0,o.jsx)(t.code,{children:"cms.api.brightcove.com"}),"), authenticated with an OAuth2 client-credentials token from ",(0,o.jsx)(t.code,{children:"oauth.brightcove.com"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"installation",children:"Installation"}),"\n",(0,o.jsx)(i,{groupId:"com.brightspot.dbhttp",artifactId:"brightcove",version:"auto"}),"\n",(0,o.jsx)(t.h2,{id:"api-reference",children:"API reference"}),"\n",(0,o.jsx)(t.h3,{id:"compsddevbrightcovebrightcovedatabase",children:(0,o.jsx)(t.code,{children:"com.psddev.brightcove.BrightcoveDatabase"})}),"\n",(0,o.jsxs)(t.p,{children:["Extends ",(0,o.jsx)(t.code,{children:"HttpDatabase"}),". Builds a Brightcove CMS query string from the editor's keywords and an update-date range filter, and caches both search results and individual video lookups for five minutes to reduce API calls. Detail lookups are batched in groups of up to 10 video Ids, matching a limit in Brightcove's API."]}),"\n",(0,o.jsx)(t.h3,{id:"compsddevbrightcovebrightcovevideoexternalitem",children:(0,o.jsx)(t.code,{children:"com.psddev.brightcove.BrightcoveVideoExternalItem"})}),"\n",(0,o.jsxs)(t.p,{children:["Extends ",(0,o.jsx)(t.code,{children:"ExternalItem"}),", displayed as ",(0,o.jsx)(t.strong,{children:"Brightcove Video"}),"."]}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Field"}),(0,o.jsx)(t.th,{children:"Type"}),(0,o.jsx)(t.th,{children:"Description"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"previewUrl"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"String"})}),(0,o.jsx)(t.td,{children:"A Brightcove Player embed URL used to preview the video in the CMS."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"brightcoveVideo"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"BrightcoveVideo"})}),(0,o.jsx)(t.td,{children:"The embedded Brightcove video metadata (see below)."})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"updateDate"})}),(0,o.jsx)(t.td,{children:(0,o.jsx)(t.code,{children:"Date"})}),(0,o.jsx)(t.td,{children:"When the video was last updated in Brightcove. Filterable in search."})]})]})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"com.psddev.brightcove.BrightcoveVideo"})," mirrors the Brightcove CMS API's video object, including ",(0,o.jsx)(t.code,{children:"brightcoveId"}),", ",(0,o.jsx)(t.code,{children:"brightcoveName"}),", ",(0,o.jsx)(t.code,{children:"description"}),", ",(0,o.jsx)(t.code,{children:"longDescription"}),", ",(0,o.jsx)(t.code,{children:"tags"}),", ",(0,o.jsx)(t.code,{children:"customFields"}),", ",(0,o.jsx)(t.code,{children:"cuePoints"}),", ",(0,o.jsx)(t.code,{children:"duration"}),", ",(0,o.jsx)(t.code,{children:"brightcoveState"})," (",(0,o.jsx)(t.code,{children:"ACTIVE"}),"/",(0,o.jsx)(t.code,{children:"INACTIVE"}),"), ",(0,o.jsx)(t.code,{children:"publishedAt"}),", ",(0,o.jsx)(t.code,{children:"createdAt"}),", ",(0,o.jsx)(t.code,{children:"updatedAt"}),", ",(0,o.jsx)(t.code,{children:"schedule"}),", ",(0,o.jsx)(t.code,{children:"textTracks"}),", ",(0,o.jsx)(t.code,{children:"folderId"}),", ",(0,o.jsx)(t.code,{children:"sharing"}),", and Brightspot-only ",(0,o.jsx)(t.code,{children:"poster"}),"/",(0,o.jsx)(t.code,{children:"thumbnail"})," (",(0,o.jsx)(t.code,{children:"StorageItem"}),")."]}),"\n",(0,o.jsx)(t.h2,{id:"configuration",children:"Configuration"}),"\n",(0,o.jsxs)(t.p,{children:["Each Brightcove account is configured as a ",(0,o.jsx)(t.code,{children:"com.psddev.brightcove.BrightcoveSettings"})," record (",(0,o.jsx)(t.code,{children:"accountId"}),", ",(0,o.jsx)(t.code,{children:"playerId"}),", ",(0,o.jsx)(t.code,{children:"clientId"}),", ",(0,o.jsx)(t.code,{children:"clientSecret"}),", ",(0,o.jsx)(t.code,{children:"taskHostName"}),", ",(0,o.jsx)(t.code,{children:"importEnabled"}),", ",(0,o.jsx)(t.code,{children:"fullImportEnabled"}),", ",(0,o.jsx)(t.code,{children:"debugEnabled"}),"), collected into a ",(0,o.jsx)(t.code,{children:"Set<BrightcoveSettings>"})," on ",(0,o.jsx)(t.code,{children:"BrightcoveSiteSettingsModification"}),", shown under Site Settings > Integrations > ",(0,o.jsx)(t.strong,{children:"Brightcove"}),". A site can configure multiple Brightcove accounts."]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["When ",(0,o.jsx)(t.code,{children:"importEnabled"})," is on, ",(0,o.jsx)(t.code,{children:"BrightcoveImportTask"})," periodically imports new and updated videos in the background rather than waiting for an editor to search for them. ",(0,o.jsx)(t.code,{children:"taskHostName"})," designates which application host runs the import so it doesn't run redundantly on every instance."]})}),"\n",(0,o.jsxs)(t.p,{children:["The Brightcove Player script is injected into the CMS automatically so imported videos preview inline using the account's configured ",(0,o.jsx)(t.code,{children:"playerId"}),"."]}),"\n",(0,o.jsx)(t.h2,{id:"extending-the-plugin",children:"Extending the plugin"}),"\n",(0,o.jsx)(t.p,{children:"The module doesn't ship a content type for imported videos, and supports extension in both directions:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Import."})," Extend ",(0,o.jsx)(t.code,{children:"AbstractBrightcoveVideoImporter<T>"})," and implement ",(0,o.jsx)(t.code,{children:"doImport"})," to map a Brightcove video into a local content type, for use with scheduled import. Call ",(0,o.jsx)(t.code,{children:"setInitiatedByImport"})," before saving so ",(0,o.jsx)(t.code,{children:"beforeSave"}),"/",(0,o.jsx)(t.code,{children:"afterSave"})," hooks can detect that the update came from an import."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Export."})," Extend ",(0,o.jsx)(t.code,{children:"AbstractBrightcoveVideoExporter<T>"})," and implement ",(0,o.jsx)(t.code,{children:"doExport"})," to push a local content object's changes back to Brightcove."]}),"\n"]}),"\n",(0,o.jsx)(t.admonition,{type:"note",children:(0,o.jsxs)(t.p,{children:["For sites that still maintain the legacy ",(0,o.jsx)(t.code,{children:"Video"}),"/",(0,o.jsx)(t.code,{children:"BrightcoveVideoProvider"})," content type, ",(0,o.jsx)(t.code,{children:"BrightcoveVideoToVideoConverter"}),' converts a search result directly into that type, including auto-tagging from Brightcove\'s own tags. Videos imported this way also get the "Force Read/Write" manual-refresh widget, not just videos uploaded individually.']})})]})}function a(e={}){let{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},250065:function(e,t,i){i.d(t,{Z:()=>r,a:()=>c});var d=i(667294);let o={},n=d.createContext(o);function c(e){let t=d.useContext(n);return d.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),d.createElement(n.Provider,{value:t},e.children)}},694771:function(e){e.exports=JSON.parse('{"id":"developing/brightcove","title":"Brightcove","description":"The brightcove module lets editors search and import videos from a Brightcove Video Cloud account through Brightspot\'s federated search, and can incrementally import new and updated videos on a schedule.","source":"@site/.docusaurus/remote-books/public/plugins/plugins/perfectsense/platform-db-http/docs/03-developing/brightcove.md","sourceDirName":"03-developing","slug":"/developing/brightcove","permalink":"/docs/plugins/db-http/developing/brightcove","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"slug":"/developing/brightcove"},"sidebar":"plugins","previous":{"title":"Box","permalink":"/docs/plugins/db-http/developing/box"},"next":{"title":"Dropbox","permalink":"/docs/plugins/db-http/developing/dropbox"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.