paint-brush
Photoshop API를 사용하여 이미지 작업 흐름을 자동화하는 방법~에 의해@raymondcamden
2,425 판독값
2,425 판독값

Photoshop API를 사용하여 이미지 작업 흐름을 자동화하는 방법

~에 의해 Raymond Camden7m2023/06/30
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

Pipedream은 일반적인 워크플로를 구축하기 위한 로우 코드/노 코드 솔루션입니다. Microsoft PowerAutomate 및 Workfront Fusion과 같은 공간에 있습니다. 이번 게시물에서는 Pipedream을 사용하여 Dropbox 기반 워크플로를 구축하는 방법을 보여드리겠습니다.
featured image - Photoshop API를 사용하여 이미지 작업 흐름을 자동화하는 방법
Raymond Camden HackerNoon profile picture

최근 우리는 개발자가 Photoshop API를 활용하는 방법에 대해 논의했습니다. 해당 게시물에서는 Azure에 저장된 파일을 사용하여 API 중 하나를 호출하는 간단한 Node.js 스크립트를 공유했습니다.


간단했습니다. 액세스 토큰을 받고, 입력 문서로 API 작업을 시작하고, 완료를 폴링하고, 결과를 확인하는 것이었습니다.


단순하다는 것은 사용자 정의 작업 흐름에 쉽게 통합할 수 있다는 의미이므로 좋습니다. 오늘 포스팅에서는 바로 그 일을 해보겠습니다.

우리의 작업 흐름

먼저 워크플로가 수행할 작업을 정의해 보겠습니다. 사진을 저장하기 위해 클라우드 저장소 제공업체(이 경우에는 Dropbox)를 사용한다고 상상해 보세요. 우리의 워크플로우는 이 폴더를 모니터링하고 새 사진이 추가될 때 트리거됩니다.


사진이 추가되면 파일을 가져와 Lightroom "AutoTone" 기능을 실행하는 엔드포인트로 보냅니다. 이 기능은 사진의 노출, 대비 및 기타 문제를 수정하려고 시도합니다.


예를 들어( 문서 에서 바로 훔친) 수정 사항의 영향을 보여주는 전후는 다음과 같습니다.


이미지에 영향을 주기 전과 후입니다.

API가 완료되면 결과를 Dropbox의 다른 폴더에 저장합니다. 원본을 덮어쓸 수도 있지만 대부분 사람들은 자신이 선호하는 것을 최종 확인하기 위해 두 복사본을 모두 원할 것입니다.

워크플로 플랫폼

워크플로에는 Pipedream 을 사용하겠습니다. Pipedream은 일반적인 워크플로를 구축하기 위한 로우 코드/노 코드 솔루션입니다. Microsoft PowerAutomate 및 Workfront Fusion과 동일한 공간에 있습니다. (그리고 해당 플랫폼에서도 곧 우리의 사례를 볼 수 있을 것으로 예상할 수 있습니다.)


Pipedream은 프로젝트의 더 어렵거나 심지어 지루한 측면을 "플러그 앤 플레이"로 만들어 개발자에게 큰 도움이 됩니다. 예를 들어, 워크플로를 시작하는 항목인 트리거를 정의할 때 Pipedream에는 사전 구축된 대규모 코드 블록 세트가 함께 제공됩니다.


워크플로우 구축 방법을 시연하기 시작하면 실제로 작동하는 모습을 볼 수 있습니다. Pipedream에는 무료 등급이 있으므로 이 글을 읽고 싶은 분들은 가입 후 그렇게 하실 수 있습니다.


이전에 Pipedream을 사용해 본 적이 없다면 훌륭한 Pipedream University에서 작동 방식에 대한 소개를 확인하세요. 그들은 또한 훌륭한 문서를 가지고 있습니다. 마지막으로 여기의 친절한 작성자도 Pipedream에 대해 글을 썼습니다 .


그걸 해결하고 건물을 짓자!

1단계 - 방아쇠

Pipedream 워크플로는 프로세스를 시작해야 하는 "이벤트"를 나타내는 트리거로 시작됩니다. Pipedream에는 이러한 트리거가 많이 내장되어 있으며(직접 작성할 수도 있음) 운 좋게도 Dropbox 트리거의 "새 파일"이 지원됩니다.


Pipedream 트리거 설정


"새 파일" 트리거를 선택하면 이를 구성할 수 있는 간단한 인터페이스가 제공됩니다.


Dropbox 새 파일 트리거 옵션 지정


