{"id":1939,"date":"2012-02-13T16:51:04","date_gmt":"2012-02-13T07:51:04","guid":{"rendered":"https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher"},"modified":"2012-02-16T18:31:06","modified_gmt":"2012-02-16T09:31:06","slug":"collection-publisher","status":"publish","type":"page","link":"https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher","title":{"rendered":"Jeffrey&#8217;s &#8220;Collection Publisher&#8221; Lightroom Plugin"},"content":{"rendered":"\n\n<style>\n  .with_lhs li { margin-left: 212px }\n\n  div.post_header { margin-left: 216px }\n  #navtab-holder {\n        color: #84F;\n        float:left;\n        position: relative;\n        background-color: black;\n        border-right: solid 2px #888888;\n        top: -44px;\n\n        width: 250px;\n        right: 60px;\n        margin-right: -30px; \/* the main page layout is based upon the unshifted width of the navtab-holder, so this compensates for the right:60px shift *\/\n\n  }\n  #navtab-holder a[href]:visited { color: #84F; text-decoration:none  }\n  #navtab-holder a[href]:link    { color: #84F; text-decoration:none }\n  div.navtab-topbottom {\n       width: 207px;\n       margin-left: 43px;\n       height: 10px;\n  }\n  #navtab-bottom {\n      border-bottom: solid 2px #888888;\n  }\n  div.navtab-list {\n    border: 3px solid #0B0;\n    background-color: #040;\n    padding-left: 10px;\n    margin-right: 10px;\n    -moz-border-radius:    15px;\n    -webkit-border-radius: 15px;\n  }\n\n  div.nav-header {\n      color:white;\n      padding-top: 15px;\n      padding-bottom: 3px;\n      text-align: left;\n      font-weight: bold;\n  }\n  div.sel {\n      margin: 0;\n      padding: 1px;\n  }\n  div.N {\n  }\n  div.post_container {\n    background-color: #181818;\n  }\n\n  div.Y {\n      border: solid 2px #888888;\n      border-right: none;\n      background-color: #181818;\n      font-weight: bold;\n      color: red;\n      overflow:visible;\n      position: relative;\n      z-index: 3;\n      width: 235px;\n      -moz-border-radius:    15px 0 0 15px;\n      -webkit-border-radius: 15px 0 0 15px;\n  }\n  div.sel + div.I { padding-top: 20px }\n  div.sel > div {\n      -moz-border-radius:    15px 0 0 15px;\n      -webkit-border-radius: 15px 0 0 15px;\n      padding: 2px 0 2px 10px;\n      margin: 0 0 5px 0;\n  }\n  div.N > div {\n      border: 2px solid black;\n  }\n  div.N > div {\n      margin-right: 20px;\n      background-color: #222;\n  }\n\n  div.Y + div.N > div { margin-top: 10px }\n\n  div.logo { width: 30px; display: inline-block }\n\n  #arrow {\n    display: inline-block;\n    width: 0px;\n    position:relative;\n    top:5px;\n    left:10px\n  }\n\n<\/style>\n\n\n<div id='navtab-holder'>\n<div class='navtab-topbottom' id='navtab-top'><\/div>\n\n<div class='nav-header' style='text-align:center; color:white'>My Lightroom Plugin for Adobe Photoshop Lightrooms&nbsp;<\/div>\n<div class='navtab-list'>\n<div class='nav-header'>Export &amp; Publish<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/zenfolio'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/zenfolio'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_zenfolio.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/zenfolio'>Zenfolio<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smugmug'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/smugmug'><img noindex='1' width='14' height='15' style='margin-left: 5px' class='raw' src='\/i\/lr\/sm\/small_smugmug.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/smugmug'>SmugMug<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/flickr'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/flickr'><img noindex='1' width='24' height='12' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_flickr.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/flickr'>Flickr<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/google-drive'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/google-drive'><img noindex='1' width='19' height='19' style='margin-left: 3px' class='raw' src='\/i\/lr\/sm\/small_googledrive.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/google-drive'>Google Drive<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/ipernity'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/ipernity'><img noindex='1' width='14' height='18' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_ipernity.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/ipernity'>ipernity<\/a><\/div><\/div>\n<div class='nav-header'>Export Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/google-photos'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/google-photos'><img noindex='1' width='18' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_gphotos.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/google-photos'>Google Photos<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/tumblr'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/tumblr'><img noindex='1' width='19' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_tumblr.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/tumblr'>Tumblr<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/twitter'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/twitter'><img noindex='1' width='23' height='16' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/twitter_small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/twitter'>Twitter<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/photobucket'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/photobucket'><img noindex='1' width='20' height='15' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/small_photobucket.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/photobucket'>Photobucket<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/order-prints-locally'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/order-prints-locally'>Order Prints Locally<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/expono'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/expono'>Expono<\/a><\/div><\/div>\n<div class='nav-header'>Other Publish Plugins<\/div>\n<div class='sel Y' onmouseover=\"this.style.borderColor=document.getElementById('post_guts').style.borderColor=document.getElementById('navtab-holder').style.borderColor=document.getElementById('navtab-top').style.borderColor=document.getElementById('navtab-bottom').style.borderColor= 'red'; this.style.backgroundColor = document.getElementById('post_guts').style.backgroundColor = '#333'\" onmouseout =\"this.style.borderColor=document.getElementById('post_guts').style.borderColor=document.getElementById('navtab-holder').style.borderColor=document.getElementById('navtab-top').style.borderColor=document.getElementById('navtab-bottom').style.borderColor= '#888888'; this.style.backgroundColor = document.getElementById('post_guts').style.backgroundColor = '#181818';\"><div><div class='logo'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/collection_publisher_small_icon.png'\/><\/div> Collection Publisher <div id='arrow'><img noindex='1' class='raw'  src='\/i\/s\/red-arrow-right.png' width='48' height='25'\/><\/div><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-publisher'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/folder-publisher'><img noindex='1' width='24' height='19' style='margin-left: 0' class='raw' src='\/i\/lr\/sm\/folder-publisher-icon-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/folder-publisher'>Folder Publisher<\/a><\/div><\/div>\n<div class='nav-header'>Export Add-Ons<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-wrangler'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-wrangler'>Metadata Wrangler<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/creative-commons'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/creative-commons'>Creative Commons<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/run-any-command'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/run-any-command'>Run Any Command<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/snapshot-on-export'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/snapshot-on-export'>Snapshot on Export<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smart-preview-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/smart-preview-support'>Smart-Preview Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/crop-for-ipad'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/crop-for-ipad'>Crop for iPad and other Devices<\/a><\/div><\/div>\n<div class='nav-header'>Geoencoding Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/gps'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/gps'>Geoencoding Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/gps-proximity'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/gps-proximity'>Proximity Search<\/a><\/div><\/div>\n<div class='nav-header'>Utility Plugins<\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/data-explorer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/data-explorer'>Data Explorer<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/smart-collection-sync'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/smart-collection-sync'>Smart Collection Sync<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/people-support'>People Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-status'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/folder-status'>Folder Status<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/photosafe'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/photosafe'><img noindex='1' width='18' height='19' style='margin-left: 6px' class='raw' src='\/i\/lr\/sm\/photosafe-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/photosafe'>PhotoSafe<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-mechanic'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/collection-mechanic'>Collection Mechanic<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/bag-o-goodies'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/bag-o-goodies'>Bag-o-Goodies<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/timelapse-support'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/timelapse-support'>Timelapse Support<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/workflow-delete-options'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><div class='logo'><a href='\/blog\/lightroom-goodies\/workflow-delete-options'><img noindex='1' width='15' height='19' style='margin-left: 6px' class='raw' src='\/i\/lr\/sm\/workflow-delete-options-small.png'\/><\/a><\/div> <a href='\/blog\/lightroom-goodies\/workflow-delete-options'>Workflow Delete Options<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-viewer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-viewer'>Metadata Viewer<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/bulk-develop'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/bulk-develop'>Bulk Develop Settings<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/metadata-presets'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/metadata-presets'>Metadata-Viewer Preset Builder<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/layers'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/layers'>Photoshop Layers<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/export-quality-tester'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/export-quality-tester'>JPEG Quality Tester<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-watch'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/folder-watch'>Folder Watch<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/megapixel-sort'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/megapixel-sort'>Megapixel Sort<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/focal-length-sort'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/focal-length-sort'>Focal-length Sort<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/data-plot'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/data-plot'>Data Plot<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/extended-search'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/extended-search'>Extended Search<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/video-assets'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/video-assets'>Video-Asset Management<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/preview-extraction'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/preview-extraction'>Preview-Cache Image Extraction<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/sysinfo'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/sysinfo'>System Info<\/a><\/div><\/div>\n<div class='sel N'><div onclick=\"document.location='https:\/\/regex.info\/blog\/lightroom-goodies\/iphoto-collection-fixer'\" onmouseover=\"this.style.borderColor='white'\" onmouseout=\"this.style.borderColor='black'\"><a href='\/blog\/lightroom-goodies\/iphoto-collection-fixer'>iPhoto Collection Fixer<\/a><\/div><\/div>\n<\/div>\n<div style='margin-top:20px; margin-left:15px; margin-bottom:10px'>\n<b>Other Plugin Sources:<\/b>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.photographers-toolbox.com\/products\/'>Photographer's Toolbox<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/alloyphoto.com\/plugins\/'>alloy photo<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.beardsworth.co.uk\/lightroom\/'>John Beardsworth<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.capturemonkey.com\/'>Capture Monkey<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='http:\/\/www.lightroom-plugins.com\/'>lightroom-plugins.com<\/a>\n<br\/>&nbsp;&middot;&nbsp;<a href='https:\/\/creative.adobe.com\/addons?pp=PSLR'>Adobe Addons<\/a>\n\n<\/div>\n\n<div class='navtab-topbottom' id='navtab-bottom'><\/div>\n<\/div>\n\n<div itemscope itemtype='http:\/\/schema.org\/SoftwareApplication'>\n<meta itemprop='creator' content='Jeffrey Friedl'\/>\n<meta itemprop='copyrightHolder' content='Jeffrey Friedl'\/>\n<meta itemprop='applicationCategory' content='Photography'\/>\n<meta itemprop='applicationSubCategory' content='Plugin for Adobe Photoshop Lightroom'\/>\n<meta itemprop='applicationSuite' content='Adobe Creative Cloud'\/>\n<meta itemprop='operatingSystem' content='Apple Mac OS X, Microsoft Windows'\/>\n<meta itemprop='about' content=\"Collection Publisher\"\/>\n\n\n\n\n<div style='float:right; position:relative; border: solid 1px #444; margin: 0 auto; margin-left:2em; padding:20px; padding-top:5px; background-color: #000'>\n<center style='font-weight:bold; font-size:120%'>Quick Links<\/center>\n     &middot; <b>Latest Download<\/b>:\n<br\/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/releases\/collection-publisher-20231011.127.zip'><span style='padding:1px 3px; border:solid 1px orange; color:#888'>collection-publisher-<span style='color:orange; font-weight:bold'>20231011.127<\/span>.zip<\/span><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/faq'>FAQ<\/a>\n<br\/>&middot; <a class='quiet' href='#history'>Version History<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/collection-publisher.rss'>Update Log via RSS <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/plugin-installation\/'>Installation instructions<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/register'>&#8220;Donationware&#8221; Registration Info<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/lightroom-goodies\/' style='color:#F55'>More Lightroom Goodies<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/all.rss'>All-Plugin Update Log via RSS <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog\/photo-tech\/'>My Photo-Tech Posts<\/a>\n<br\/>&middot; <a class='quiet' href='https:\/\/regex.info\/blog'>My Blog<\/a>\n<\/div>\n\n\n<p style='margin-top:0'>This &#8220;Publish&#8221; plugin for Adobe Lightroom Classic allows you to export copies of your\nLightroom photos to local disk in <span class='nobr'>a folder<\/span> hierarchy that mimics the collection hierarchy you build\nwithin Lightroom.<\/p>\n\n<p>This plugin works in Lightroom Classic, and older versions as far back as\n<span class='nobr'>Lightroom 3<\/span> (though some features depend on the\nversion of Lightroom).<\/p>\n\n<p>The same download works for both Windows and Mac. <span class='nobr'>See the box<\/span> to the upper right for the download link (in orange) and installation instructions.<\/p>\n\n\n\n<p style='margin: 40px auto'>This is <span class='nobr'>a sister<\/span> plugin to <a\nhref='\/blog\/lightroom-goodies\/folder-publisher'>my Folder\nPublisher plugin<\/a>, which is similar to this plugin except that\nFolder Publisher creates <span class='nobr'>a layout<\/span> on disk that mirrors the images'\n<i>folder<\/i> hierarchy instead of their <i>collection<\/i> hierarchy.<\/p>\n\n\n<p>Unlike a normal export, this Publish service allows you to create an\nongoing relationship between the photo in Lightroom and the copy on disk. <span class='nobr'>The tree on<\/span> disk is refreshed for any changes (new images, removed images,\nand image changes) each time you &#8220;Publish&#8221;. I've found it very\nconvenient to publish selected collections of portfolio images for my\niPad.<\/p>\n\n<p>Here's an overview of what it looks like in the Publishing Manager.. the\nareas marked in red are from this plugin (with the blue and green items\nbeing from other plugins that <span class='nobr'>I happen<\/span> to be using in this example):<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-publisher-settings.png\" width=\"617\" height=\"577\"\nclass=\"raw\"\nid=\"icollection_publisher_settings\"\/><\/div>\n\n<p>The plugin is normally used in the following pattern:<\/p>\n<ol><li>Initial setup of the publish service.<\/li>\n<li>Initial setup of the collection hierarchy within the publish service.<\/li>\n<li>Populate the collections with images.<\/li>\n<li>&#8220;Publish&#8221; them, causing copies of the images to be reflected into <span class='nobr'>a hierarchy<\/span> on disk matching the collection hierarchy in Lightroom.<\/li>\n<li>Going forward, any time changes are made (images updated, added, or removed), &#8220;Publish&#8221; causes those changes to be reflected on disk.<\/li>\n<\/ol>\n\n<p class='h'>Publish-Service Setup<\/p>\n\n<p>When setting up a new publish service, you first assign a name, though\nyou can leave it blank if you'll only have one...<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_01.png\" width=\"583\" height=\"66\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_01\"\/><\/div>\n\n<p>You indicate where published copies are to be placed by specifying the\nroot of the publish tree. When first setting up a new publisher, you'll\nlikely want to pick an empty folder as the root.<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_02.png\" width=\"583\" height=\"107\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_02\"\/>\n<\/div>\n\n<p>The next sections are all part of the standard Lightroom export. In them\nyou decide the size and quality of the published copies...<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_03.png\" width=\"583\" height=\"195\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_03\"\/>\n<\/div>\n\n<p>The next two sections shown in the example aren't included unless you specifically add them:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_04.png\" width=\"583\" height=\"54\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_04\"\/>\n<\/div>\n\n<p>They're from my <a\nhref='\/blog\/lightroom-goodies\/crop-for-ipad'>crop for\niPad<\/a> and <a\nhref='\/blog\/lightroom-goodies\/metadata-wrangler'>Metadata\nWrangler<\/a> plugins; I use them in my exports to allow me extra control of\nwhat metadata is included in each exported copy, and in the case of my iPad\nportfolio, special iPad-specific crops so that some images better fill the\nscreen.<\/p>\n\n<p>The next section controls what changes in Lightroom should cause\npublished images to be slated for republish.<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_05.png\" width=\"583\" height=\"181\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_05\"\/>\n<\/div>\n\n<p>Then we have a plugin-specific seciton on file renaming that gives much\nmore flexability than Lightroom's standard &#8220;File Naming&#8221; section, should you need it:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_06.png\" width=\"583\" height=\"160\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_06\"\/>\n<\/div>\n\n<p>This allows you to have the files for the exported copies named derived from image matadata using\n<a href='\/blog\/lightroom-goodies\/template'>template tokens<\/a> that are processed on the fly for each image.<\/p>\n\n<p>The next section provides a way to do an FTP sync of the published copies, should you need it.\nPhoto-viewing iPad apps tend to allow updates via FTP sync, so this section is convenient for that.<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_07.png\" width=\"583\" height=\"220\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_07\"\/>\n<\/div>\n\n<p>It's here as a convenient tool rather than an actual part of the\nconfiguration; the FTP sync is never automatic... it happens only when you\nlaunch it manually from the Publishing Manager.<\/p>\n\n<p>The plugin also provides a way to import and export settings, making it\neasier to set up comparable publish services on multiple catalogs (such as\nwhen part of your library is on your desktop, and part on your laptop, as\nis my case).<\/p>\n\n<p>When first setting up a service, you'll have the ability to import settings...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_08.png\" width=\"583\" height=\"142\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_08\"\/>\n<\/div>\n\n<p>... but once it's been set up the first time, after that the section allows for export:<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-settings-detail_10.png\" width=\"583\" height=\"269\"\nclass=\"raw\"\nid=\"icollection_pub_settings_detail_10\"\/>\n<\/div>\n\n\n<p class='h'>Collection Setup<\/p>\n\n<p>Once you've got the publish service created, its context menu\n(alt-clicking or right-clicking on it in the left hand side of Library)\nbrings up <span class='nobr'>a menu<\/span> allowing you to create\ncollections or sets...<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-contextmenu2.png\" width=\"520\" height=\"217\"\nclass=\"raw\"\nid=\"icollection_pub_contextmenu\"\/><\/div>\n\n<p><i>Collections<\/i> can contain images, while <i>collection sets<\/i> can contain collections and other collection sets. <span class='nobr'>It's different<\/span> from the normal file\/folder hierarchy on disk because images can only go into collections, and not into collection sets.\nThis makes it inconvenient and unnatural to mapping between how you must organize images within the plugin and how\nthe plugin writes them out to folders and files on disk, so I've built two ways to do it; hopefully at least one will make sense...<\/p>\n\n<p>When you create <span class='nobr'>a collection<\/span> in the plugin,\nyou have three choices for the <span class='QO'>&#8220;<\/span>Collection Type<span class='QC'>&#8221;<\/span>, which determines how the\nplugin treats photos in the collection when outputting copies during\nPublish:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-create-dialog2.png\" width=\"825\" height=\"517\"\nclass=\"raw\"\nid=\"icollection_pub_create_dialog\"\/><\/div>\n\n<p>If the &#8220;Collection Type&#8221; is &#8220;Its own\nsub-folder&#8221;, the collection name (&#8220;Travel&#8221; in the example\nabove) becomes <span class='nobr'>a sub<\/span> folder in the publish\ndestination, and images in the collection are placed in the sub-folder.\nThis is likely the most common collection type for most folks.<\/p>\n\n<p>When the collection type is &#8220;Part of its parent&#8221;, the name of\nthe collection is not used by the publish system. Instead, exported copies are placed\ninto the folder of the collection's parent collection set.<\/p>\n\n<p>(The third option, <span class='QO'>&#8220;<\/span><span class='nobr'>A mirror<\/span> of...<span class='QC'>&#8221;<\/span>, is <a href='#mirror'>discussed below<\/a>.)<\/p>\n\n<p>Let's look at an example, two ways to put images into a\n&#8220;Japan&#8221; sub-folder within &#8220;Travel&#8221;:<\/p>\n\n<ol><li><p>Invoke &#8220;Create Sub-Folder or Mirrored Collection Set&#8221; named &#8220;Travel&#8221;, then within it create <span class='nobr'>a collection<\/span> named &#8220;Japan&#8221;,\n     being sure to select &#8220;its own sub-folder&#8221;.<\/p><\/li>\n\n     <li><p>Invoke &#8220;Create Sub-Folder or Mirrored Collection Set&#8221; named &#8220;Travel&#8221;, then within it create another sub-folder named &#8220;Japan&#8221;,\n          then within <i>that<\/i> create <span class='nobr'>a collection,<\/span> with any name, being sure to select &#8220;Part of its parent&#8221;.<\/p><\/li>\n          <\/ol>\n\n<p class='h' id='mirror'>Mirroring Pre-Existing Collections<\/p>\n\n<p>A new, experimental feature as of August 2015 allows the plugin to\nmirror (automatically keep in sync with) collections you already have\nelsewhere in your catalog.<\/p>\n\n<div style='border:solid 1px #600; padding: 10px 1em'>\n\n   <span style='color:#F44'>This <span\n   class='QO'>&#8220;<\/span>mirroring<span class='QC'>&#8221;<\/span>\n   feature is <span class='nobr'>a bit<\/span> fragile<\/span> because what\n   it aims to do does not fit easily into how Lightroom's plugin\n   infrastructure has been designed. <span class='nobr'>In trying<\/span> to\n   implement this feature, the plugin is pushing the envelope with what\n   Lightroom can do, and as <span class='nobr'>a result<\/span> some loose\n   ends can potentially make for surprises if you (the user) don't keep the\n   important caveats discussed below in mind\n\n<\/div>\n\n<p>When creating a collection or collection set with this plugin, you have\nthe option to <i>mirror<\/i> <span class='nobr'>a collection<\/span> or an\nentire hierarchy of collections. When one collection is mirrored from\nanother, the plugin <i>semi<\/i>-automatically keeps the set of photos in\none updated to reflect any changes in the other.<\/p>\n\n<p>For example, consider these normal collection in <span class='nobr'>a Lightroom<\/span> catalog:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-normcollectionlist.png\" width=\"300\" height=\"303\"\nclass=\"raw\"\nid=\"icollection_pub_normcollectionlist\"\/><\/div>\n\n<p>If we've spent time curating the <span class='QO'>&#8220;<\/span>Travel<span class='QC'>&#8221;<\/span> set of three collections and\nwould like to see that set mirrored in the Collection Publisher so that we\ncan have <span class='nobr'>a local<\/span> hierarchy of copies on disk, we right click on the\nCollection Publisher and choose <span class='QO'>&#8220;<\/span>Create Sub-Folder or Mirrored Collection\nSet<span class='QC'>&#8221;<\/span> to bring up the set-creation dialog:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-createmirrored.png\" width=\"600\" height=\"223\"\nclass=\"raw\"\nid=\"icollection_pub_createmirrored\"\/><\/div>\n\n<p>We've selected <span class='QO'>&#8220;<\/span>Mirror collection tree rooted at...<span class='QC'>&#8221;<\/span> and then pulled up <span class='QO'>&#8220;<\/span>Travel<span class='QC'>&#8221;<\/span> from the list of sets.\n(The list includes all collection sets in your Lightroom catalog except those within <span class='nobr'>a Collection<\/span> Publisher service).\n<\/p>\n\n<p>After having selected the <span class='QO'>&#8220;<\/span>Travel<span class='QC'>&#8221;<\/span> set, the name of the new published\nset to be created is pre-filled in as <span\nclass='QO'>&#8220;<\/span>MIRROR: Travel<span class='QC'>&#8221;<\/span> and\ncan't be changed.<\/p>\n\n<p>Upon pressing the <b>[Create]<\/b> button, we see <span class='nobr'>the\nnew<\/span> <span class='QO'>&#8220;<\/span>MIRROR: Travel<span\nclass='QC'>&#8221;<\/span> set in our publish service, filled with the three\nnew collections and pre-populated with respective photos from the three\nsource collections:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-mirroredlist.png\" width=\"300\" height=\"202\"\nclass=\"raw\"\nid=\"icollection_pub_mirroredlist\"\/><\/div>\n\n<p>The <span class='QO'>&#8220;<\/span>MIRROR<span class='QC'>&#8221;<\/span> prefixed to the name is there to remind you that the plugin\nis supposed to have control over it and its contents, and that you\nshouldn't manually make any changes to the collections or add\/remove photos\nwithin (they should be added\/removed in the source collection this publish\ncollection mirrors). More on this in <span class='nobr'>a moment<\/span> in <span class='QO'>&#8220;<\/span>Caveats<span class='QC'>&#8221;<\/span> below.<\/p>\n\n<p>In the example above, the publish collections have been created but they\nhaven't actually been published yet &mdash; all the photos in them are in\n<span class='QO'>&#8220;<\/span>New Photos to Publish<span class='QC'>&#8221;<\/span> &mdash; but you can publish them individually\n(click on their name then on the <b>[Publish]<\/b> button), or en mass <span\n\nclass='nobr'>via <span class='QO'>&#8220;<\/span><b>File &gt; Plugin Extras &gt; Refresh and Publish\nMirrored Collections<\/b><span class='QC'>&#8221;<\/span>.<\/span><\/p>\n\n\n\n<p id='caveats-of-mirroring' style='margin-top:3ex; font-size:120%; color:red'>The Caveats of Mirroring<\/p>\n\n<p>As noted above, this well beyond what Lightroom's plugin infrastructure\nwas designed to handle, so it's not as smooth as one would like...<\/p>\n\n<ul>\n\n<li>\n\n   <p>We'd like for the mirroring to be completely automatic, but\n   unfortunately Lightroom's plugin infrastructure doesn't allow for it.\n   Rather, mirrored collections are synced only when they are published,\n   and\/or when <span class='nobr' style='font-size:90%'>via <span class='QO'>&#8220;<\/span><b>File\n   &gt; Plugin Extras &gt; jf Collection Publisher &gt; Refresh and Publish Mirrored Collections<\/b><span\n   class='QC'>&#8221;<\/span><\/span> is invoked.<\/p>\n\n   <p>Publishing a single collection via <b>[Publish]<\/b> syncs and publishes\n   just that collection, while invoking the <span class='nobr'><span\n   class='QO'>&#8220;<\/span><b>Refresh and Publish Mirrored\n   Collections<\/b><span class='QC'>&#8221;<\/span><\/span> syncs (and optionally\n   publishes) all Collection Publisher collections. Depending on the changes\n   made during the sync (discussed below), syncing via the <b>[Publish]<\/b>\n   button may leave some photos in the <span class='QO'>&#8220;<\/span>Deleted Photos to be Removed<span class='QC'>&#8221;<\/span> section\n   of the collection, so it may need to be published once more to finally push\n   out all changes.<\/p>\n\n<\/li>\n\n<li>\n\n   <p><span class='QO'>&#8220;<\/span>Syncing<span class='QC'>&#8221;<\/span> means that the target collection in this plugin is made to\n   have the same photos as the source collection it mirrors, so any extra\n   photos here but not there are deleted (even if you had manually,\n   specifically added them here), and any photos there but not here are added\n   (even if you had manually, specifically removed them here). <span class='nobr'>It would<\/span> be\n   nice if this were <span class='nobr'>a full<\/span> two-way sync, but the plugin has no idea why <span class='nobr'>a\n   photo<\/span> might be in one place and not the other (did you remove it there or\n   add it here?), so it's <span class='nobr'>a simple<\/span> <span class='QO'>&#8220;<\/span>make this look like that<span class='QC'>&#8221;<\/span>.<\/p>\n<\/li>\n\n<li>\n\n   <p>Given that it's a simple one-way sync, it'd be nice if Lightroom\n   disallowed local changes (that is, disallowed adding\/removing photos to the\n   publish collection), but such restrictions are not possible with the\n   current plugin infrastructure, so if you forget <span class='nobr'>a\n   collection<\/span> is mirrored and start adding\/removing images, that work\n   will be silently lost at the next sync. That's why the collection name has\n   <span class='QO'>&#8220;<\/span>MIRROR<span class='QC'>&#8221;<\/span> prepended, to remind you.<\/p>\n<\/li>\n\n<li>\n  <p>The same can be said for mirrored sets. <span class='nobr'>If you\n  add<\/span>\/remove collections within <span class='nobr'>a mirrored<\/span>\n  set, that work will be undone at the next sync when the collections are\n  re-mirrored back from the source set.<\/p>\n<\/li>\n\n<li id='noedit'>\n\n  <p>Once a mirrored collection is set up, it can't be edited or modified because there's nothing to edit or modify.\n  (It's renamed by renaming the collection it mirrors and then syncing.) However, it can be deleted via the context\n  menu for its name in the publish-services list.<\/p>\n<\/li>\n\n<li>\n  <p>Similar to the previous point, mirrored collections can't be moved within the published-collection sets of the publish\n  service, nor can other collections be moved or created within <span class='nobr'>a mirrored<\/span> collection set. <span class='nobr'>If you want<\/span> to add or subtract\n  collections, do so in the original source being mirrored and then sync.\n  <\/p>\n\n<\/li>\n\n<li id='creation-bug'>\n   <p>There's a bug in Lightroom that has the potential to cause some havoc\n   with collection creation. <span class='nobr'>Due to this<\/span> bug, the collection-creation part\n   of the plugin sometimes gets confused about where within your publish\n   service <span class='nobr'>a collection<\/span> is about to be created, and so sometimes mistakenly\n   gives a <span class='QO'>&#8220;<\/span><i>can't create <span class='nobr'>a collection<\/span> within <span class='nobr'>a mirrored<\/span> collection<\/i><span class='QC'>&#8221;<\/span>\n   error, or sometimes might not give it when it should.<\/p>\n\n   <p>The bug can happen when you have <span class='nobr'>a collection<\/span> or set selected for display in Loupe\/Gird at the time\n   you bring up the collection-creation dialog...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-createissue1.png\" width=\"700\" height=\"407\"\nclass=\"raw\"\nid=\"icollection_pub_createissue1\"\/><\/div>\n\n   <p>Lightroom conveniently pre-fills the <span class='QO'>&#8220;<\/span>Set<span class='QC'>&#8221;<\/span> in the collection-creation dialog with whatever set is\n   associated with the selection at the time it's invoked...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/collection-pub-createissue2.png\" width=\"650\" height=\"170\"\nclass=\"raw\"\nid=\"icollection_pub_createissue2\"\/><\/div>\n\n   <p><b style='color:red'>The bug<\/b> is that if you change the <span class='QO'>&#8220;<\/span>Set<span class='QC'>&#8221;<\/span> in the dialog, information about that change may or may not\n   be passed to the plugin.<\/p>\n\n   <p><b style='color:#6F6'>The workaround<\/b> is to make sure that either no collection-publisher collection is selected when you\n   invoke the collection-creation dialog, or that only <span class='nobr'>a root<\/span>-level collection is selected.<\/p>\n\n<\/li>\n\n<\/ul>\n\n<p id='smart_preview_export' class='h'>Special \"Smart Preview Export\" Mode<\/p>\n\n<p>The plugin, in Lightroom 9.2 or later, includes a special mode to export Lightroom's \"smart preview\" files, DNG-format\nreduced-quality (reduced-size) versions of the master original image files. These files include no Lightroom updates (image or\nmetadata edits). This mode might be useful for a kind of lightweight backup.<\/p>\n\n<p>This mode can be turned on only when a publish service is being created. For a publish service that has this mode active,\nstandard publish options related to the export image files &mdash; format, size, quality, metadata, etc. &mdash; are still\npresented, but play no part in the actual publish operation because the plugin . (I would like to make them disappear just for\nthis mode, but Lightroom's plugin infrastructure doesn't allow for it.)<\/p>\n\n<p>This experimental mode has been hacked into the plugin in a pretty sloppy way, just to see whether it's useful. At this point,\nthe publish service, like all publish services, moves edited files back into the \"files to republish\", even though such edits\nwithin Lightroom don't affect the published output of <i>this<\/i> plugin as they do all other plugins.<\/p>\n\n\n\n\n<p class='h'>Availability<\/p><p>This plugin is distributed as &#8220;donationware&#8221;. I have chosen to make it available for free &mdash; everyone can use\nit forever, without cost of any kind &mdash; but unless registered, its functionality is somewhat reduced after six weeks.<\/p>\n\n<p>Registration is done via PayPal, and if you choose to register, it costs the minimum 1-cent PayPal fee; any amount you'd like\nto add beyond PayPal's sliding fees as a gift to me is completely optional, and completely appreciated.<\/p>\n\n<p id='majorupgrade'><b>Note<\/b>: a Lightroom <i>major<\/i> upgrade, such as from Lr10 to Lr11 de-registers the plugin in the\nupgraded version, so if you want to maintain registration, a new ($0.01 if you like) registration code is needed in the upgraded\nversion. It makes for a hassle every couple of years, I know. Sorry. See <a\nhref='\/blog\/lightroom-goodies\/register#major-upgrade'>this note<\/a> for details.<\/p>\n\n<p>For details on plugin registration and on how I came into this hobby of Lightroom plugin development, see my <a\nhref='\/blog\/lightroom-goodies\/register'>Plugin Registration page<\/a>.<\/p>\n\n\n<style type=\"text\/css\">\n   table.h td:first-child   { font-weight: bold; padding-right:1em }\n   table.h td p:first-child { margin-top: 0 }\n   table.h td               { padding-bottom: 10px }\n   p.h                      { font-weight:bold; font-size:130%; margin-top:50px }\n   span.h                   { font-weight:bold; font-size:130%; margin-top:50px }\n   table.h pre              { font-size: 70% }\n<\/style>\n<p id='history' style='margin-top:50px'><span class='h'>Version History<\/span>\n<br\/>\n(\n<a style='font-size:small'\n   class='quiet'\n   href='https:\/\/regex.info\/LightroomPlugins2\/feeds\/collection-publisher.rss'>Update Log via RSS\n   <img class='raw' src='https:\/\/regex.info\/i\/s\/feed-icon-14x14.png' width='14' height='14' style='position:relative;top:3px'\/><\/a>\n)<\/p>\n<table class='h'><tr valign='baseline'><td><a id='20231011.127' name='127'>20231011.127<\/a><\/td><td>\n<p><a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#CachedImagePreviewsFile'>CachedImagePreviewsFile<\/a> token.<\/p>\n\n                <p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 12.67.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20230316.126' name='126'>20230316.126<\/a><\/td><td>\n<p>Some debug logging wasn't robust in the face of Lightroom's inability to render an image.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220615.125' name='125'>20220615.125<\/a><\/td><td>\n<p>Found a bug with the setting of the file date on Windows.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220606.124' name='124'>20220606.124<\/a><\/td><td>\n<p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 12.42.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220516.123' name='123'>20220516.123<\/a><\/td><td>\n<p>Fixed a crash that happens when Lightroom can't render a DNG.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220309.122' name='122'>20220309.122<\/a><\/td><td>\n<p>Work around a bug in Lightroom 11.2 that causes publishing to get stuck. The workaround is to switch the view away from the collection being published. If the user does that switch manually, the bug goes away. This plugin update notices if the bug is being triggered, and if so, momentarily switches the view to the quick collection and back.<\/p>\n\n                <p>Added a button to recreate the target folder if it's not found.<\/p>\n\n                <p>Removed a bunch of debug logging that was slowing down the LUA token.<a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Newline<\/a> <\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220120.121' name='121'>20220120.121<\/a><\/td><td>\n<p>Whack-a-mole with PayPal's random changes.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20220119.120' name='120'>20220119.120<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#WEEKNUM'>WEEKNUM<\/a> token, along with DAYNUM, weeknum, and daynum.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20211219.119' name='119'>20211219.119<\/a><\/td><td>\n<p>Warn when PayPal seems to have given a bogus code in the web-confirmation page.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210721.118' name='118'>20210721.118<\/a><\/td><td>\n<p>Don't crash when the plugin is told not to handle videos, but a video is included in the export anyway.<\/p>\n\n                <p>Fixed that the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Province'>Province<\/a> template token did not respect the plugin-specific geo-privacy settings.<\/p>\n\n                <p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 12.25.<\/p>\n\n                <p>Fixed an issue with the {Newline} token, and added {Comma}, {Hyphen}, and {Space} for good measure.<\/p>\n\n                <p>Fixed a problem with filters on the {Keyword} token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210503.117' name='117'>20210503.117<\/a><\/td><td>\n<p>Added an experimental <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/folder-publisher#smart_preview_export'>Smart-Preview-Export Mode<\/a>.<\/p>\n                <p>Reverted the name-conflict workaround added in 20190815.104 for versions of Lightroom that have had that bug fixed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210415.116' name='116'>20210415.116<\/a><\/td><td>\n<p>Reworked the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Keywords<\/a> token to better accept filters.<\/p>\n                <p>Added 'separated by' to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#token'>People<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210211.115' name='115'>20210211.115<\/a><\/td><td>\n<p>Fixed the plugin crashing in the face of a failed video render.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20210116.114' name='114'>20210116.114<\/a><\/td><td>\n<p>Try to work around filename issues on Windows when trying update the filesystem time.<\/p>\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#ImageViewDirection'>ImageViewDirection<\/a> and ImageViewBearing tokens.<\/p>\n                <p>working around 'constant table overflow' error<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20201103.113' name='113'>20201103.113<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PF'>PF filter<\/a> to turn typographic fractions into plain-ASCII fractions.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20201020.112' name='112'>20201020.112<\/a><\/td><td>\n<p>Updates for Lr10<\/p>\n                <p>Be more aggressive in trying to figure out the capture time of photos when trying to set the export file time to the capture time.<\/p>\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SpeedKnots'>SpeedKnots<\/a> token.<\/p>\n                <p>Worked around an \"unknown key captureTime\" error.<\/p>\n                <p>Added the {PlusCode} and {GeoHash} <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template\">tokens<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200608.111' name='111'>20200608.111<\/a><\/td><td>\n<p>Handle FTP errors better.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200516.110' name='110'>20200516.110<\/a><\/td><td>\n<p>Oops, one wasn't offered the ability to change the root of the publish tree if the original folder no longer existed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200421.109' name='109'>20200421.109<\/a><\/td><td>\n<p>Fixed a reporting error with the new find-misshing-published-photos feature.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20200414.108' name='108'>20200414.108<\/a><\/td><td>\n<p>Added the ability to find missing published photos and have them marked for republish.<\/p>\n                <p>Work around a Windows bug related to canceling out of the registration dialog.<\/p>\n                <p>Some of the filename-related tokens could be incorrect in rare situations.<\/p>\n                <p>Added some extra debug logging to note whether the plugin is enabled.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20191115.107' name='107'>20191115.107<\/a><\/td><td>\n<p>Update to the FTP stuff to handle Windows servers.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20191029.106' name='106'>20191029.106<\/a><\/td><td>\n<p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 11.70.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190909.105' name='105'>20190909.105<\/a><\/td><td>\n<p>Added special {AbsSequenceFirst=####\"} and {AbsSequenceAppend=####} tokens.<\/p>\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#LensInfo'>LensInfo<\/a> template token.<\/p>\n                <p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Exposure'>Exposure<\/a> token to allow customization.<\/p>\n\n                <p>More <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>token<\/a> work: added {Urls}, and updated {ISO} and {Copyright} to allow customization.<\/p>\n\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#RelativeFolder'>{RelativeFolder}<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190815.104' name='104'>20190815.104<\/a><\/td><td>\n<p>Work around a bug in Lightroom related to filename conflicts (where two exported files have names that differ only in lettercase).<\/p>\n                <p>Fixed the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SST1'>SST1<\/a> and SST2 tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190801.103' name='103'>20190801.103<\/a><\/td><td>\n<p>Fixed a potential crash in a debug-logging statement.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190731.102' name='102'>20190731.102<\/a><\/td><td>\n<p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PublishCollectionName'>PublishCollectionName<\/a> token (and <tt>CollectionNames<\/tt> and <tt>CollectionFullNames<\/tt>) to remove the MIRROR: prefix from the name that mirrored collections within <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher'>my Collection Publisher plugin<\/a> automatically get.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190708.101' name='101'>20190708.101<\/a><\/td><td>\n<p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 11.50.<\/p>\n\n                <p>Added functions <tt>uc()<\/tt>, <tt>ucFirst()<\/tt>, <tt>lc()<\/tt>, and <tt>lcFirst()<\/tt> to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'>LUA<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190519.100' name='100'>20190519.100<\/a><\/td><td>\n<p>Fixed a problem related to template tokens and photos without capture times.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190423.99' name='99'>20190423.99<\/a><\/td><td>\n<p>Fixed an issue with {SequenceFirst}.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190414.98' name='98'>20190414.98<\/a><\/td><td>\n<p>Respect the publish-service \"Include Video Files\" setting during collection mirroring; if \"Include Video Files\" is not\n               selected, videos won't be mirrored from the source collection, and any videos already in the target will be removed.<\/p>\n\n\t           <p>Updated the keyword-related <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>tokens<\/a> to accept standard filters.<\/p>\n\n               <p>Work around a bug that sometimes causes plugins to be disabled when starting Lightroom via clicking on a catalog file.<\/p>\n\n               <p>Fix an \"Unknown key: captureTime\" crash.<\/p>\n\n               <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#GPSCoords'>GPSCoords<\/a> token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190307.97' name='97'>20190307.97<\/a><\/td><td>\n<p>Upgraded to the embedded copy of <a href='http:\/\/www.sno.phy.queensu.ca\/~phil\/exiftool\/'>ExifTool<\/a> to version 11.30.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20190228.96' name='96'>20190228.96<\/a><\/td><td>\n<p>Added <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Exiftool'>the <tt>{Exiftool=<\/tt>...<tt>}<\/tt> template token.<\/p>\n\n               <p>Added some extra debug loging.<\/p>\n\n               <p>If the plugin's attempt to create a folder fails, try again a few times before actually reporting the failure.<\/p>\n\n               <p>Added the <tt>PEOPLE<\/tt> variable to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'><tt>LUA<\/tt> token<\/a>.<\/p>\n\n               <p>Fixed a problem with the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#SpeedKPH'>SpeedKPH<\/a> token.<\/p>\n\n               <p>Added <b>TempC<\/b> and <b>TempF<\/b> to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> that my plugins understand.<\/p>\n\n               <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#TempC'>TempC<\/a> and <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#TempF'>TempF<\/a> tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20181015.95' name='95'>20181015.95<\/a><\/td><td>\n<p>Updates for Lr8 (Lightroom Classic CC Version 8).<\/p>\n               <p>Added <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PP'>the special <tt>PP()<\/tt> function<\/a> to the {LUA} token.<\/p>\n               <p>Added hierarchical options to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Keywords'>the <tt>Keywords<\/tt> token<\/a>.<\/p>\n               <p>Try to work around a Lightroom bug related to photo timezones and how Lightroom handles accessing plugin data.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20181004.94' name='94'>20181004.94<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#nicknames'>'nicknames' modifier<\/a> to the {People} token.<\/p>\n\n               <p>Added the SST1, SST2, and SS3 tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> that\n               the plugin understands.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180906.93' name='93'>20180906.93<\/a><\/td><td>\n<p>Try to avoid having unexpectedly-long error messages create too-big a dialog.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180803.92' name='92'>20180803.92<\/a><\/td><td>\n<p>Limit the amount of temporary disk used by Lightroom before handing files off to the plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180606.91' name='91'>20180606.91<\/a><\/td><td>\n<p>Fixed the {LUA} load() function.<\/p>\n\n               <p>Added the folowing <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>: <tt>{home}<\/tt>,  <tt>{desktop}<\/tt>, <tt>{temp}<\/tt>, <tt>{pictures}<\/tt>, <tt>{documents}<\/tt><\/p>\n\n               <p>Added the 'PCH' variable to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#LUA'>the {LUA} tag<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180525.90' name='90'>20180525.90<\/a><\/td><td>\n<p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#IptcDateTaken'>IptcDateTaken<\/a> token.<\/p>\n\n               <p>Clicking on the version number in the Plugin Manager now copies version info to the clipboard<\/p>\n\n               <p>Updated the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#PublishCollectionName'>PublishCollectionName<\/a> token to allow numeric arguments along the lines of the CollectionName token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180420.89' name='89'>20180420.89<\/a><\/td><td>\n<p>Fixed a bug when 'Token Examples' invoked in certain situations.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20180305.88' name='88'>20180305.88<\/a><\/td><td>\n<p>Added a bunch of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#filters'>token filters<\/a>: F2D F2S F2X B2D B2S B2X S2X A2D A2S A2X<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171229.87' name='87'>20171229.87<\/a><\/td><td>\n<p>Updates to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>the data templates<\/a> that my plugins understand:\n                updated the <b>Keywords<\/b> token, added <b>CollectionNames<\/b> and <b>CollectionFullNames<\/b> tokens, and\n                added a bunch of stuff (<b>KWf<\/b>, <b>CN<\/b>, <b>CFN<\/b>, <b>CNf<\/b>, <b>CFNf<\/b>) to the {LUA} token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171019.86' name='86'>20171019.86<\/a><\/td><td>\n<p>Oops, more Lr7 stuff.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171019.85' name='85'>20171019.85<\/a><\/td><td>\n<p>Updates for Lightroom 7<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20171011.84' name='84'>20171011.84<\/a><\/td><td>\n<p>Handle the renaming of mirrored collections.<\/p>\n\n               <p>Allow the \"If Exists\" feature of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>Templat Tokens<\/a> to work with the PluginProperty token.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170913.83' name='83'>20170913.83<\/a><\/td><td>\n<p>Update registration support to handle a stupid bug at PayPal that PayPal refuses to fix )-:<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170705.82' name='82'>20170705.82<\/a><\/td><td>\n<p>Fixed a bug introuded the other day in template tokens, related to Windows filenames.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170621.81' name='81'>20170621.81<\/a><\/td><td>\n<p>Added the <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template#optional\">\"only if it has a value\" feature<\/a> to template tokens.<\/p>\n\n               <p>Updated the <tt>{FolderName}<\/tt> token to allow <tt>{FolderName=1}<\/tt> (rather than requiring the plus as in <tt>{FolderName=+1}<\/tt>)<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170612.80' name='80'>20170612.80<\/a><\/td><td>\n<p>Fixed a bug introduced in the previous build that could cause some collections with dynamic template tokens\n               to fail.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170529.79' name='79'>20170529.79<\/a><\/td><td>\n<p>Watch out for collection names with characters that are not allowed in a Windows folder name,\n                and replace them with '-' (a minuse sign), to avoid crashing.<\/p>\n                <p>Added the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#Newline'>Newline<\/a> template token.<\/p>\n                <p>Enhanced the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#FolderName'>FolderName token<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170417.78' name='78'>20170417.78<\/a><\/td><td>\n<p>Added some debug logging.<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170309.77' name='77'>20170309.77<\/a><\/td><td>\n<p>Added the following tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens that my plugins understand<\/a>: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum<\/p>\n\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170224.76' name='76'>20170224.76<\/a><\/td><td>\n<p>Couldn't set the exported-copy file date older than about 50 years ago; fixed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20170216.75' name='75'>20170216.75<\/a><\/td><td>\n<p>The rules about what characters are disallowed in a folder name were too aggressive, so relax them.<\/p>\n              \n               <p>Fixed a bug with the keyword tables in the <tt>LUA<\/tt> token.<\/p>\n\n               <p>Added Weekday, Wday, weekday, wday, and ISO8601Date to the list of <a href=\"https:\/\/regex.info\/blog\/lightroom-goodies\/template\">template tokens<\/a> that my plugins understand.<\/p>\n\n               <p>Switch the log-sending mechanism to https.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160905.74' name='74'>20160905.74<\/a><\/td><td>\n<p>Added the following tokens to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>the templates that my plugins understand<\/a>: <tt>FileModYYYY<\/tt>, <tt>FileModYY<\/tt>, <tt>FileModMM<\/tt>, <tt>FileModDD<\/tt>, <tt>FileModHH<\/tt>, <tt>FileModMIN<\/tt>, <tt>FileModSS<\/tt>, <tt>FileYYYY<\/tt>, <tt>FileYY<\/tt>, <tt>FileMM<\/tt>, <tt>FileDD<\/tt>, <tt>FileHH<\/tt>, <tt>FileMIN<\/tt>, <tt>FileSS<\/tt>, {FilenameNumber}.<\/p>\n\n               <p>Better support for network shares on Windows.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160327.73' name='73'>20160327.73<\/a><\/td><td>\n<p>Fixed a \"TreePublisher_Mirror:91\" error.<\/p>\n               <p>Fix to get around a Mac display issue with Lr6 on OSX.<\/p>\n               <p>Added Russian-langauge support for the People-Support <code>{People}<\/code> tag.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160217.72' name='72'>20160217.72<\/a><\/td><td>\n<p>Fixed the \"Spec:2164\" error.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20160215.71' name='71'>20160215.71<\/a><\/td><td>\n<p>Added <b>ChildOf<\/b> and <b>DescendantOf<\/b> filters to the <b>{Keywords}<\/b>\n               and <b>{KeywordsAll}<\/b> <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>\n               that my plugins understand.<\/p>\n\n\t           <p>Fixed how custom {People} formatting works with people keywords that have no birthday associated with them.<\/p>\n\n\t           <p>Try to avoid yet another place where Lightroom gets hung because it can't handle certain kinds of dialogs\n               at the same time.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20151115.70' name='70'>20151115.70<\/a><\/td><td>\n<p>If there's an error exporting one particular image, try to continue with others and merely have Lightroom report\n               a summary of errors at the end.<\/p>\n\n               <p>Added support for sequence numbers on publish. See the \"sequence numbers\" link in the \"Enhanced File Renaming\"\n               section of the dialog.<\/p>\n\n               <p>Added {SpeedKPH} and {SpeedMPH} to the list of <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template\n               tokens supported by my plugins<\/a>.<\/p>\n\n               <p>The <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/people-support#token'>{People} token<\/a> wasn't working properly\n               for some keywords without a registered birthday.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150831.69' name='69'>20150831.69<\/a><\/td><td>\n<p>Allowed the Enhanced File Renaming to actually create sub-folders under where an image would normally be placed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150822.68' name='68'>20150822.68<\/a><\/td><td>\nAdded extra debug logging to track down file-copy issues.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150818.67' name='67'>20150818.67<\/a><\/td><td>\n<p>Added the ability to automatically mirror normal Lightroom collections in this plugin;\n               See <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/collection-publisher#mirror'>this link<\/a> for details.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150517.66' name='66'>20150517.66<\/a><\/td><td>\n<p>Fixed the \"SpecPeople:259: attemt to index al nil value\" error.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150222.65' name='65'>20150222.65<\/a><\/td><td>\n<p>If the root folder of the publish tree had a very long name, the view\/change buttons would be pushed\n               off the edge of the screen.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150219.64' name='64'>20150219.64<\/a><\/td><td>\n<p>In the \"Enhanced File Renaming\" section, add the ability to override the extension on the exported filename.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150206.63' name='63'>20150206.63<\/a><\/td><td>\n<p>In the POODLE-vunerability dialog, display a raw URL of a page on my site that discusses the issue, so that folks can be independently sure that the dialog is indeed from me and not malware.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20150131.62' name='62'>20150131.62<\/a><\/td><td>\n<p>Fix to the date_diff() function supported by the LUA <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template token<\/a>.<\/p>\n\n               <p>Updated the camera-name code to try to guess the actual camera model of Hasselblad H5D files, since in their infinite wisdom Hasselblad decided to encode three distinct models with the same internal code, making it impossible to know for sure what camera produced a given image file.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20141219.61' name='61'>20141219.61<\/a><\/td><td>\nAdded a bit more debug-logging for when a file copy can't be done.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20141019.60' name='60'>20141019.60<\/a><\/td><td>\nWindows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140923.59' name='59'>20140923.59<\/a><\/td><td>\nAdded the <b>LrMD5<\/b>, <b>LrLocalization<\/b>, <b>LrSystemInfo<\/b>, and <b>LrMath<\/b> packages to the {LUA}\n               <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template token<\/a>.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140902.58' name='58'>20140902.58<\/a><\/td><td>\nIf the plugin failed to create such-and-such a folder because a file of\n               the same name already exists, report the details to the user.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140828.57' name='57'>20140828.57<\/a><\/td><td>\nExtra debug logging to track down a folder-creating problem on some systems\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140802.56' name='56'>20140802.56<\/a><\/td><td>\n<p>Made the {GPSAltitude}, {Altitude}, and {GPSCoordinates} tokens subject to the geo-privacy settings like the other geo-related tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140731.55' name='55'>20140731.55<\/a><\/td><td>\nRegistration fix for Lr5.6\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140720.54' name='54'>20140720.54<\/a><\/td><td>\nMore Creative-Cloud support.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140715.53' name='53'>20140715.53<\/a><\/td><td>\n<p>Fixed an issue with Creative-Cloud revalidation.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140712.52' name='52'>20140712.52<\/a><\/td><td>\n<p>Lr5.5 and later Creative-Cloud installs can now revalidate themselves if needed.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140710.51' name='51'>20140710.51<\/a><\/td><td>\nSigh, had a bug in the Creative-Cloud support.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140708.50' name='50'>20140708.50<\/a><\/td><td>\n<p>Now supports Lr5.5+ Creative-Cloud Installs.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140704.49' name='49'>20140704.49<\/a><\/td><td>\nSigh, introduced an error for some folks with the rebuild the other day.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140630.48' name='48'>20140630.48<\/a><\/td><td>\nBuild-system update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140613.47' name='47'>20140613.47<\/a><\/td><td>\n<p>Added date_diff() and raw_time_diff() functions to <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#lua'>the special {LUA} token<\/a> understood by the plugin.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140612.46' name='46'>20140612.46<\/a><\/td><td>\nUnder some error conditions plugin would crash instead of presenting the proper error message.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140514.45' name='45'>20140514.45<\/a><\/td><td>\nGot rid of a \"Done\" confirmation dialog that's not really necessary.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140509.44' name='44'>20140509.44<\/a><\/td><td>\n<p>Added new tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template language<\/a> the plugin understands: LrVersion, LrVersionMajor, LrVersionMinor, LrVersionRevision, LrVersionBuild, Location, CatalogName, CatalogPath, OperatingSystem, OS<\/p>\n               <p>Added new token filters: NS and LO<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140423.43' name='43'>20140423.43<\/a><\/td><td>\nFix a location-related template-token bug introduced in a recent build.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140422.42' name='42'>20140422.42<\/a><\/td><td>\n<p>Fixed a bug in the \"smoother revalidation\" stuff recently added.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140417.41' name='41'>20140417.41<\/a><\/td><td>\n<p>Enhancements to the FTP stuff: take care not to work with \".\" and \"..\" that some servers return.<\/p>\n               <p>Make the revalidation process smoother, especially for folks using Lr5.4 and later.<\/p>\n               <p>The {Empty} template token wasn't working properly.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20140321.40' name='40'>20140321.40<\/a><\/td><td>\n<p>Internally track whether exports are via the master image or via a smart preview.\n               In the future this may allow for a \"republish those for which a master is now available\" feature.<\/p>\n\n               <p>Worked around a mysterious \"attempt to get length of a nil value\" bug. \n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20131213.39' name='39'>20131213.39<\/a><\/td><td>\nAdded {PublishCollectionName}, {PublishCollectionDepth}, and {PublishServiceTitle} tokens to the\n               <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>preset templates<\/a>. See template-token web page for important restrictions.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20131102.38' name='38'>20131102.38<\/a><\/td><td>\nUpdate for OS X Mavricks\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20131010.37' name='37'>20131010.37<\/a><\/td><td>\nYikes, it seems that version 20130905.36 broke the \"Metadata that Triggers Republish\" section, clearing all items you might\n               have had set (well, all but Caption). Sorry about that. Please visit the \"Metadata that Triggers Republish\" section to\n               reconfigure to your liking.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130926.36' name='36'>20130926.36<\/a><\/td><td>\nOops, fix a bug introduced in the previous update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130925.35' name='35'>20130925.35<\/a><\/td><td>\n<p>Added a bunch of tokens to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>preset templates<\/a> supported:\n                <tt>ExportFormat<\/tt>, <tt>ExportColorSpace<\/tt>, <tt>ExportBitDepth<\/tt>, <tt>ExportQuality<\/tt>, <tt>ExportSharpeningLevel<\/tt>,\n                <tt>ExportSharpeningMedia<\/tt>, <tt>IpernityUrl<\/tt>, <tt>GoogleDriveUrl<\/tt>, and <tt>TumblrUrl<\/tt>.<\/p>\n\n                <p>The token-examples dialog had been broken.\n                Also deprecated <tt>Folder<\/tt> and <tt>Path<\/tt> tokens in preference to <tt>FolderName<\/tt> and <tt>FolderPath<\/tt> tokens.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130909.34' name='34'>20130909.34<\/a><\/td><td>\n<p>Work around a Lightroom bug concerning the determination of whether a photo is offline.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130905.33' name='33'>20130905.33<\/a><\/td><td>\n<p>Respond more gracefully when enhanced file renaming can't come up with something valid.<\/p>\n\n\t           <p>Fixed the KW\/KWE tables in <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>;\n               they had been broken when using load for the script.<\/p>\n\n               <p>Added an \"Ask\" option to the \"Export with Smart Previews?\" section, so one can be alerted to the situation at each export.<\/p>\n\n               <p>Made the file time control stuff (added in the previous update) optional, because it imparts a (small) performance penalty.\n               The default is set to \"off\", so you'll need to re-enable it if you actually care about the file date\/time stuff.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130630.32' name='32'>20130630.32<\/a><\/td><td>\n<p>When \"Format\" is \"ORIGINAL\" (meaning to spit out the original image pixels with new metadata, instead of the developed\n               version with new metadata), the plugin didn't handle XMP sidecars properly at all. Now it does.<\/p>\n\n               <p>You now have control over the file time of exported copies (set to the image capture time, or the time of export).<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130620.31' name='31'>20130620.31<\/a><\/td><td>\nAllow published copies to remain on disk even if a photo is deleted from Lightroom.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130613.30' name='30'>20130613.30<\/a><\/td><td>\nBetter support for plugin revalidation.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130612.29' name='29'>20130612.29<\/a><\/td><td>\nA failure for the plugin to copy a file on disk resulted in a plugin crash instead of the appropriate error message display.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130612.28' name='28'>20130612.28<\/a><\/td><td>\n<p>Added the ability in Lr5 to export images even if the master image file is not available, so long as there's a smart preview available.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130611.27' name='27'>20130611.27<\/a><\/td><td>\nYet another Lr5 update\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130610.26' name='26'>20130610.26<\/a><\/td><td>\nFinal update for Lr5\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130513.25' name='25'>20130513.25<\/a><\/td><td>\nMore changes for the root-selection problem... really seems to be a bug in Lightroom, but it's hard to tell because\n               I can't replicate the bug myself.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130501.24' name='24'>20130501.24<\/a><\/td><td>\nUpdate for Lr5\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130412.23' name='23'>20130412.23<\/a><\/td><td>\nBuild system update.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130329.22' name='22'>20130329.22<\/a><\/td><td>\n<p>More with with the code that handles changing the root of the publish tree.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130220.21' name='21'>20130220.21<\/a><\/td><td>\n<p>Added support for some new <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>:\n               <b>FlagStatus<\/b> (requires Lr4.1 or later), and for Lr3 and later, a bunch of IPTC extended metadata:\n               <b>AdditionalModelInfo<\/b>,\n               <b>CodeOfOrgShown<\/b>,\n               <b>DigImageGUID<\/b>,\n               <b>Event<\/b>,\n               <b>ImageSupplierImageId<\/b>,\n               <b>MinorModelAge<\/b>,\n               <b>ModelAge<\/b>,\n               <b>ModelReleaseID<\/b>,\n               <b>ModelReleaseStatus<\/b>,\n               <b>NameOfOrgShown<\/b>,\n               <b>PersonShown<\/b>,\n               <b>PlusVersion<\/b>,\n               <b>PropertyReleaseID<\/b>,\n               <b>PropertyReleaseStatus<\/b>, and\n               <b>SourceType<\/b>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130209.20' name='20'>20130209.20<\/a><\/td><td>\nMore build-system maintenance\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130206.19' name='19'>20130206.19<\/a><\/td><td>\nTweak for my registration system\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20130121.17' name='17'>20130121.17<\/a><\/td><td>\n<p>The plugin wasn't robust against case-only changes in filenames or folders. This is a real pain because such names (e.g. \"test\" vs. \"Test\")\n               appear different to the plugin, but they refer to the same underlying file on most filesystems for most users (because most Windows and\n               OSX file systems have case-insensitive file naming). There's no easy way for the plugin to make such renames, so the plugin now\n               reports that it won't work for existing files, and offers a chance to abort along with info on how to actually get it done: rename to\n               something different (e.g. from \"test\" to \"test2\", then from \"test2\" to \"Test\").<\/p>\n\n               <p>While doing a rename, Lightroom pops up a \"this may take a while; proceed?\" dialog, and if the user canceled it, the plugin\n               neglected to cancel the entire update, leaving things in an inconsistent state.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121210.16' name='16'>20121210.16<\/a><\/td><td>\nAdded some extra debug logging.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121024.15' name='15'>20121024.15<\/a><\/td><td>\nAllow Video to be FTP'd as well.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121009.14' name='14'>20121009.14<\/a><\/td><td>\n<p>Workaround for an \"<i>attempt to call field 'getProgressScope'<\/i>\" bug introduced in Lr4.2.<\/p>\n\n               <p>Disallow DPX video export because it breaks things.<\/p>\n\n               <p>Enhance the <b>{EMPTY}<\/b> <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template token<\/a> so that it\n               interrupts the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template#joining'>squelching of superfluous joining characters<\/a>.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121004.13' name='13'>20121004.13<\/a><\/td><td>\nOops, hte file-extension thing got worse, not better... reverting that change.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20121003.12' name='12'>20121003.12<\/a><\/td><td>\n<p>Work around a \"situation\" (likely Lr bug) where exported video loses its file extension.<\/p>\n               <p>More debug logging for the elusive \"no root folder\" problem.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120821.11' name='11'>20120821.11<\/a><\/td><td>\n<p>Updates to the environment in the <tt>{LUA}<\/tt> token (in the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a>\n                in my plugins) to include <b>photoTime()<\/b> and <b>currentTime()<\/b>, and other changes to match the updated docs at that link.<\/p>.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120722.10' name='10'>20120722.10<\/a><\/td><td>\n<p>Added the ability to create dynamic destinations on disk via naming patterns using\n               <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>plugin templates<\/a>.\n               This is a pretty big change, so you may want to test carefully before using it wholesale.<\/p>\n\n               <p>Reduced the amount of debug logging done, unless the \"debug logging\" option is checked in the plugin manager.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120531.9' name='9'>20120531.9<\/a><\/td><td>\n<p>Oops, I was <i>moving<\/i> the original XMP file (when the Publish format was \"Original\" instead of <i>copying<\/i> it. Fixed.<\/p>\n\n              <p>Update to handle the Mac App Store version of Lightroom.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120429.8' name='8'>20120429.8<\/a><\/td><td>\n<p>Added the ability to move\/reset the root folder. As a byproduct, this should allow the \"choose a root folder\" situation\n              to be repaired.<\/p>\n\n              <p>In some crazy file-renaming situations, the plugin could get confused about the file extension.<\/p>\n\n\t          <p>Enhanced the send-log dialog to hopefully make reports more meaningful to me, yielding, I hope, the ability to respond more\n              sensibly to more reports.<\/p>\n\n              <p>Added to the <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/template'>template tokens<\/a> supported by the plugin:\n                <b>{FullMasterFile}<\/b>,\n                <b>{FullMasterFolder}<\/b>,\n                <b>{FullExportedFile}<\/b>, and\n                <b>{FullExportedFolder}<\/b>\n                <\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120330.7' name='7'>20120330.7<\/a><\/td><td>\n<p>When a new collection is created, require that the type be explicitly selected. This may help\n              avoid screwups when one doesn't notice that there are different types to being with.<\/p>\n              <p>Update to handle 4.1RC<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120315.6' name='6'>20120315.6<\/a><\/td><td>\nAdd some extra debug logging to try to track down some network-folder errors.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120309.5' name='5'>20120309.5<\/a><\/td><td>\n<p>Update to the debug logging to better track down timing issues that might arise.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120228.4' name='4'>20120228.4<\/a><\/td><td>\n<p>Wasn't handling some kind of file-rename templates properly.<\/p>\n              <p>Now handles things much more gracefully when some files are offline when the publish is started.<\/p>\n              <p>Better support for video in Lr4.<\/p>\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120217.3' name='3'>20120217.3<\/a><\/td><td>\nDidn't handle XMP sidecars correctly when publishing original raw files.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120217.2' name='2'>20120217.2<\/a><\/td><td>\nDiscovered why \"metadata that triggers a republish\" wasn't reliable, and fixed it.\n\n<\/td><\/tr><\/table>\n<table class='h'><tr valign='baseline'><td><a id='20120213.1' name='1'>20120213.1<\/a><\/td><td>\nInitial release, evolving from my earlier\n              <a href='https:\/\/regex.info\/blog\/lightroom-goodies\/tree-publisher'>tree-publisher plugin<\/a>,\n              which dated back to the summer of 2010.\n\n\n<\/td><\/tr><\/table>\n\n<\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>This plugin works in Lightroom Classic, and older versions as far back as Lightroom 3 (though some features depend on the version of Lightroom).<\/p> <p>The same download works for both Windows and Mac. See the box to the upper right for the download link (in orange) and installation instructions.<\/p> <p style='margin: 40px auto'>This is a sister plugin to my Folder Publisher plugin, which is similar to this plugin except that Folder Publisher creates a layout on disk that mirrors the images' folder hierarchy instead of their collection hierarchy.<\/p> <p>Unlike a normal export, this Publish service allows you to create an [...]","protected":false},"author":1,"featured_media":0,"parent":864,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/1939"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=1939"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/1939\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/pages\/864"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=1939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}