{"id":1600,"date":"2014-06-06T06:13:54","date_gmt":"2014-06-06T06:13:54","guid":{"rendered":"http:\/\/www.arnoldbiffna.com\/?p=533"},"modified":"2025-09-24T14:35:05","modified_gmt":"2025-09-24T14:35:05","slug":"video-list-using-angular-js","status":"publish","type":"post","link":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/","title":{"rendered":"Video List Using Angular JS"},"content":{"rendered":"<div style=\"width: 510px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1600-1\" width=\"510\" height=\"294\" poster=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogimages\/videolist.jpg\" preload=\"auto\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogvideo\/videolist.mp4?_=1\" \/><source type=\"video\/webm\" src=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogvideo\/videolist.webm?_=1\" \/><a href=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogvideo\/videolist.mp4\">https:\/\/d3od4vl78dd97d.cloudfront.net\/blogvideo\/videolist.mp4<\/a><\/video><\/div>\n<p>Something I&#8217;ve been meaning to do is add a video gallery or list of videos contained in this blog. Rather than install a WordPress plugin, I decided to build one on my own using the popular JavaScript library, <a href=\"https:\/\/angularjs.org\" target=\"_blank\" rel=\"noopener\">Angular JS<\/a>, along with HTML, CSS, JavaScript, and a <a href=\"http:\/\/www.shadowbox-js.com\/\" target=\"_blank\" rel=\"noopener\">Lightbox<\/a> library for showing videos. What I like about Angular for my <em>Video List<\/em> is that it has some functionality I would normally use PHP for, like dynamically drawing rows for each record of data. In this code screen shot\u00a0below, the\u00a0top half\u00a0is the header row that contains the list filter and sortable title, while\u00a0the bottom half is where all the other rows repeat for the data in the model.<\/p>\n<pre class=\"brush:html\">&lt;!-- this row has the filter input text and sortable title --&gt;\n&lt;tr&gt;\n\n    &lt;td&gt;filter: &lt;input type=\"text\"  ng-model=\"searchText\" \/&gt; &lt;\/td&gt;\n    &lt;td&gt;blog link  &lt;a href=\"\" ng-click=\"predicate = 'title'; \n    reverse=false\"&gt;(a-z)&lt;\/a&gt;\n        &lt;a href=\"\" ng-click=\"predicate = '-title'; reverse=false\"&gt;(z-a)&lt;\/a&gt;&lt;\/td&gt;\n    &lt;td&gt;dimensions width x height&lt;\/td&gt;\n    &lt;td&gt;video link&lt;\/td&gt;\n&lt;\/tr&gt;\n&lt;!-- this is where the rows repeat according to the data --&gt;\n\n&lt;tr  ng-repeat=\"vid in video_list | filter:searchText | orderBy:predicate:reverse\"&gt;\n\n    &lt;td&gt;&lt;img src=\"{{video_thumb_prefix+vid.url_thumb}}\"\/&gt; &lt;\/td&gt;\n    &lt;td&gt;&lt;a href=\"{{vid.blog}}\"\n    target=\"blog\"&gt;&lt;h1&gt;{{vid.title}}&lt;\/h1&gt;&lt;\/a&gt;&lt;\/td&gt;\n    &lt;td&gt;{{vid.vid_width + ' x ' +vid.vid_height}}&lt;\/td&gt;\n    &lt;td&gt;\n        &lt;a href=\"{{video_media_prefix+vid.url_media}}\"\n        rel=\"shadowbox;width={{vid.vid_width}};height={{vid.vid_height}}\"\n        title=\"{{vid.title}}\"&gt;{{vid.url_media}}&lt;\/a&gt;\n    &lt;\/td&gt;\n&lt;\/tr&gt;\n<\/pre>\n<p>Notice the <em>ng-repeat<\/em> &#8211; thats the magic right there for looping through data. The other great feature is that the data is live. As you enter text in the filter, the rows render to match what you typed. Using Angular instead of a server side language enabled me to host it on my CDN as a static set of files (vs dynamic). It&#8217;s all .html, .css, .js, and .mp4 videos &#8211; no PHP. <a href=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/work\/videogallery\/v1\/source.zip\">Download the source<\/a> to see how it all ties together with the data:<\/p>\n<pre class=\"brush:javascript\"> \n   $scope.video_media_prefix=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogvideo\/\";\n    $scope.video_thumb_prefix=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/blogpreviews\/\";\n    $scope.predicate = '-title';\n    $scope.video_list=[\n\n        {\n            id:0,\n            url_media:'tron1.mp4',\n            url_thumb:'tron1.jpg',\n            title:'Tron',\n            vid_width:640,\n            vid_height:480,\n            blog:'http:\/\/www.arnoldbiffna.com\/2014\/05\/20\/tron\/'\n        },\n        {\n            id:1,\n            url_media:'radionbt.mp4',\n            url_thumb:'radionbt.jpg',\n            title:'Radio Disney Next Best Thing',\n            vid_width:508,\n            vid_height:384,\n            blog:'http:\/\/www.arnoldbiffna.com\/2014\/05\/21\/radio-disney-n-b-t\/'\n        },\n        {\n            id:2,\n            url_media:'jonasbrothers.mp4',\n            url_thumb:'jonasbrothers.jpg',\n            title:'The Jonas Brothers',\n            vid_width:511,\n            vid_height:322,\n            blog:'http:\/\/www.arnoldbiffna.com\/2014\/05\/21\/jonas-brothers\/'\n        },\n        {\n            id:3,\n            url_media:'pepsirefresh.mp4',\n            url_thumb:'pepsirefresh.jpg',\n            title:'Pepsi Super Bowl',\n            vid_width:509,\n            vid_height:354,\n            blog:'http:\/\/www.arnoldbiffna.com\/2014\/05\/20\/pepsi-super-bowl\/'\n        },\n        {\n            id:4,\n            url_media:'pandajamad.mp4',\n            url_thumb:'pandajamad.jpg',\n            title:'Panda Jam Ads',\n            vid_width:640,\n            vid_height:480,\n            blog:'http:\/\/www.arnoldbiffna.com\/2014\/05\/14\/panda-jam-ads\/'\n        }\n\n    ];\n\n\n});<\/pre>\n<ul>\n<li><a href=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/work\/videogallery\/v2\/index.html\" target=\"_blank\" rel=\"noopener\">try it<\/a><\/li>\n<li><a href=\"https:\/\/d3od4vl78dd97d.cloudfront.net\/work\/videogallery\/v2\/source.zip\">download source<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Something I&#8217;ve been meaning to do is add a video gallery or list of videos contained in this blog. Rather than install a WordPress plugin, I decided to build one on my own using the popular JavaScript library, Angular JS, along with HTML, CSS, JavaScript, and a Lightbox library for showing videos. What I like &hellip; <a href=\"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Video List Using Angular JS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1869,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[13,26],"class_list":["post-1600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-html-css","tag-angular","tag-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Video List Using Angular JS - Arnold Biffna Portfolio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Video List Using Angular JS - Arnold Biffna Portfolio\" \/>\n<meta property=\"og:description\" content=\"Something I&#8217;ve been meaning to do is add a video gallery or list of videos contained in this blog. Rather than install a WordPress plugin, I decided to build one on my own using the popular JavaScript library, Angular JS, along with HTML, CSS, JavaScript, and a Lightbox library for showing videos. What I like &hellip; Continue reading &quot;Video List Using Angular JS&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Arnold Biffna Portfolio\" \/>\n<meta property=\"article:published_time\" content=\"2014-06-06T06:13:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-24T14:35:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"200\" \/>\n\t<meta property=\"og:image:height\" content=\"115\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Arnold Biffna\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arnold Biffna\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/\"},\"author\":{\"name\":\"Arnold Biffna\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#\\\/schema\\\/person\\\/248c0dc4cc332f12f120d4734ca0ae8f\"},\"headline\":\"Video List Using Angular JS\",\"datePublished\":\"2014-06-06T06:13:54+00:00\",\"dateModified\":\"2025-09-24T14:35:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/\"},\"wordCount\":259,\"publisher\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#\\\/schema\\\/person\\\/248c0dc4cc332f12f120d4734ca0ae8f\"},\"image\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/videolist.jpg\",\"keywords\":[\"Angular\",\"JavaScript\"],\"articleSection\":[\"JavaScript HTML CSS\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/\",\"url\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/\",\"name\":\"Video List Using Angular JS - Arnold Biffna Portfolio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/videolist.jpg\",\"datePublished\":\"2014-06-06T06:13:54+00:00\",\"dateModified\":\"2025-09-24T14:35:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#primaryimage\",\"url\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/videolist.jpg\",\"contentUrl\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/videolist.jpg\",\"width\":200,\"height\":115},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/2014\\\/06\\\/06\\\/video-list-using-angular-js\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Video List Using Angular JS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#website\",\"url\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/\",\"name\":\"Arnold Biffna Portfolio\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#\\\/schema\\\/person\\\/248c0dc4cc332f12f120d4734ca0ae8f\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/#\\\/schema\\\/person\\\/248c0dc4cc332f12f120d4734ca0ae8f\",\"name\":\"Arnold Biffna\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/profile.jpg\",\"url\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/profile.jpg\",\"contentUrl\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/profile.jpg\",\"width\":960,\"height\":960,\"caption\":\"Arnold Biffna\"},\"logo\":{\"@id\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/profile.jpg\"},\"sameAs\":[\"http:\\\/\\\/arnoldbiffna.com\"],\"url\":\"https:\\\/\\\/portfolio.arnoldbiffna.com\\\/index.php\\\/author\\\/arnoldbiffna-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Video List Using Angular JS - Arnold Biffna Portfolio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/","og_locale":"en_US","og_type":"article","og_title":"Video List Using Angular JS - Arnold Biffna Portfolio","og_description":"Something I&#8217;ve been meaning to do is add a video gallery or list of videos contained in this blog. Rather than install a WordPress plugin, I decided to build one on my own using the popular JavaScript library, Angular JS, along with HTML, CSS, JavaScript, and a Lightbox library for showing videos. What I like &hellip; Continue reading \"Video List Using Angular JS\"","og_url":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/","og_site_name":"Arnold Biffna Portfolio","article_published_time":"2014-06-06T06:13:54+00:00","article_modified_time":"2025-09-24T14:35:05+00:00","og_image":[{"width":200,"height":115,"url":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg","type":"image\/jpeg"}],"author":"Arnold Biffna","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Arnold Biffna","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#article","isPartOf":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/"},"author":{"name":"Arnold Biffna","@id":"https:\/\/portfolio.arnoldbiffna.com\/#\/schema\/person\/248c0dc4cc332f12f120d4734ca0ae8f"},"headline":"Video List Using Angular JS","datePublished":"2014-06-06T06:13:54+00:00","dateModified":"2025-09-24T14:35:05+00:00","mainEntityOfPage":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/"},"wordCount":259,"publisher":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/#\/schema\/person\/248c0dc4cc332f12f120d4734ca0ae8f"},"image":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#primaryimage"},"thumbnailUrl":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg","keywords":["Angular","JavaScript"],"articleSection":["JavaScript HTML CSS"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/","url":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/","name":"Video List Using Angular JS - Arnold Biffna Portfolio","isPartOf":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#primaryimage"},"image":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#primaryimage"},"thumbnailUrl":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg","datePublished":"2014-06-06T06:13:54+00:00","dateModified":"2025-09-24T14:35:05+00:00","breadcrumb":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#primaryimage","url":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg","contentUrl":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2024\/03\/videolist.jpg","width":200,"height":115},{"@type":"BreadcrumbList","@id":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/2014\/06\/06\/video-list-using-angular-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/portfolio.arnoldbiffna.com\/"},{"@type":"ListItem","position":2,"name":"Video List Using Angular JS"}]},{"@type":"WebSite","@id":"https:\/\/portfolio.arnoldbiffna.com\/#website","url":"https:\/\/portfolio.arnoldbiffna.com\/","name":"Arnold Biffna Portfolio","description":"","publisher":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/#\/schema\/person\/248c0dc4cc332f12f120d4734ca0ae8f"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/portfolio.arnoldbiffna.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/portfolio.arnoldbiffna.com\/#\/schema\/person\/248c0dc4cc332f12f120d4734ca0ae8f","name":"Arnold Biffna","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2025\/04\/profile.jpg","url":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2025\/04\/profile.jpg","contentUrl":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2025\/04\/profile.jpg","width":960,"height":960,"caption":"Arnold Biffna"},"logo":{"@id":"https:\/\/portfolio.arnoldbiffna.com\/wp-content\/uploads\/2025\/04\/profile.jpg"},"sameAs":["http:\/\/arnoldbiffna.com"],"url":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/author\/arnoldbiffna-2\/"}]}},"_links":{"self":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/1600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/comments?post=1600"}],"version-history":[{"count":1,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/1600\/revisions"}],"predecessor-version":[{"id":1806,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/posts\/1600\/revisions\/1806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/media\/1869"}],"wp:attachment":[{"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/media?parent=1600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/categories?post=1600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portfolio.arnoldbiffna.com\/index.php\/wp-json\/wp\/v2\/tags?post=1600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}