맨 위에는 인증 측면이 있습니다. 여기에서 Pipedream을 Dropbox 계정에 연결할 수 있습니다. 무엇보다도, 한 번만 수행하면 여러 워크플로에서 해당 연결을 재사용할 수 있습니다.


다음으로 Path 값을 기록해 둡니다. 여기에 입력하면 Pipedream이 계정을 기반으로 자동 완성을 시도하거나 간단히 경로를 입력할 수 있습니다. 이미지를 가져올 폴더로 /PSAPI_Input 사용하겠습니다.


다음 두 설정은 무시할 수 있지만 최종 설정인 Include Link true로 전환해야 합니다. API에 데이터를 가져오는 방법을 알려줄 수 있도록 해당 링크가 필요합니다.


워크플로에 대해 최종 구성된 트리거는 다음과 같습니다.


최종 구성된 트리거 단계


요약하자면, 현재 Dropbox 계정의 특정 폴더에 파일이 추가되는 즉시 자동으로 실행되도록 워크플로를 구성했습니다.

2단계 - 업로드 URL 받기

Photoshop API가 실행되면 입력 URL과 출력 URL이라는 최소한 두 가지가 필요합니다. 기본적으로 입력을 읽을 위치와 결과를 저장할 위치입니다.


우리의 입력은 Dropbox에 추가된 새 파일이 될 것입니다. 우리의 출력은 Lightroom에서 수정된 이미지의 위치가 될 것입니다.


이를 지원하려면 Dropbox에 데이터를 저장하는 데 사용할 수 있는 특수 URL을 생성하도록 요청해야 합니다. Pipedream에는 많은 Dropbox 작업이 내장되어 있지만 안타깝게도 이 특정 작업은 없습니다.


다행히 Pipedream을 사용하면 이미 인증을 처리한 사용자 지정 코드를 사용하여 단계를 생성할 수 있습니다. 트리거에서 기존 Dropbox 계정을 지정했다는 점을 기억하세요. 이렇게 했기 때문에 코드를 작성하고 Pipedream이 인증을 처리하도록 할 수 있습니다.


Dropbox API를 참조하여 우리에게 꼭 필요한 get_temporary_upload_link 엔드포인트를 찾았습니다.


Pipedream에서 새 단계를 추가하고 'Node.js에서 Dropbox API 사용'을 선택합니다. 이는 하나의 샘플 엔드포인트에 도달하는 상용구 코드를 제공합니다.

가장 중요한 것은 인증 정보가 자동으로 제공된다는 점입니다. 그런 다음 우리가 해야 할 일은 끝점을 편집하고 입력을 설정하는 것입니다.

다른 폴더인 /PSAPI_Output 경로를 사용하고 있습니다. 그 뒤의 값인 ${steps.trigger.event.name} 워크플로의 이전 정보, 특히 워크플로를 트리거한 이벤트의 파일 이름과 파일 자체의 이름을 사용하는 방법을 보여줍니다.


코드는 API 호출의 결과를 반환함으로써 끝납니다. 우리의 경우 이는 API 호출과 함께 사용할 수 있는 특수 URL이 될 것입니다.

3단계 - 액세스 토큰 받기

이전 블로그 게시물 에서는 Photoshop API에 대한 자격 증명을 얻는 방법과 이를 코드에서 사용하여 액세스 토큰을 얻는 방법에 대해 논의했습니다. Pipedream에서는 워크플로에 단계를 추가하여 사용자 지정 코드를 실행할 수 있습니다.


이전 단계에서 Dropbox API를 사용했을 때 이를 확인했습니다. Pipedream은 Node.js와 Python을 모두 지원하므로 몇 가지 옵션이 있습니다. 새 코드 단계를 추가하고 이름을 getAccessToken 지정하겠습니다.


이 단계에서는 자격 증명을 사용하여 JWT를 생성하고 이를 액세스 토큰으로 교환합니다.


이전 블로그 게시물에서는 코드가 @adobe/jwt-auth 패키지를 사용하여 프로세스를 단순화했습니다. 그러나 이 패키지는 Pipedream이 지원하는 ES6 가져오기로 작동하지 않습니다. 운 좋게도 다른 NPM 패키지인 jsonwebtoken 으로 교체할 수 있습니다. 코드를 살펴보겠습니다.

여기에 몇 가지가 있습니다. 첫째, 모든 Node Pipedream 코드 단계는 다음과 같은 형식을 사용합니다.

run 함수는 자동으로 호출되며 이전 단계의 데이터와 필요하지 않은 다른 작업을 위한 핸들러( $ )를 전달합니다. 기본적으로 import를 맨 위에 놓고 로직을 내부에 배치합니다.


