زده کړئ چې څنګه په برنامه توګه د تصدیق ، API کالونو ، او oEmbed پای ټکي په کارولو سره خپل خوښ شوي بلوسکي پوسټونه ترلاسه او ایمبیډ کړئ.
ما پدې وروستیو کې بلوسکي ته حرکت کړی دی. زه دمخه تایید کولی شم چې دلته د ټنونو په زړه پوري ، ګټورو او الهام بخښونکي مینځپانګې سره یو متحرک ټیک ټولنه شتون لري. زه خوشحاله نوی کارونکی یم! د پایلې په توګه، زه غواړم زما د "دیو راؤنډ اپ" میاشتني خبر لیک پوسټونو کې زما غوره خوښ شوي بلوسکي پوسټونه ځای په ځای کړم. زما موخه دا ده چې د بلوسکي پوسټونو جوړ شوي لیست چمتو کړئ چې په ځانګړي ډول د سافټویر پراختیا کونکو سره مناسب دی.
خوشبختانه، د بلوسکي API د کارولو لپاره په بشپړه توګه وړیا دی، په دننه کې ټولو مینځپانګو ته پروګراماتي لاسرسي ته اجازه ورکوي. دا ټیوټوریل به تاسو ته د دوی د API په کارولو سره د خوښ شوي بلوسکي پوسټونو بیرته ترلاسه کولو او سرایت کولو پروسې له لارې پرمخ بوځي ، د شخصي بلاګونو ، پورټ فولیو یا مینځپانګې راټولولو پروژو لپاره مناسب.
ما یو سکریپټ جوړ کړی چې ما ته اجازه راکوي په اتوماتيک ډول زما د بلوسکي پوسټونه د مارک ډاون بلاګ پوسټ کې ځای په ځای کړم. زه فکر کوم چې پدې سکریپټ کې کارول شوي کوم یا ټول مرحلې د ډیری کارولو قضیو لپاره ارزښت لري.
د خوښ شوي پوسټونو سرایت کولو لپاره زما د کاري جریان لنډیز کولو لپاره ، موږ دا کلیدي مرحلې تعقیبوو:
راځئ چې هر فعالیت او د هغې هدف مات کړو:
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
JWT (JSON ویب ټوکن) بیرته راګرځويcreateSession
پای ټکی کاروي 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
پای ټکی کاروي 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); } }
دا حل زما لپاره کار کوي ځکه چې ټول هغه څه چې زه ورته اړتیا لرم د جامد تولید شوي میاشتني بلاګ پوسټ دی.
ځینې پرمختګونه کېدای شي پدې کې شامل وي:
accessJwt
د تازه کولو میکانیزم رامینځته کول Jwt ټوکن که چیرې په اوږدمهاله پروسو کې وکارول شيد بلوسکي پوسټونو ځای په ځای کول ستاسو د ټولنیزو رسنیو تعاملاتو ښودلو لپاره متحرک لاره چمتو کوي. د API کاري فلو په پوهیدو او د قوي خطا اداره کولو پلي کولو سره ، تاسو کولی شئ ښکیل ، شخصي شوي ، او جوړ شوي مینځپانګې ادغام رامینځته کړئ.
خوند واخلئ او خوشحاله ټیکرنګ وکړئ! 🚀