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