Pipedream을 사용하면 사용자 지정 환경 변수도 정의할 수 있으므로 환경에서 변수 세트가 복사되는 것을 볼 수 있습니다.


다음 코드 블록은 JWT를 생성합니다. 이는 대부분 상용구이지만 jwtOptions 부분에 특별한 주의를 기울이십시오. 이 변수 "https://ims-na1.adobelogin.com/s/ent_ccas_sdk": true, 토큰의 범위를 설정하는 변수이며 API 작업에 필요합니다.


JWT가 생성된 후 일반 Adobe 끝점으로 전송되어 액세스 토큰을 생성할 수 있습니다. 논리의 마지막 부분은 해당 토큰을 반환하는 것입니다. 이전 단계를 기억한다면 우리가 반환하는 모든 항목은 나중에 사용할 수 있습니다. 곧 실제로 작동하는 모습을 보게 될 것입니다.

4단계 - Lightroom Autotone API 호출

이제 사업을 시작할 시간입니다. 우리의 트리거는 새 이미지에 대한 링크를 제공했습니다. 다음 코드 단계에서는 최종 결과를 업로드할 수 있는 링크를 생성했습니다. 그런 다음 액세스 토큰을 받았습니다. 우리는 프로세스를 시작하는 데 필요한 모든 것을 갖추고 있습니다.


다시 한 번 워크플로에 Node.js 단계를 추가하겠습니다. 여기 실제로 작동합니다.

Autotone API에는 몇 가지 매개변수(이 경우 입력 및 출력 값)가 필요합니다. 우리의 경우 트리거의 링크와 이전에 생성된 특수 업로드 URL을 전달합니다.


그리고 그게 다야! 이 호출의 결과는 마지막에 반환되는 작업에 대한 링크입니다.

5단계 - 아무것도 하지 않음

좋습니다. 전혀 아무것도 아니지만 흥미로운 질문이 있습니다. 이 전체 워크플로는 사람의 개입 없이 자동으로 실행됩니다. 이전 단계에서는 완료되면 결과를 Dropbox에 저장하는 프로세스를 시작합니다. 다른 작업을 수행해야 합니까? 설마.


어떤 이유로든 API가 실패할 가능성이 절대적으로 있습니다. 다른 문제도 잘못될 가능성이 있습니다. 이메일을 통해 누군가에게 변경 사항을 알리고 싶을 수도 있습니다. 솔직히 그것은 당신에게 달려 있습니다.


샘플 워크플로에서는 단순히 작업을 확인하고 완료될 때까지 기다리기로 결정했습니다. 해당 코드 단계는 다음과 같습니다. 이전 블로그 게시물과 매우 유사합니다. 작업을 확인하고 기다렸다가 다시 확인합니다.

여기에서 워크플로가 종료되지만 작업 결과를 확인하고 작업을 수행하는 논리를 추가할 수 있고 추가해야 합니다. 결과가 좋으면 아무 것도 하지 않지만, 오류가 발생하면 이메일을 보냅니다. (그리고 Pipedream을 사용하면 이메일을 엄청나게 쉽게 보낼 수 있습니다.)


하지만 좋은 점은 나중에 결정할 수 있다는 것입니다.


Pipedream의 정말 좋은 기능 중 하나는 워크플로가 언제 실행되었는지 쉽게 확인할 수 있다는 것입니다. 예를 들어 과거 실행 목록은 다음과 같습니다.


이전 Pipedream 워크플로 실행 목록


거기에 보이는 오류는 제가 API를 가지고 놀면서 그것이 어떻게 작동하는지 알아낸 과정에서 발생한 것입니다. 또한 그 중 하나를 클릭하면 그 전체에 흐르는 데이터를 볼 수 있습니다.

결과

워크플로가 준비된 상태에서 Dropbox 폴더에 새 이미지를 업로드하고 열린 탭에서 워크플로가 실행되는 것을 지켜본 후 완료되면 결과를 확인했습니다. 이전 내용은 다음과 같습니다.


나의 크고 냄새나는 개, 카이엔

그 이후는 다음과 같습니다.


API 호출 후 카이엔은 보기에는 더 좋지만 여전히 냄새가 납니다.

결과는 더 선명하고 확실히 개선되었습니다! 여기( https://pipedream.com/new?h=tch_3xxfJA) 에서 내 작업 흐름의 복사본을 직접 만들 수 있습니다. 더 자세히 알아보고 싶다면 우리 문서를 방문하여 여러분이 만든 것을 공유해 보세요!


여기에도 게시됨