This page shows how to use the asset database to download and assign a poster to a DVR asset.
var operationManager = null; var selectedAsset = 0; var assetIds = new Array(); function onLoad(){ // Add the npruntime TOI/JS plugin var html = document.createElement("embed"); html.type = "application/x-motorola-toi"; html.setAttribute("hidden", "true"); document.body.appendChild(html); operationManager = toi.assetManagerService.getAssetOperationManager(); operationManager.addEventListener(operationManager.ON_OPERATION_RESULT, OnOperationResult); document.addEventListener("keydown", keyPress, false); //Refresh asset list GetAllAssets(); } function updateHighlight() { for (var i=0; i < assetIds.length; i++) { document.getElementById(i).style["border"] = "1px solid black"; } document.getElementById(selectedAsset).style["border"] = "2px solid red"; } function keyPress(event) { if (event.keyIdentifier == "Right") { selectedAsset++; } if (event.keyIdentifier == "Left") { selectedAsset--; } if (event.keyIdentifier == "Enter" || event.keyIdentifier == "Accept") { AssignPoster(assetIds[selectedAsset]); GetAllAssets(); } updateHighlight(); } //Asset search finished, refresh asset list. function OnOperationResult(event) { alert("Operation finished: " + event.operation.userData); if (event.operation.userData == "GetAllAssets") { var result = toi.assetManagerService.getAssetInfoResult(event.operation.id, 17); var assetList = "<h1>Assets:</h1>"; assetList += "<p>Navigate with left and right, assign poster with OK/Enter.</p>"; assetList += "<table><tr>"; for (var i = 0; i < result.objects.length; i++){ var assetId = result.objects[i].assetId; assetIds[i] = assetId; var posterAssetId = toi.assetManagerService.getProperties(assetId, [toi.assetManagerService.PROPERTY_INFO_COVER])[0].value; var posterUri = ""; if (posterAssetId) { posterUri = toi.assetManagerService.getProperties(posterAssetId, [toi.assetManagerService.PROPERTY_SYSTEM_PLAYBACKURI])[0].value; } assetList += "<td id='" + i + "' style='border: 1px solid black; margin: 1em;'>" assetList += "<b>" + assetId + "</b><br/><img src='" + posterUri + "'/>"; assetList += "</td>"; } assetList += "</tr></table>"; document.getElementById("assetlist").innerHTML = assetList; updateHighlight(); } // remove operation when done with it operationManager.releaseOperation(event.operation.id); } //Get all assets linked to the given directory. Filter out only DVR assets. function GetAllAssets() { var opId = operationManager.createOperation("GetAllAssets"); isPvr = toi.statics.ToiAssetManagerServiceQueryCondition.create(toi.assetManagerService.PROPERTY_SYSTEM_TYPE, toi.assetManagerService.EQUALS, toi.assetManagerService.ASSET_PVR + ""); condList = [isPvr]; propIds = new Array(); sortConditions = new Array(); toi.assetManagerService.runQuery(opId, condList, propIds, sortConditions); } //Import a new asset object, return an asset ID function ImportAsset(uri) { var assetId = toi.assetManagerService.createAsset(toi.assetManagerService.ASSET_IMAGE); var opId = this.operationManager.createOperation("ImportAsset"); toi.assetManagerService.importAsset(opId, assetId, uri, toi.assetManagerService.IMPORT_POLICY_MOVE); return assetId; } //Fetch a file, synchronously. It will be written to the specified location. function DownloadFile(uri, storageLocation) { var request = new XMLHttpRequest(); request.overrideMimeType('text/plain; charset=x-user-defined'); request.setStorageLocation(storageLocation); request.open('GET', uri, false); request.send(null); if (request.status == 200) { return request.responseText; } else { alert("XMLHttpRequest was " + request.status); } } //Download a poster, create a poster asset, and assign it to the given asset. function AssignPoster(assetId) { var storageFile = toi.storageService.createFile("poster", toi.consts.ToiStorageFile.FILE_TYPE_TEMPORARY); var binaryData = DownloadFile("1.jpg", storageFile.getUri()); alert("Image has been downloaded to " + storageFile.getUri()); posterAssetId = ImportAsset(storageFile.getUri()); var properties = [{id: toi.assetManagerService.PROPERTY_INFO_COVER, value: posterAssetId}, {id: toi.assetManagerService.PROPERTY_INFO_CHILDREN, value: posterAssetId}]; toi.assetManagerService.setProperties(assetId, properties); }