From 82d98da90b18fb641d6266cd04f0974bebf0daca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Galv=C3=A3o?= Date: Tue, 30 Nov 2021 00:01:38 +0000 Subject: [PATCH] Initial commit --- .github/ISSUE_TEMPLATE/bug_report.yml | 32 ++ LICENSE | 29 ++ README.md | 21 + Workflow/icon.png | Bin 0 -> 55502 bytes Workflow/info.plist | 608 ++++++++++++++++++++++++++ 5 files changed, 690 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Workflow/icon.png create mode 100644 Workflow/info.plist diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..c695a77 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,32 @@ +name: Bug Report +description: File a bug report +body: + - type: input + attributes: + label: Workflow version + description: Open the Workflow in Alfred Preferences → click [𝓧] → Workflow Version + validations: + required: true + - type: input + attributes: + label: Alfred version + description: In the top left corner of Alfred Preferences → General + validations: + required: true + - type: input + attributes: + label: macOS version + description: Click  on the menubar → About This Mac → Overview + validations: + required: true + - type: textarea + attributes: + label: Debugger output + description: Open the Workflow in Alfred Preferences → click the bug icon → perform the failing action + render: alfred_debugger + validations: + required: true + - type: textarea + attributes: + label: More details + description: Explain what you did, what happened, and what you expected to happen diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7a9b687 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2021, Running with Crayons Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b2805d --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# icon TinyPNG Alfred Workflow + +Compress images via TinyPNG + +## Instructions + +Use the File Action, File Filter, or External Trigger to compress PNG, JPEG, and WebP images via [TinyPNG](https://tinypng.com/). + +![](https://i.imgur.com/mlX713P.png) + +Before using the Workflow, [request an API key](https://tinypng.com/developers) and add it to the `api_key` Workflow Environment Variable. + +`backup_originals` takes a directory path to save the unmodified images. Use `~` to reference your home directory. Leave it empty to not save backups. + +## Download + +[Get the latest release.](https://github.com/alfredapp/tinypng-workflow/releases/latest/download/TinyPNG.alfredworkflow) + +## License + +3-Clause BSD diff --git a/Workflow/icon.png b/Workflow/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..29c13371e9e443e84889612d155f529cae16f967 GIT binary patch literal 55502 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%0D{reOTU)$>K6AwxG52GN9AJ>y<(x+3Gy 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 literal 0 HcmV?d00001 diff --git a/Workflow/info.plist b/Workflow/info.plist new file mode 100644 index 0000000..9b31725 --- /dev/null +++ b/Workflow/info.plist @@ -0,0 +1,608 @@ + + + + + bundleid + com.alfredapp.tinypng + connections + + 392049EC-35AB-4C54-8A20-5565FBF67B32 + + + destinationuid + F2C7428D-06C2-4B70-8C70-8348AE71B137 + modifiers + 0 + modifiersubtext + + vitoclose + + + + 72DE7DEE-B771-41EA-9A7C-F10F4F7A5DC5 + + 7EA1CA9C-97FC-4B89-999A-7CFE3D8CB0AE + + + destinationuid + F2C7428D-06C2-4B70-8C70-8348AE71B137 + modifiers + 0 + modifiersubtext + + vitoclose + + + + C22E0CBD-0683-4E3A-80E5-6532D8E5440E + + + destinationuid + 4D6432C7-2943-4DB6-A25F-B0AC57D3C6F2 + modifiers + 0 + modifiersubtext + + sourceoutputuid + 2402FAA7-E693-486D-84EA-BF27BF8E4AFD + vitoclose + + + + destinationuid + 6D56D157-3EBC-41F6-A030-1C9A9E4490DF + modifiers + 0 + modifiersubtext + + vitoclose + + + + E4256C3E-6831-43F5-805C-F667A3D7E726 + + + destinationuid + 72DE7DEE-B771-41EA-9A7C-F10F4F7A5DC5 + modifiers + 0 + modifiersubtext + + vitoclose + + + + destinationuid + C22E0CBD-0683-4E3A-80E5-6532D8E5440E + modifiers + 0 + modifiersubtext + + vitoclose + + + + F2C7428D-06C2-4B70-8C70-8348AE71B137 + + + destinationuid + DB3CBD80-5AFA-4CF7-97B8-A9AAB1651C88 + modifiers + 0 + modifiersubtext + + vitoclose + + + + destinationuid + E4256C3E-6831-43F5-805C-F667A3D7E726 + modifiers + 0 + modifiersubtext + + vitoclose + + + + FD60CC76-3DD5-45D7-A184-5A5580E0790F + + + destinationuid + F2C7428D-06C2-4B70-8C70-8348AE71B137 + modifiers + 0 + modifiersubtext + + vitoclose + + + + + createdby + Vítor Galvão + description + Compress images via TinyPNG + disabled + + name + TinyPNG + objects + + + config + + concurrently + + escaping + 0 + script + # THESE VARIABLES MUST BE SET. SEE THE ONEUPDATER README FOR AN EXPLANATION OF EACH. +readonly remote_info_plist="https://raw.githubusercontent.com/alfredapp/tinypng-workflow/master/Workflow/info.plist" +readonly workflow_url="alfredapp/tinypng-workflow" +readonly download_type='github_release' +readonly frequency_check='4' + +# FROM HERE ON, CODE SHOULD BE LEFT UNTOUCHED! +function abort { + echo "${1}" >&2 + exit 1 +} + +function url_exists { + curl --silent --location --output /dev/null --fail --range 0-0 "${1}" +} + +function notification { + local -r notificator="$(find . -type d -name 'Notificator.app')" + if [[ -n "${notificator}" ]]; then + "${notificator}/Contents/Resources/Scripts/notificator" --message "${1}" --title "${alfred_workflow_name}" --subtitle 'A new version is available' + return + fi + + local -r terminal_notifier="$(find . -type f -name 'terminal-notifier')" + if [[ -n "${terminal_notifier}" ]]; then + "${terminal_notifier}" -title "${alfred_workflow_name}" -subtitle 'A new version is available' -message "${1}" + return + fi + + osascript -e "display notification \"${1}\" with title \"${alfred_workflow_name}\" subtitle \"A new version is available\"" +} + +# Local sanity checks +readonly local_info_plist='info.plist' +readonly local_version="$(/usr/libexec/PlistBuddy -c 'print version' "${local_info_plist}")" + +[[ -n "${local_version}" ]] || abort 'You need to set a workflow version in the configuration sheet.' +[[ "${download_type}" =~ ^(direct|page|github_release)$ ]] || abort "'download_type' (${download_type}) needs to be one of 'direct', 'page', or 'github_release'." +[[ "${frequency_check}" =~ ^[0-9]+$ ]] || abort "'frequency_check' (${frequency_check}) needs to be a number." + +# Check for updates +if [[ $(find "${local_info_plist}" -mtime +"${frequency_check}"d) ]]; then + if ! url_exists "${remote_info_plist}"; then abort "'remote_info_plist' (${remote_info_plist}) appears to not be reachable."; fi # Remote sanity check + + readonly tmp_file="$(mktemp)" + curl --silent --location --output "${tmp_file}" "${remote_info_plist}" + readonly remote_version="$(/usr/libexec/PlistBuddy -c 'print version' "${tmp_file}")" + + if [[ "${local_version}" == "${remote_version}" ]]; then + touch "${local_info_plist}" # Reset timer by touching local file + exit 0 + fi + + if [[ "${download_type}" == 'page' ]]; then + notification 'Opening download page…' + open "${workflow_url}" + exit 0 + fi + + download_url="$([[ "${download_type}" == 'github_release' ]] && curl --silent "https://api.github.com/repos/${workflow_url}/releases/latest" | grep 'browser_download_url' | head -1 | sed -E 's/.*browser_download_url": "(.*)"/\1/' || echo "${workflow_url}")" + + if url_exists "${download_url}"; then + notification 'Downloading and installing…' + curl --silent --location --output "${HOME}/Downloads/${alfred_workflow_name}.alfredworkflow" "${download_url}" + open "${HOME}/Downloads/${alfred_workflow_name}.alfredworkflow" + else + abort "'workflow_url' (${download_url}) appears to not be reachable." + fi +fi + scriptargtype + 1 + scriptfile + + type + 0 + + type + alfred.workflow.action.script + uid + DB3CBD80-5AFA-4CF7-97B8-A9AAB1651C88 + version + 2 + + + config + + concurrently + + escaping + 102 + script + # Constants +readonly backup_dir="${backup_originals/#\~/${HOME}}/$(date -u +'%Y.%m.%d.%H%M%S')" + +# Helpers +function get_json_key { + local -r json="${1}" # JSON string + local -r key="${2}" # Of the form ['first']['second'] or .first.second + + local -r result="$(osascript -l 'JavaScript' -e "function run(argv) { return JSON.parse(argv[0])${key} }" "${json}")" + + [[ -n "${key}" && -n "${result}" ]] || return 1 # If no valid result + + echo -n "${result}" +} + +function error { + echo "${1}" >&2 # For Alfred's debugger + echo "error|${1}" # For the notification and sound + exit 1 +} + +# Main +# Abort if backups are desirable but cannot create directory +if [[ -n "${backup_originals}" ]] && ! mkdir -p "${backup_dir}"; then + error "Could not create backups directory at ${backup_originals}!" +fi + +# Loop over images +for image in "${@}"; do + json_response="$(curl --silent --user api:"${api_key}" --data-binary @"${image}" -i 'https://api.tinify.com/shrink' | tail -1)" + + # On error + if [[ -n "$(get_json_key "${json_response}" '.error')" ]]; then + error "$(get_json_key "${json_response}" '.message')" + fi + + # Backup image + if [[ -d "${backup_dir}" ]]; then + cp "${image}" "${backup_dir}" + fi + + # Save result + compressed_url="$(get_json_key "${json_response}" '.output.url')" + curl --silent "${compressed_url}" --output "${image}" +done + +echo 'success|Finished compressing' + scriptargtype + 1 + scriptfile + + type + 0 + + type + alfred.workflow.action.script + uid + F2C7428D-06C2-4B70-8C70-8348AE71B137 + version + 2 + + + config + + acceptsmulti + 1 + filetypes + + org.webmproject.webp + public.jpeg + public.png + + name + TinyPNG Compression + + type + alfred.workflow.trigger.action + uid + 7EA1CA9C-97FC-4B89-999A-7CFE3D8CB0AE + version + 1 + + + config + + lastpathcomponent + + onlyshowifquerypopulated + + removeextension + + text + {var:split2} + title + TinyPNG + + type + alfred.workflow.output.notification + uid + 72DE7DEE-B771-41EA-9A7C-F10F4F7A5DC5 + version + 1 + + + config + + anchorfields + + argumenttrimmode + 0 + argumenttype + 0 + daterange + 0 + fields + + + field + kMDItemDisplayName + not + + split + + value + {query} + words + + + + field + kMDItemAlternateNames + not + + split + + value + {query} + words + + + + field + kMDItemFinderComment + not + + split + + value + {query} + words + + + + includesystem + + keyword + tinypng + limit + 0 + runningsubtext + + scopes + + sortmode + 0 + subtext + Filter for images to compress + title + TinyPNG Compression + types + + org.webmproject.webp + public.jpeg + public.png + + withspace + + + type + alfred.workflow.input.filefilter + uid + 392049EC-35AB-4C54-8A20-5565FBF67B32 + version + 2 + + + config + + delimiter + | + trimarguments + + variableprefix + split + + type + alfred.workflow.utility.split + uid + E4256C3E-6831-43F5-805C-F667A3D7E726 + version + 1 + + + config + + triggerid + compress + + type + alfred.workflow.trigger.external + uid + FD60CC76-3DD5-45D7-A184-5A5580E0790F + version + 1 + + + config + + soundname + Glass + systemsound + + + type + alfred.workflow.output.playsound + uid + 4D6432C7-2943-4DB6-A25F-B0AC57D3C6F2 + version + 1 + + + config + + conditions + + + inputstring + {var:split1} + matchcasesensitive + + matchmode + 0 + matchstring + success + outputlabel + Success + uid + 2402FAA7-E693-486D-84EA-BF27BF8E4AFD + + + elselabel + Error + + type + alfred.workflow.utility.conditional + uid + C22E0CBD-0683-4E3A-80E5-6532D8E5440E + version + 1 + + + config + + soundname + Basso + systemsound + + + type + alfred.workflow.output.playsound + uid + 6D56D157-3EBC-41F6-A030-1C9A9E4490DF + version + 1 + + + readme + Use the File Action, File Filter, or External Trigger to compress PNG, JPEG, and WebP images via [TinyPNG](https://tinypng.com/). + +![](https://i.imgur.com/mlX713P.png) + +Before using the Workflow, [request an API key](https://tinypng.com/developers) and add it to the `api_key` Workflow Environment Variable. + +`backup_originals` takes a directory path to save the unmodified images. Use `~` to reference your home directory. Leave it empty to not save backups. + uidata + + 392049EC-35AB-4C54-8A20-5565FBF67B32 + + xpos + 35 + ypos + 190 + + 4D6432C7-2943-4DB6-A25F-B0AC57D3C6F2 + + xpos + 575 + ypos + 320 + + 6D56D157-3EBC-41F6-A030-1C9A9E4490DF + + xpos + 575 + ypos + 455 + + 72DE7DEE-B771-41EA-9A7C-F10F4F7A5DC5 + + xpos + 575 + ypos + 190 + + 7EA1CA9C-97FC-4B89-999A-7CFE3D8CB0AE + + xpos + 35 + ypos + 40 + + C22E0CBD-0683-4E3A-80E5-6532D8E5440E + + xpos + 455 + ypos + 355 + + DB3CBD80-5AFA-4CF7-97B8-A9AAB1651C88 + + colorindex + 12 + note + OneUpdater + xpos + 455 + ypos + 40 + + E4256C3E-6831-43F5-805C-F667A3D7E726 + + xpos + 415 + ypos + 220 + + F2C7428D-06C2-4B70-8C70-8348AE71B137 + + xpos + 235 + ypos + 40 + + FD60CC76-3DD5-45D7-A184-5A5580E0790F + + xpos + 35 + ypos + 320 + + + variables + + api_key + + backup_originals + /tmp/com.alfredapp.tinypng_backups + + variablesdontexport + + api_key + + version + 2021.1 + webaddress + https://github.com/alfredapp/tinypng-workflow + +