Mastodon’daki Listeler ve kişiler’de nasıl eklediğimi gösterdim. liste için sütun Takip etmek inşa etmekte olduğum Mastodon tarayıcısının sekmesi. Bu, daha kolay ve daha güçlü liste yönetimi yönünde atılmış bir adımdı. Takip ettiğim kişilerin listelere atanıp atanmadığını görmemi ve kimlerin bir listede (veya belki de farklı bir listede) olması gerektiğini düşünmemi sağlıyor.
Bugün, bu yeni gücü ciddiyetle kullanmaya başladığımda, yeni bir meydan okuma keşfettim. Birini bir listeye atamak veya bir liste atamasını değiştirmek için, menüdeki bağlantıya tıkladım. hesap_url’si Mastodon web uygulamasında o kişinin profilini açmak için sütun. Ev sunucumdaki hesaplar için bu iyiydi, mastodon.sosyal. Shelley Powers’ınki gibi bir hesap URL’si beni liste yöneticisinin mevcut olduğu ev sunucumdaki Shelley’nin profiline getiriyor.
Ama başka bir yerde birini takip ediyorsam, Ward Cunningham gibi https://mastodon.radio/@k9ox, hesap URL’si beni Ward’ın o sunucudaki liste yöneticisinin kullanılamadığı profiline getiriyor. Ward’ı bir listeye atamak için onun hesap URL’sini almam, ev sunucumun web uygulamasındaki arama kutusuna yapıştırmam ve ardından ortaya çıkan bağlantıyı tıklamam gerekiyordu: https://mastodon.social/@[email protected].
Bu çok hızlı eskidi, ben de ayarladım Takip etmek Örnek nitelikli bir URL olarak adlandıracağım URL’nin ikinci çeşidini görüntülemek için sekme.
Steampipe, bu ayarı yapmak için birkaç yol sunar. kullanıcısı olarak Gösterge Paneli, görünümü yönlendiren SQL sorgusunda dönüşümü yapmak için Postgres’in normal ifade işlevlerini kullanabilirsiniz. Ama zorunda kalmamayı tercih edersin. olursa çok daha güzel Eklenti bunu sizin için yapar, böylece SQL yalnızca adlı bir sütuna başvurabilir. instance_qualified_url
.
İkinci yaklaşımı seçtim. Bir Steampipe eklentisinin yazarı olarak, eklenti kullanıcıları için hayatı olabildiğince kolaylaştırmak istiyorsunuz. Hem eklentinin hem de kontrol panelinin yazarı olduğunuzda, benim bu durumda olduğum gibi, güzel bir erdemli döngünün tadını çıkarabilirsiniz. Pano geliştikçe eklentiyi iyileştirmenin yollarını keşfedersiniz, bu da panonun daha fazla kullanılmasına yol açar ve bu da eklentiyi geliştirmek için daha fazla fırsat önerir. Bu iki bileşenin birlikte evriminden büyük keyif alıyorum!
Steampipe tablosuna yeni bir sütun ekleme
Değişikliği yapmak için, Mastodon’dan eşlenen tabloların sütunlarını tanımlayan yapıyı genişlettim. Hesap API’sı. Bir Steampipe eklentisi, bunun gibi bir yapı listesi kullanarak sütunları tanımlar.
...,
{
Name: "url",
Type: proto.ColumnType_STRING,
Description: "URL for the account.",
},
...,
Bu yapı şöyle der: “API yanıtındaki bir üst düzey alanın adı şu olduğunda: URLSteampipe’a bu adla ve Postgres türüyle bir veritabanı sütunu oluşturmasını söyleyin text
”
API yanıtlarında görünmeyen yeni sütunları sentezlemek için API yanıtlarındaki değerleri de dönüştürebilirsiniz. İşte bu durum için eklediğim yapı.
...,
{
Name: "instance_qualified_account_url",
Type: proto.ColumnType_STRING,
Description: "Account URL prefixed with my instance.",
Transform: transform.FromValue().Transform(instanceQualifiedAccountUrl),
},
...
Bu, “API yanıtını dönüştürme işlevine gönder” diyor. instanceQualifiedAccountUrl
ve sonucunu sütunun değeri olarak kullanın.
İşte fonksiyon.
func instanceQualifiedAccountUrl(ctx context.Context, input *transform.TransformData) (interface{}, error) {
url := input.Value.(*mastodon.Status).Account.URL
qualifiedUrl := qualifiedUrl(ctx, url)
return qualifiedUrl, nil
}
Gerçek işi başka bir işleve devreder.
func qualifiedUrl(ctx context.Context, url string) string {
plugin.Logger(ctx).Debug("instanceQualifiedUrl", "server", homeServer, "url", url)
re := regexp.MustCompile(`
matches := re.FindStringSubmatch(url)
if len(matches) == 0 {
return url
}
person := matches[1]
server := matches[2]
qualifiedUrl := fmt.Sprintf("%s/@%[email protected]%s", homeServer, server, person)
plugin.Logger(ctx).Debug("instanceQualifiedUrl", "qualifiedUrl", qualifiedUrl)
schemelessHomeServer := strings.ReplaceAll(homeServer, " "")
qualifiedUrl = strings.ReplaceAll(qualifiedUrl, "@"+schemelessHomeServer, "")
plugin.Logger(ctx).Debug("qualifiedUrl", "qualifiedUrl", qualifiedUrl)
return qualifiedUrl
}
Neden? Niye? İki farklı sütun tanımı kümesi aynı dönüşüme ihtiyaç duyar. instanceQualifiedAccountUrl
gelen yanıtlarla çalışır. Account
API. Ancak hesap URL’leri, Durum API’sı bu, zaman çizelgesi görünümlerini yönlendirir. Farklı bir dönüşüm işlevi kullananlar, instanceQualifiedStatusUrl
aynı dönüşümü farklı bir API yanıtı için yapmak üzere.
Hesap URL’lerinden durum URL’lerine
bu instanceQualifiedAccountUrl
sütun orijinal sorunu çözdü. Eklenti-yazar şapkamı çıkarabildim, pano-yazar şapkamı takabildim ve hesap URL’lerini, onları görüntüleyen tüm sekmelerde örnek nitelikli URL’ler olarak gösterebildim. Bu tür herhangi bir bağlantı artık benim gözümden baktığım bir profile yönlendiriyor. mastodon.sosyal ve bu, web uygulamasının liste yöneticisini zahmetli kopyala/yapıştır/arama prosedürü olmadan doğrudan kullanmamı sağlıyor.
Yine de mutlu dansım uzun sürmedi. Bu kopyala/yapıştır/ara sürtüşmesine yeni duyarlı hale geldiğimden, zaman çizelgesi görünümünde görünen öğelere yanıt vermeye çalıştığımda bunun hâlâ devam ettiğini fark ettim. İşte yakın tarihli bir örnek: https://techpolicy.social/@mnot/109610641523489182.
Kontrol panelinde görüntülenen URL budur. Tıkladığımda Mark’ın sunucusuna giriyorum ve öğeyi görüntüleyebiliyorum, ancak yanıt vermeye çalıştığımda korkunç bir kopyalama/yapıştırma/arama işlemiyle karşılaşıyorum.
Sorun yok! Benzer bir dönüşüm kullanacağım! Çok hızlı değil. gibi bir URL oluşturabilirim ama hiçbir yere gitmiyor.
Kopyala/yapıştır/ara işlemini yaparsam, benzer ama farklı bir URL’ye ulaşırım: https://mastodon.social/@[email protected]/109610641692667630. Aynı yapıya ancak farklı bir toot kimliğine sahiptir. Bu URL aynı zamanda web uygulamasının ana sayfa zaman akışında görünen URL’dir, bu nedenle doğrudan o görünümden yanıt verebilirim.
Buradaki derinliğimi aşıyorum, bu yüzden sadece bir yardım çağrısıyla bitireceğim. Bir ev sunucusunun yabancı bir sunucudan getirilen bir öğeye kendi kimliğini ataması ve web uygulamasının bu kimliği kullanması mantıklıdır. Ancak bu kimliği doğrudan API’den almanın bir yolunu görmüyorum. Bunu arama yoluyla elde etmenin mümkün olduğundan şüpheleniyorum, ancak bunu bir zaman çizelgesindeki her öğe için yapmak, API istekleri için olan kısıtlı bütçeyi (her beş dakikada bir yalnızca 300) hızla tüketecektir.
Tembel Mastodon, burada mı takıldım yoksa yabancı durum URL’lerini örneğe bağlı durum URL’lerine dönüştürmenin bir yolu var mı?
Güncelleme: Çözüldü!
Sonrasında Jari Pennanen ile sohbet Bir kez daha baktım ve gerekli kimliğin API yanıtında mevcut olduğunu fark ettim, sonuçta onu kullanmıyordum (facepalm). Ve aslında kimliğin iki çeşidi vardır – biri orijinal dişler için, diğeri takviyeler için. Her iki durum için sütunlar eklenir burada ve kontrol panelinin bunları kullanması için ince ayar burada.
İşte sonuç.
benim olduğun için teşekkürler plastik ördek, Yari! Örnek nitelikli toot ve yeniden blog URL’leri, bu kontrol panelini çok daha kullanışlı hale getirir.
Ayrıca bakınız:
- Fediverse için umut
- Steampipe ile bir Mastodon panosu oluşturun
- federaldiverse’e göz atmak
- Mastodon için bir Bloomberg terminali
- Kendi Mastodon UX’inizi yaratın
- Mastodon’daki listeler ve kişiler
- Mastodon tooters da tweet atıyor
- Örnek nitelikli Mastodon URL’leri
Telif hakkı © 2023 IDG Communications, Inc.
Kaynak : https://www.infoworld.com/article/3686115/instance-qualified-mastodon-urls.html#tk.rss_all