Son zamanlarda geliştiricilerin Photoshop API'sinden nasıl yararlanabileceklerini tartıştık. Bu gönderide, Azure'da depolanan bir dosyayı kullanarak API'lerden birini çağıracak basit bir Node.js betiği paylaştık.
Çok basitti; bir erişim belirteci alın, bir giriş belgesiyle bir API işi başlatın, tamamlanması için anket yapın ve ardından sonucu kontrol edin.
Basit olması iyidir çünkü özel iş akışlarına entegre edilmesi kolaydır. Bugünkü yazımızda tam da bunu yapacağız.
İş akışımızın ne yapacağını tanımlayarak başlayalım. Fotoğrafları depolamak için bir bulut depolama sağlayıcısı (bu durumda Dropbox) kullandığımızı düşünün. İş akışımız bu klasörü izleyecek ve yeni resimler eklendiğinde tetiklenecektir.
Resim eklendiğinde dosyayı alıp Lightroom “AutoTone” özelliğini çalıştıran bir uç noktaya göndereceğiz. Bu özellik fotoğraflardaki pozlamayı, kontrastı ve diğer sorunları düzeltmeye çalışır.
Örnek olarak (doğrudan dokümanlardan çaldığımız), düzeltmelerin etkisini gösteren öncesi ve sonrası:
API tamamlandıktan sonra sonucu Dropbox'taki başka bir klasörde saklayacağız. Orijinalin üzerine yazabiliriz, ancak büyük olasılıkla insanlar hangisini tercih ettiklerini görmek için son bir kontrol yapabilmek için her iki kopyayı da isteyeceklerdir.
İş akışımız için Pipedream'i kullanacağız. Pipedream, genel iş akışları oluşturmaya yönelik az kodlu/kodsuz bir çözümdür. Microsoft PowerAutomate ve Workfront Fusion ile aynı alandadır. (Ve yakında bu platformlarda da bizden örnekler görmeyi bekleyebilirsiniz.)
Pipedream, bir projenin daha zor ve hatta sıkıcı yönlerini "tak ve çalıştır" haline getirerek geliştiricilere gerçekten yardımcı olur. Örnek olarak, bir iş akışını neyin başlattığını, yani tetikleyiciyi tanımlarken Pipedream, çok sayıda önceden oluşturulmuş kod bloğuyla birlikte gelir.
İş akışımızı nasıl oluşturduğumuzu göstermeye başladığımızda, bunu çalışırken göreceksiniz. Pipedream'in ücretsiz bir katmanı var, bu nedenle okuyan ve takip etmek isteyenler kaydolduktan sonra bunu yapabilir.
Pipedream'i daha önce hiç kullanmadıysanız, nasıl çalıştığına dair bir giriş için mükemmel Pipedream Üniversitesi'ne göz atın. Ayrıca mükemmel dokümanları var. Son olarak, dost canlısı yazarınız Pipedream hakkında da yazdı .
Bu arada, hadi inşaata başlayalım!
Pipedream iş akışları, sürecimizi başlatması gereken "olay"ı temsil eden bir tetikleyiciyle başlar. Pipedream'de bu tetikleyicilerin birçoğu yerleşik olarak bulunur (ve kendinizinkini yazabilirsiniz) ve neyse ki Dropbox tetikleyicisinde bir "Yeni Dosya" desteklenir:
“Yeni Dosya” tetikleyicisini seçtikten sonra, bunu yapılandırmanız için size basit bir arayüz sunulur:
En üstte kimlik doğrulama yönü var. Burada Pipedream'i Dropbox hesabınıza bağlayabilirsiniz. Hepsinden iyisi, bunu bir kez yaptıktan sonra bu bağlantıyı birden fazla iş akışında yeniden kullanabilirsiniz.
Daha sonra Yol değerini not edin. Buraya yazdığınızda Pipedream, hesabınıza göre otomatik tamamlamayı deneyecek veya yalnızca bir yol girecektir. Görüntü almayı bekleyen klasör olarak /PSAPI_Input
kullanacağız.
Sonraki iki ayar göz ardı edilebilir ancak son ayar olan Include Link
doğru olarak değiştirilmesi gerekir. API'ye verinin nasıl alınacağını söyleyebilmek için bu bağlantıya ihtiyacımız olacak.
İşte iş akışımız için yapılandırılmış son tetikleyici:
Özetlemek gerekirse, bu noktada iş akışını, Dropbox hesabımızdaki belirli bir klasöre bir dosya eklendiğinde otomatik olarak çalışacak şekilde yapılandırdık.
Photoshop API çalıştığında en az iki şey bekler: bir giriş URL'si ve bir çıkış URL'si. Temel olarak girdinin nerede okunacağı ve sonucun nerede saklanacağı.
Girişimiz Dropbox'a eklenen yeni dosya olacak. Çıktımız Lightroom tarafından düzeltilen görüntünün konumu olacak.
Bunu desteklemek için Dropbox'tan veri depolamak için kullanılabilecek özel bir URL oluşturmasını istememiz gerekiyor. Pipedream'in yerleşik birçok Dropbox eylemi var ancak ne yazık ki bu özel eyleme sahip değil.
Neyse ki Pipedream, kimlik doğrulama işlemini sizin için zaten yürüttüğü özel kodlu bir adım oluşturmanıza olanak tanır. Tetikleyicide mevcut bir Dropbox hesabını belirttiğimizi unutmayın. Bunu yaptığımız için daha sonra kod yazabiliriz ve Pipedream'in kimlik doğrulama işlemini gerçekleştirmesine izin verebiliriz.
Dropbox API'sine başvurarak tam olarak ihtiyacımız olan get_temporary_upload_link uç noktasını buluyoruz.
Pipedream'de yeni bir adım ekliyoruz ve “Node.js'de herhangi bir Dropbox API kullan” seçeneğini seçiyoruz. Bu bize bir örnek uç noktaya isabet eden ortak kod verir:
En önemlisi, kimlik doğrulama bilgilerinin otomatik olarak sağlandığını unutmayın. O zaman tek yapmamız gereken uç noktayı düzenlemek ve girdimizi ayarlamak:
Farklı bir klasör olan /PSAPI_Output
yolunu kullandığımızı unutmayın. Bundan sonraki değer, ${steps.trigger.event.name}
, iş akışımızın önceki bölümlerindeki bilgilerin, özellikle de iş akışımızı tetikleyen olayın dosya adının ve dosyanın kendisinin adının kullanımını gösterir.
Kod, bizim durumumuzda API çağrımızla kullanabileceğimiz özel bir URL olacak olan API çağrısının sonucunu döndürerek sona erer.
Önceki blog gönderimizde Photoshop API için kimlik bilgilerinin nasıl alınacağını ve daha sonra erişim jetonu almak için bunların kodda nasıl kullanılacağını tartışmıştık. Pipedream'de iş akışımıza özel kod çalıştırmak için bir adım ekleyebiliriz.
Bunu önceki adımda Dropbox API'sine bastığımızda gördünüz. Pipedream hem Node.js'yi hem de Python'u desteklediğinden burada birkaç seçeneğiniz vardır. Yeni bir kod adımı ekleyeceğiz ve onu getAccessToken
olarak adlandıracağız.
Bu adım, bir JWT oluşturmak ve bunu bir erişim jetonuyla değiştirmek için kimlik bilgilerimizi kullanmaktan sorumlu olacaktır.
Önceki blog yazısında kod, süreci basitleştirmek için @adobe/jwt-auth paketinden yararlanıyordu. Ancak bu paket Pipedream'in desteklediği bir ES6 içe aktarımı olarak çalışmaz. Neyse ki, başka bir NPM paketine, jsonwebtoken'a geçebiliriz. Kodlara bir göz atalım:
Yani burada birkaç şey var. İlk olarak, her Node Pipedream kod adımı şuna benzer bir form kullanır:
run
işlevi otomatik olarak çağrılır ve ihtiyaç duymayacağımız diğer işlemler için bir işleyicinin ( $
) yanı sıra önceki adımlardan gelen verileri de iletir. Temel olarak ithalatlarımızı en üste, mantığımızı da içeriye koyacağız.
Ortamdan kopyalanan bir dizi değişkeni görebilirsiniz; şaşırtıcı olmayan bir şekilde Pipedream, özel ortam değişkenlerini de tanımlamamıza izin verir.
Bir sonraki kod bloğu JWT'mizi oluşturur. Bu çoğunlukla ortak metindir, ancak jwtOptions
kısmına özellikle dikkat edin. Bu "https://ims-na1.adobelogin.com/s/ent_ccas_sdk": true,
değişkeni, belirtecimizin kapsamını belirleyen şeydir ve API'lerle çalışmak için gereklidir.
JWT oluşturulduktan sonra erişim belirteci oluşturmak için genel bir Adobe uç noktasına gönderilebilir. Mantığın son kısmı bu jetonu iade etmektir. Bir önceki adımda hatırlarsanız geri döndürdüğümüz her şey daha sonra kullanılabilir. Yakında bunu çalışırken göreceksiniz.
Artık işe koyulmanın zamanı geldi. Tetikleyicimiz bize yeni görselin bağlantısını verdi. Bir sonraki kod adımı, nihai sonucu yüklememiz için bir bağlantı oluşturdu. Daha sonra bir erişim jetonu aldık. Süreci başlatmak için gereken her şeye sahibiz.
Bir kez daha iş akışımıza Node.js adımı ekleyeceğiz. İşte faaliyette.
Autotone API'si , bu durumda bir giriş ve çıkış değeri olmak üzere birkaç parametre gerektirir. Bizim durumumuzda, tetikleyiciden gelen bağlantıyı ve daha önce oluşturulan özel yükleme URL'sini iletiyoruz.
Ve bu kadar! Bu çağrının sonucu, sonunda geri döneceğimiz işin bağlantısıdır.
Tamam, tam olarak hiçbir şey değil ama işte ilginç bir soru. Tüm bu iş akışı hiçbir insan etkileşimi olmadan otomatik olarak çalışır. Önceki adım, tamamlandığında sonucu Dropbox'a kaydedecek bir işlemi başlatır. Başka bir şey yapmamıza gerek var mı? Tam olarak değil.
API'nin herhangi bir nedenden dolayı başarısız olması kesinlikle mümkündür. Başka bir şeyin de ters gitmesi mümkündür. Birisini değişiklik konusunda, belki e-posta yoluyla uyarmak isteyebiliriz. Dürüst olmak gerekirse, bu sana kalmış.
Örnek iş akışımızda işi kontrol etmeye ve bitmesini beklemeye karar verdik. İşte bu kod adımı ve önceki blog gönderimize oldukça benziyor. İşi kontrol ediyoruz, bekliyoruz ve tekrar kontrol ediyoruz.
Burası iş akışını sonlandırdığımız yerdir, ancak işin sonucunu kontrol etmek ve bir şeyler yapmak için mantık ekleyebiliriz ve muhtemelen eklemeliyiz. Belki iyi bir sonuç olursa hiçbir şey yapmayız, ancak hata durumunda bir e-posta göndeririz. (Bu arada Pipedream e-posta göndermeyi gülünç derecede kolaylaştırıyor.)
İşin güzel tarafı buna daha sonra karar verebilmemiz.
Pipedream'in gerçekten güzel bir özelliği, iş akışlarının ne zaman çalıştığını kontrol etmeyi kolaylaştırmasıdır. Örneğin, geçmiş infazların bir listesi:
Burada gördüğünüz hatalar API ile oynamamdan ve onun nasıl çalıştığını bulmamdan kaynaklanıyor. Ayrıca bunlardan herhangi birine tıklayabilir ve bunların içinden akan verileri görebilirsiniz.
İş akışı yerindeyken Dropbox klasörüne yeni bir görüntü yükledik, açık bir sekmede iş akışının başlatılmasını izledik ve bittiğinde sonucu kontrol ettik. İşte öncesi:
Ve işte sonrası:
Sonuç daha canlı ve kesinlikle bir gelişme! İş akışımın kendi kopyasını burada oluşturabilirsiniz: https://pipedream.com/new?h=tch_3xxfJA . Daha fazlasını öğrenmek istiyorsanız belgelerimizi ziyaret edin ve yaptıklarınızı paylaşın!
Burada da yayınlandı