{"id":7135,"date":"2018-06-02T20:23:27","date_gmt":"2018-06-02T19:23:27","guid":{"rendered":"http:\/\/johnjohnston.info\/blog\/?p=7135"},"modified":"2025-12-06T20:38:39","modified_gmt":"2025-12-06T20:38:39","slug":"downloading-media-from-wordpress-using-applescript","status":"publish","type":"post","link":"https:\/\/johnjohnston.info\/blog\/downloading-media-from-wordpress-using-applescript\/","title":{"rendered":"Downloading Media from WordPress using AppleScript"},"content":{"rendered":"<p>I got a request from a teacher who wanted to download a years worth of images from a Glow Blog (for end of year slideshow).<\/p>\n<p>Although there are plugins that can do this these are not available on Glow Blogs. I was stumped apart from going through the site and downloading them 1 by 1. But after a wee bit of thinking I though I&#8217;d try using the REST API via AppleScript.<\/p>\n<p>The REST API will list in JSON format the media:<\/p>\n<p><a href=\"http:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/media\/\">http:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/media\/<\/a><\/p>\n<p>Look at that in FireFox for a pretty view.<\/p>\n<p><a href=\"http:\/\/www.mousedown.net\/mouseware\/JSONHelper.html\">JSON Helper<\/a> is<\/p>\n<blockquote><p>an agent (or scriptable background application) which allows you to do useful things with JSON directly from AppleScript.<\/p><\/blockquote>\n<p>So I can grab the list of media from a site in JSON format use appleScript to download all the files.<\/p>\n<p>The script I wrote is not great, you can&#8217;t download from a particular year, but a quick look at the JSON will help in working out how many files to download.<\/p>\n<p>I am sure there are more efficient ways to do this and I&#8217;ve only tested on a couple of site, but it seems to do the trick and might be useful again sometime.<\/p>\n<p><!--more  Continue for the script: --><\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist89928989\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-downloadwordpressmedia-scpt\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-applescript  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"downloadWordPressMedia.scpt content, created by troutcolor on 05:43PM on June 02, 2018.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"downloadWordPressMedia.scpt\">\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC1\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC2\" class=\"blob-code blob-code-inner js-file-line\">&#8211;needs json helper for apple script Free from mac app store<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC3\" class=\"blob-code blob-code-inner js-file-line\">&#8211;https:\/\/itunes.apple.com\/gb\/app\/json-helper-for-applescript\/id453114608?mt=12<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC4\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC5\" class=\"blob-code blob-code-inner js-file-line\">set downloadfolder to POSIX path of (choose folder with prompt &quot;Please select an output folder:&quot;)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC6\" class=\"blob-code blob-code-inner js-file-line\">set pagecountstart to 1<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC7\" class=\"blob-code blob-code-inner js-file-line\">set pagecountmax to 1<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC8\" class=\"blob-code blob-code-inner js-file-line\">set perpage to 10 &#8211;MAX =100<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC9\" class=\"blob-code blob-code-inner js-file-line\">set blogurl to &quot;FILL-IN-THE-URL&quot;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC10\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC11\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC12\" class=\"blob-code blob-code-inner js-file-line\">if blogurl = &quot;FILL-IN-THE-URL&quot; then<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC13\" class=\"blob-code blob-code-inner js-file-line\">\tdisplay dialog &quot;You need to edit the script to fill in a url&quot; buttons &quot;OK&quot; default button &quot;OK&quot;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC14\" class=\"blob-code blob-code-inner js-file-line\">\treturn false<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC15\" class=\"blob-code blob-code-inner js-file-line\">end if<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC16\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC17\" class=\"blob-code blob-code-inner js-file-line\">&#8211;We could also limit media to a particular type <\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC18\" class=\"blob-code blob-code-inner js-file-line\">&#8211;http:\/\/v2.wp-api.org\/reference\/media\/<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC19\" class=\"blob-code blob-code-inner js-file-line\">&#8211;Or filter in various ways<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC20\" class=\"blob-code blob-code-inner js-file-line\">repeat with pagecount from pagecountstart to pagecountmax<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC21\" class=\"blob-code blob-code-inner js-file-line\">\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC22\" class=\"blob-code blob-code-inner js-file-line\">\ttell application &quot;JSON Helper&quot;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC23\" class=\"blob-code blob-code-inner js-file-line\">\t\tset bURL to blogurl &amp; &quot;\/wp-json\/wp\/v2\/media\/?per_page=&quot; &amp; perpage &amp; &quot;&amp;page=&quot; &amp; pagecount<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC24\" class=\"blob-code blob-code-inner js-file-line\">\t\tset thejson to fetch JSON from bURL<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC25\" class=\"blob-code blob-code-inner js-file-line\">\t\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC26\" class=\"blob-code blob-code-inner js-file-line\">\t\tset theimgs to {}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC27\" class=\"blob-code blob-code-inner js-file-line\">\t\tset imageCount to count of thejson<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC28\" class=\"blob-code blob-code-inner js-file-line\">\t\trepeat with n from 1 to imageCount<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC29\" class=\"blob-code blob-code-inner js-file-line\">\t\t\tset end of theimgs to source_url of item n of thejson<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC30\" class=\"blob-code blob-code-inner js-file-line\">\t\tend repeat<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC31\" class=\"blob-code blob-code-inner js-file-line\">\tend tell<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC32\" class=\"blob-code blob-code-inner js-file-line\">\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC33\" class=\"blob-code blob-code-inner js-file-line\">\trepeat with img in theimgs<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC34\" class=\"blob-code blob-code-inner js-file-line\">\t\tset cmd to &quot;curl -L &quot; &amp; img &amp; &quot; &gt; &quot; &amp; downloadfolder &amp; filenamefromurl(img)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC35\" class=\"blob-code blob-code-inner js-file-line\">\t\tdo shell script cmd<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC36\" class=\"blob-code blob-code-inner js-file-line\">\tend repeat<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC37\" class=\"blob-code blob-code-inner js-file-line\">end repeat<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC38\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC39\" class=\"blob-code blob-code-inner js-file-line\">on filenamefromurl(theurl)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC40\" class=\"blob-code blob-code-inner js-file-line\">\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC41\" class=\"blob-code blob-code-inner js-file-line\">\tset s to &quot;url=\\&quot;&quot; &amp; theurl &amp; &quot;\\&quot;; echo \\&quot;${url##*\/}\\&quot;&quot;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC42\" class=\"blob-code blob-code-inner js-file-line\">\t<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC43\" class=\"blob-code blob-code-inner js-file-line\">\treturn do shell script s<\/td>\n<\/tr>\n<tr>\n<td id=\"file-downloadwordpressmedia-scpt-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n<td id=\"file-downloadwordpressmedia-scpt-LC44\" class=\"blob-code blob-code-inner js-file-line\">end filenamefromurl<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/troutcolor\/f808391eec896ec2505f2535e860ff22\/raw\/837e5c2df1049f3a35a1ca0e685410268bbf5b6a\/downloadWordPressMedia.scpt\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/troutcolor\/f808391eec896ec2505f2535e860ff22#file-downloadwordpressmedia-scpt\" class=\"Link--inTextBlock\"><br \/>\n          downloadWordPressMedia.scpt<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I got a request from a teacher who wanted to download a years worth of images from a Glow Blog (for end of year slideshow). Although there are plugins that can do this these are not available on Glow Blogs. I was stumped apart from going through the site and downloading them 1 by 1. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"mf2_syndication":[],"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"webmentions_disabled_pings":false,"webmentions_disabled":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[660,6],"tags":[93,1784,222,789,11],"post_format":[],"class_list":{"0":"post-7135","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-micro","7":"category-wwwd","8":"tag-applescript","9":"tag-glow-blogs","10":"tag-glowblogs","11":"tag-json","12":"tag-wordpress","13":"kind-article","15":"h-entry","16":"hentry"},"better_featured_image":null,"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p57zFQ-1R5","jetpack_likes_enabled":false,"jetpack_sharing_enabled":true,"kind":false,"_links":{"self":[{"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/posts\/7135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/comments?post=7135"}],"version-history":[{"count":2,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/posts\/7135\/revisions"}],"predecessor-version":[{"id":7137,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/posts\/7135\/revisions\/7137"}],"wp:attachment":[{"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/media?parent=7135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/categories?post=7135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/tags?post=7135"},{"taxonomy":"post_format","embeddable":true,"href":"https:\/\/johnjohnston.info\/blog\/wp-json\/wp\/v2\/post_format?post=7135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}