paint-brush
Бесплатни АПИ Блуески-а ми помаже да бирам моје најпопуларније постове као никада ранијеод стране@noahm
Нова историја

Бесплатни АПИ Блуески-а ми помаже да бирам моје најпопуларније постове као никада раније

од стране Noah5m2024/12/17
Read on Terminal Reader

Предуго; Читати

Научите како да програмски преузмете и уградите Блуески постове које вам се свиђају користећи аутентификацију, АПИ позиве и оЕмбед крајње тачке.
featured image - Бесплатни АПИ Блуески-а ми помаже да бирам моје најпопуларније постове као никада раније
Noah HackerNoon profile picture

Научите како да програмски преузмете и уградите Блуески постове које вам се свиђају користећи аутентификацију, АПИ позиве и оЕмбед крајње тачке.


Недавно сам прешао у Блуески . Већ могу да потврдим да тамо постоји жива технолошка заједница са гомилом занимљивог, корисног и инспиративног садржаја. Срећан сам нови корисник! Као резултат тога, желео сам да своје постове на Блуески-у који су ми се највише свиђали уградим у своје месечне постове билтена „Дев роундуп“. Мој циљ је да обезбедим курирану листу Блуески постова која је посебно прилагођена програмерима софтвера.


Срећом, Блуески-јев АПИ је потпуно бесплатан за коришћење, омогућавајући програмски приступ свом садржају у њему. Овај водич ће вас провести кроз процес преузимања и уграђивања Блуески постова који вам се свиђају користећи њихов АПИ, савршен за личне блогове, портфеље или пројекте агрегације садржаја.

Разумевање мог Блуески АПИ радног тока

Направио сам скрипту која ми омогућава да аутоматски уграђујем своје Блуески постове у пост на блогу за маркдовн. Мислим да су неки или сви кораци коришћени у овој скрипти вредни за многе случајеве употребе.


Да резимирамо мој ток рада за уграђивање постова који ми се свиђају, следимо ове кључне кораке:

  1. Креирајте сесију са аутентификацијом
  2. Преузми УРИ-ове постова који им се свиђају за „глумца“
  3. Користите ове УРИ да бисте преузели оЕмбед ембед ХТМЛ
  4. Очистите и форматирајте код за уградњу


Комплетна имплементација

Хајде да разложимо сваку функцију и њену сврху:

1. Креирање Блуески сесије

 export const createSession = async (): Promise<string | null> => { try { const response = await fetch( "https://bsky.social/xrpc/com.atproto.server.createSession", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ identifier: "your-handle", password: "your-password", }), } ); const responseJson = await response.json(); return responseJson.accessJwt; } catch (e) { console.error("Failed to create session: ", e); return null; } };


Кључни увиди:

  • Ова функција потврђује аутентичност вашег Блуески налога.
    • Напомена: овај пример тврди низове за акредитиве, али ово треба избегавати у случајевима употребе у производњи.
  • Враћа accessJwt ЈВТ (ЈСОН веб токен) за наредне АПИ позиве
  • Користи крајњу тачку createSession са Блуески-овог АТП-а (протокол аутентификованог преноса)
  • Руковање грешкама осигурава грациозан неуспех ако аутентификација не успе

2. Преузимање УРИ-ја објава које се свиђају

 export const getBlueskyLikeUris = async (actor: string, limit: number = 40) => { const token = await createSession(); if (!token) { console.error("Failed to get token"); return; } const response = await fetch( "https://bsky.social/xrpc/app.bsky.feed.getActorLikes?actor=${actor}&limit=${limit}", { method: "GET", headers: { Authorization: `Bearer ${token}`, }, } ); const responseJson = await response.json(); const uris = responseJson.feed.map((entry: any) => entry.post.uri); return uris; };


Кључни увиди:

  • Захтева аутентификовани токен сесије
  • Користи getActorLikes за преузимање постова које им се свиђају
  • Важно – домен крајње тачке треба да буде хттпс://бски.социал, пошто је ово захтев са провером аутентичности.
  • Извлачи јединствене УРИ-је за сваки пост који му се свиђа
  • Ограничења на 40 постова (подесиво)

3. Конвертовање УРИ-ја у ХТМЛ који се може уградити

 export const getBlueskyPostEmbedMarkup = async (uri: string) => { try { const response = await fetch(`https://embed.bsky.app/oembed?url=${uri}`); const responseJson = await response.json(); const formattedHTML = prettier.format(responseJson.html, { parser: "html", plugins: [require("prettier/parser-html")], htmlWhitespaceSensitivity: "ignore", printWidth: 1000, }); return formattedHTML.replace(/<script[\s\S]*?<\/script>/g, ""); } catch (e) { console.error("Failed to get Bluesky post embed markup"); return null; } };


Кључни увиди:

  • Користи Блуески-јеву оЕмбед крајњу тачку са УРИ-јем поста за приступ уградивом ХТМЛ-у поста
  • Опционо: Користи се prettier за доследно форматирање ХТМЛ-а
  • Опционо: Уклања ознаке <script> ради безбедности и чистог уграђивања
    • Разлог за то је што сам уградио једну Блуески скрипту за сваки пост који садржи Блуески садржај.
  • Флексибилно руковање грешкама

Спајање свега: комплетан пример

 async function embedLikedPosts() { try { // Get liked post URIs const likedPostUris = await getBlueskyLikeUris(); if (!likedPostUris) { console.error("No liked posts found"); return; } // Convert URIs to embed HTML const embedPromises = likedPostUris.map(getBlueskyPostEmbedMarkup); const embedHtmlArray = await Promise.all(embedPromises); // Filter out any failed embeds const validEmbeds = embedHtmlArray.filter(embed => embed !== null); // Return the markup for all liked posts return ` ## Some Fave Posts 🦋 ${validEmbeds.join(`\n\n`)} ` } catch (error) { console.error("Error embedding Bluesky posts:", error); } }

Потенцијална побољшања

Ово решење ради за мене јер све што ми треба је статички генерисан месечни пост на блогу.


Нека побољшања могу укључивати:

  • Додајте подршку за пагинацију за преузимање више од 40 постова који се свиђају
  • Примените кеширање да бисте смањили непотребне АПИ позиве
  • Направите робуснији механизам за руковање грешкама
  • Креирање механизма за освежавање accessJwt токена ако се користи у дуготрајним процесима
  • Сортирање постова које се свиђају према популарности (свиђа ми се)

Савети за решавање проблема

  • Проверите да ли су ваши Блуески акредитиви тачни
  • Проверите да ли је токен носиоца исправно подешен на вашим захтевима за проверу аутентичности.
  • Проверите да ли су сви домени крајње тачке које користите исправни.

Закључак

Уграђивање Блуески постова пружа динамичан начин да прикажете своје интеракције на друштвеним медијима. Разумевањем тока посла АПИ-ја и применом робусног руковања грешкама, можете креирати привлачне, персонализоване и куриране интеграције садржаја.

Следећи кораци

  1. Експериментишите са кодом
  2. Прилагодите стил уградње
  3. Истражите додатне крајње тачке Блуески АПИ-ја


Уживајте и срећно петљање! 🚀