fedimbed.bluesky: cleaner quote video handling, take media from recordWithMedia on quotes
This commit is contained in:
		
							parent
							
								
									839f20e7d3
								
							
						
					
					
						commit
						8884a60798
					
				
					 1 changed files with 29 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -120,8 +120,9 @@ async function signedFetch(url, options) {
 | 
			
		|||
  return await fetch(url, options);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function blueskyQuoteEmbed(quote, videos) {
 | 
			
		||||
async function blueskyQuoteEmbed(quote) {
 | 
			
		||||
  const embeds = [];
 | 
			
		||||
  const videos = [];
 | 
			
		||||
 | 
			
		||||
  const mainEmbed = {
 | 
			
		||||
    color: PLATFORM_COLORS.bluesky,
 | 
			
		||||
| 
						 | 
				
			
			@ -158,6 +159,23 @@ async function blueskyQuoteEmbed(quote, videos) {
 | 
			
		|||
        embeds.push({...mainEmbed, fields: [{name: "\u200b", value: `[Video Link](${videoUrl})`}]});
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case "app.bsky.embed.recordWithMedia#view": {
 | 
			
		||||
        if (embed.media.$type === "app.bsky.embed.images#view") {
 | 
			
		||||
          embeds.push(...embed.media.images.map((image) => ({...mainEmbed, image: {url: image.fullsize}})));
 | 
			
		||||
        } else if (embed.media.$type === "app.bsky.embed.video#view") {
 | 
			
		||||
          const videoUrl = `https://bsky.social/xrpc/com.atproto.sync.getBlob?did=${encodeURIComponent(
 | 
			
		||||
            quote.author.did
 | 
			
		||||
          )}&cid=${embed.media.cid}`;
 | 
			
		||||
          const contentType = await fetch(videoUrl, {
 | 
			
		||||
            method: "HEAD",
 | 
			
		||||
          }).then((res) => res.headers.get("Content-Type"));
 | 
			
		||||
 | 
			
		||||
          videos.push({url: videoUrl, desc: embed.alt, type: contentType});
 | 
			
		||||
 | 
			
		||||
          embeds.push({...mainEmbed, fields: [{name: "\u200b", value: `[Video Link](${videoUrl})`}]});
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
        embeds.push(mainEmbed);
 | 
			
		||||
        break;
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +185,7 @@ async function blueskyQuoteEmbed(quote, videos) {
 | 
			
		|||
    embeds.push(mainEmbed);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return embeds;
 | 
			
		||||
  return {embeds, videos};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function bluesky(msg, url, spoiler = false) {
 | 
			
		||||
| 
						 | 
				
			
			@ -249,7 +267,11 @@ async function bluesky(msg, url, spoiler = false) {
 | 
			
		|||
      }
 | 
			
		||||
      case "app.bsky.embed.record#view": {
 | 
			
		||||
        const quote = post.embed.record;
 | 
			
		||||
        embeds.push(mainEmbed, ...(await blueskyQuoteEmbed(quote, videos)));
 | 
			
		||||
        const quoteData = await blueskyQuoteEmbed(quote);
 | 
			
		||||
 | 
			
		||||
        if (quoteData.videos.length > 0) videos.push(...quoteData.videos);
 | 
			
		||||
 | 
			
		||||
        embeds.push(mainEmbed, ...quoteData.embeds);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case "app.bsky.embed.recordWithMedia#view": {
 | 
			
		||||
| 
						 | 
				
			
			@ -268,7 +290,10 @@ async function bluesky(msg, url, spoiler = false) {
 | 
			
		|||
          embeds.push({...mainEmbed, fields: [{name: "\u200b", value: `[Video Link](${videoUrl})`}]});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        embeds.push(...(await blueskyQuoteEmbed(post.embed.record.record, videos)));
 | 
			
		||||
        const quoteData = await blueskyQuoteEmbed(post.embed.record.record);
 | 
			
		||||
        if (quoteData.videos.length > 0) videos.push(...quoteData.videos);
 | 
			
		||||
        embeds.push(...quoteData.embeds);
 | 
			
		||||
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue