{"id":2064,"date":"2014-08-06T17:26:55","date_gmt":"2014-08-06T15:26:55","guid":{"rendered":"https:\/\/www.modelical.com\/?p=559"},"modified":"2022-03-23T15:14:25","modified_gmt":"2022-03-23T14:14:25","slug":"how-to-script-photoshop","status":"publish","type":"post","link":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/","title":{"rendered":"Scripting in Photoshop"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Sometimes you&#8217;ll find yourself manually repeating tasks in photoshop because actions or macros can&#8217;t do the trick. Then is time for scripting in this wonderful tool, the following lines should help you getting started.<\/p>\n<h3>Available languages<\/h3>\n<p>\nIf you already know any serious programming language&#8230; Good \u00a0news! This will be easy for you! But take into account, serious languages are C and C++, every other language are tinker toys. There is another good new, you can choose between the following languages, but as I will explain later, there is only one right choice.<\/p>\n<li><strong>VBScript<\/strong><\/li>\n<li><strong>AppleScript<\/strong><\/li>\n<li><strong>JavaScript<\/strong><\/li>\n<p>\nWhat is the right choice? JavaScript, of course. Why? Because is our case, is platform independent, and you don&#8217;t want to lose time translating from AppleScript to VBScript&#8230; Maybe there is something good about them, but, who cares? Let&#8217;s stick to JavaScript.<\/p>\n<p>As you may think, Adobe has extended the syntax to include the necessary functions and &#8220;objects&#8221;. Thus the language is referred as ExtendedScript. To begin with, we won&#8217;t see any differences. To become familiar with the develop environment take a look at the Adobe page about Photoshop Scripting \u00a0(<a title=\"Adobe Photoshop Scripting\" href=\"http:\/\/www.adobe.com\/devnet\/photoshop\/scripting.html\" target=\"_blank\" rel=\"noopener\">here<\/a>). Let me highlight the following documents:<\/p>\n<li><strong>Photoshop CS6 Scripting Guide<\/strong>, in which you will find what you can do with the available languages.<\/li>\n<li><strong>Photoshop CS6 JavaScript Reference<\/strong>, in which you will find the JavaScipt documentation, detailing all available functions.<\/li>\n<li><strong>Scripting Listener Plug-in<\/strong>, which is a plug-in for Photoshop, that dumps in a text file (in fact two text files) all the function calls corresponding to the actions made by us in the user interface. This is a great tool to start with, if you have no idea what functions you need to use. Also is essential to get some functions ids that are not on the documentation.<\/li>\n<h3>Choose your editor<\/h3>\n<p>We will be working with \u00a0plain text files, as you would for a web page. These files can have the usual .js extension, but it is better to use the .jsx extension. This way, we can quickly identify our Photoshop script files, and to execute them with a double click. To edit the scripts we can use any plain text editor, but I would recommend to use the included Adobe Editor, called ExtendedScript Toolkit.<\/p>\n<p><img decoding=\"async\" width=\"1280\" height=\"800\" class=\"alignnone size-full wp-image-3960\" alt=\"Adobe ExtendedScript Toolkit CS6\" src=\"\/wp-content\/uploads\/2014\/04\/extendedscript.png\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/extendedscript.png 1280w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/extendedscript-480x300.png 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/extendedscript-768x480.png 768w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/extendedscript-400x250.png 400w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/p>\n<p>As a text editor is not a great deal, but it has some tools to ease our work flow. One of these tools is the included object browser, where we can inspect runtime variables. The other tools are the typical debugger utilities, breakpoints, step by step execution, etc.<\/p>\n<p>By default, the scripts created in the editor are saved on a folder called &#8220;Adobe Scripts&#8221; on your Documents folder. It&#8217;s not a bad place, specially when you are developing a script.<\/p>\n<h3>How to run the scripts<\/h3>\n<p>\nWe have three options to run scripts, each one has its strong points:<\/p>\n<li><strong>From ExtendedScript Toolkit<\/strong>. From the toolbar we have buttons to launch the script and control the execution. This is the best way when you are developing.<\/li>\n<li><strong>From Photoshop, from the Browse script menu<\/strong>. This is the perhaps the quickest way to run a script you just downloaded from internet or other place:<br \/>\n<img decoding=\"async\" width=\"1114\" height=\"866\" class=\"size-full wp-image-3962 aligncenter\" alt=\"Script menu\" src=\"\/wp-content\/uploads\/2014\/04\/script-menu.png\" srcset=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/script-menu.png 1114w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/script-menu-480x373.png 480w, https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/script-menu-768x597.png 768w\" sizes=\"(max-width: 1114px) 100vw, 1114px\" \/><\/li>\n<li><strong>From Photoshop, from the Script menu<\/strong>. In order for your script to appear en the script list, you must copy your script file to the PresetsScripts folder,\u00a0inside the Photoshop installation folder. Notice that 32 and 64 bits edition of Photoshop have separated folders. Once \u00a0your script is ready to be used, this is the best way, as you can use it in Actions and assign a keyboard shortcut.<\/li>\n<h3>First steps<\/h3>\n<p>Our first script will be something really simple. Maybe too simple, because we could do this with an action. <\/p>\n<p>The aim of the script will be to resample all opened images to have an height of 512 pixels, but maintain the aspect ratio, and then saving the image to another file. If a picture has less than 512 pixels tall, nothing will be done. In order to make the code clearer I made two helper functions, so we can focus on the purpose of the script.<\/p>\n<pre class=\"lang:js decode:true\">var targetHeight = 512;\r\n\r\nfor (var i = 0; i &lt; app.documents.length; i++) {\r\n\tvar doc = app.documents[i];\r\n\tapp.activeDocument = doc;\r\n\tvar imageWidth = doc.width;\r\n\tvar imageHeight = doc.height;\r\n\tvar imageAspectRatio = doc.width \/ doc.height;\r\n\r\n\tif( imageHeight &gt; targetHeight ) {\r\n        var tWidth = Math.round( imageAspectRatio * targetHeight );\r\n        doc.resizeImage( tWidth, targetHeight );\r\n\r\n        var fileName = getFileName( doc );\r\n\r\n        fileName.name += \"_\" + targetHeight;\r\n\r\n        saveFile( doc, fileName );\r\n\t}\r\n}\r\n\r\nfunction getFileName( doc ) {\r\n    var filePath = doc.path.toString();\r\n    var fileName = doc.name.toString();\r\n\r\n    var lastDot = fileName.lastIndexOf( \".\" );\r\n    if ( lastDot == -1 ) {\r\n        lastDot = fileName.length;\r\n    }\r\n\r\n    var fileExtension = fileName.substr( lastDot );\r\n    var fileName = fileName.substr( 0, lastDot );\r\n\r\n    var outputName = filePath + \"\/\" + fileName;\r\n\r\n    return { name: outputName, extension: fileExtension };\r\n}\r\n\r\nfunction saveFile( doc, fileName ) {\r\n    fileName.name += \".jpg\";\r\n    var jpegOptions = new JPEGSaveOptions();\r\n    jpegOptions.quality = 10;\r\n    jpegOptions.embedColorProfile = true;\r\n    doc.saveAs( File( fileName.name ), jpegOptions, true );\r\n}<\/pre>\n<p>You may notice the\u00a0<span class=\"lang:js decode:true  crayon-inline\">app<\/span>\u00a0variable, not declared anywhere in our script. This is an object available in every script to access the running app. Now it is time to use the Data Browse pane to inspect the fields of the\u00a0<span class=\"lang:js decode:true  crayon-inline\">app<\/span>\u00a0object.<\/p>\n<p>\nOne of the most used variables of the\u00a0<span class=\"lang:js decode:true  crayon-inline\">app<\/span>\u00a0object is documents, an array of all the currently opened documents. We make use of it, and iterate the array with a for loop. You should feel at home by now. Some functions of the API are only usable if applied to the\u00a0<span class=\"lang:js decode:true  crayon-inline\">activeDocument<\/span>, and that is why for each loop iteration we set the\u00a0<span class=\"lang:js decode:true  crayon-inline\">activeDocument<\/span>\u00a0again.<\/p>\n<p>Then we take the current image dimensions, and calculate the new dimensions. As we proposed at the beginning, if the image is less than 512 pixels high, we do nothing. We make use of the\u00a0<span class=\"lang:js decode:true  crayon-inline\">resizeImage<\/span>\u00a0function, passing the new dimensions as parameters.<\/p>\n<p>In the final part of the script, we get the original image file name, add a suffix to get a new file name to end saving in JPEG format.<\/p>\n<p>And that&#8217;s all! In our next post, we will do something more complex, something that can not be done with a simple action. <a href=\"https:\/\/www.modelical.com\/en\/how-to-script-forty-photoshop\/\" title=\"hot to script photoshop in depth\">Go and check it out &#8211; How to Script Photoshop in Depth<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Sometimes you&#8217;ll find yourself manually repeating tasks in photoshop because actions or macros can&#8217;t do the trick. Then is time for scripting in this wonderful tool, the following lines should help you getting started. Available languages If you already know any serious programming language&#8230; Good \u00a0news! This will be easy for you! But take [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":27179,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[780],"class_list":["post-2064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guidelines","tag-technology-other"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Scripting in Photoshop - Modelical<\/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:\/\/www.modelical.com\/en\/how-to-script-photoshop\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scripting in Photoshop - Modelical\" \/>\n<meta property=\"og:description\" content=\"Introduction Sometimes you&#8217;ll find yourself manually repeating tasks in photoshop because actions or macros can&#8217;t do the trick. Then is time for scripting in this wonderful tool, the following lines should help you getting started. Available languages If you already know any serious programming language&#8230; Good \u00a0news! This will be easy for you! But take [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/\" \/>\n<meta property=\"og:site_name\" content=\"Modelical\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Modelical\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-08-06T15:26:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-23T14:14:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/script-menu.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1114\" \/>\n\t<meta property=\"og:image:height\" content=\"866\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Juan Manuel Perez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@modelical\" \/>\n<meta name=\"twitter:site\" content=\"@modelical\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan Manuel Perez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/\"},\"author\":{\"name\":\"Juan Manuel Perez\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/c9c2467429fc6feb888f8bd2300b70de\"},\"headline\":\"Scripting in Photoshop\",\"datePublished\":\"2014-08-06T15:26:55+00:00\",\"dateModified\":\"2022-03-23T14:14:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/\"},\"wordCount\":899,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2014\\\/08\\\/script-menu-400x250-1.png\",\"keywords\":[\"Tec Other\"],\"articleSection\":[\"Guidelines\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/\",\"name\":\"Scripting in Photoshop - Modelical\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2014\\\/08\\\/script-menu-400x250-1.png\",\"datePublished\":\"2014-08-06T15:26:55+00:00\",\"dateModified\":\"2022-03-23T14:14:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/c9c2467429fc6feb888f8bd2300b70de\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/how-to-script-photoshop\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2014\\\/08\\\/script-menu-400x250-1.png\",\"contentUrl\":\"https:\\\/\\\/www.modelical.com\\\/wp-content\\\/uploads\\\/2014\\\/08\\\/script-menu-400x250-1.png\",\"width\":400,\"height\":250},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/\",\"name\":\"Modelical\",\"description\":\"We build information\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/#\\\/schema\\\/person\\\/c9c2467429fc6feb888f8bd2300b70de\",\"name\":\"Juan Manuel Perez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju\",\"caption\":\"Juan Manuel Perez\"},\"url\":\"https:\\\/\\\/www.modelical.com\\\/en\\\/author\\\/juanma\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scripting in Photoshop - Modelical","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:\/\/www.modelical.com\/en\/how-to-script-photoshop\/","og_locale":"en_US","og_type":"article","og_title":"Scripting in Photoshop - Modelical","og_description":"Introduction Sometimes you&#8217;ll find yourself manually repeating tasks in photoshop because actions or macros can&#8217;t do the trick. Then is time for scripting in this wonderful tool, the following lines should help you getting started. Available languages If you already know any serious programming language&#8230; Good \u00a0news! This will be easy for you! But take [&hellip;]","og_url":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/","og_site_name":"Modelical","article_publisher":"https:\/\/www.facebook.com\/Modelical\/","article_published_time":"2014-08-06T15:26:55+00:00","article_modified_time":"2022-03-23T14:14:25+00:00","og_image":[{"width":1114,"height":866,"url":"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/04\/script-menu.png","type":"image\/png"}],"author":"Juan Manuel Perez","twitter_card":"summary_large_image","twitter_creator":"@modelical","twitter_site":"@modelical","twitter_misc":{"Written by":"Juan Manuel Perez","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#article","isPartOf":{"@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/"},"author":{"name":"Juan Manuel Perez","@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/c9c2467429fc6feb888f8bd2300b70de"},"headline":"Scripting in Photoshop","datePublished":"2014-08-06T15:26:55+00:00","dateModified":"2022-03-23T14:14:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/"},"wordCount":899,"commentCount":0,"image":{"@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#primaryimage"},"thumbnailUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/08\/script-menu-400x250-1.png","keywords":["Tec Other"],"articleSection":["Guidelines"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/","url":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/","name":"Scripting in Photoshop - Modelical","isPartOf":{"@id":"https:\/\/www.modelical.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#primaryimage"},"image":{"@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#primaryimage"},"thumbnailUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/08\/script-menu-400x250-1.png","datePublished":"2014-08-06T15:26:55+00:00","dateModified":"2022-03-23T14:14:25+00:00","author":{"@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/c9c2467429fc6feb888f8bd2300b70de"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.modelical.com\/en\/how-to-script-photoshop\/#primaryimage","url":"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/08\/script-menu-400x250-1.png","contentUrl":"https:\/\/www.modelical.com\/wp-content\/uploads\/2014\/08\/script-menu-400x250-1.png","width":400,"height":250},{"@type":"WebSite","@id":"https:\/\/www.modelical.com\/en\/#website","url":"https:\/\/www.modelical.com\/en\/","name":"Modelical","description":"We build information","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.modelical.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.modelical.com\/en\/#\/schema\/person\/c9c2467429fc6feb888f8bd2300b70de","name":"Juan Manuel Perez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju","url":"https:\/\/secure.gravatar.com\/avatar\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/945465eff02d16d8d02a0853f9d484ad26660cf20c44978db2c7bae51957c5d0?s=96&d=initials&r=g&initials=ju","caption":"Juan Manuel Perez"},"url":"https:\/\/www.modelical.com\/en\/author\/juanma\/"}]}},"_links":{"self":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts\/2064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/comments?post=2064"}],"version-history":[{"count":0,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/posts\/2064\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/media\/27179"}],"wp:attachment":[{"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/media?parent=2064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/categories?post=2064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.modelical.com\/en\/wp-json\/wp\/v2\/tags?post=2064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}