Topic: How to upload bluesky images, gifs, and especially videos (for dummys) A thread[s]t[/s]

Posted under General

I found this video on bluesky by Roskim
https://bsky.app/profile/roksim.bsky.social/post/3lhqxedsyjk2t

It depicts Ivy from Deadlock, a gargoyle who falls asleep by turning into stone, getting fucked in her sleep by another gargoyle.
I've been trying all day to figure out how to upload it to e6 from Bluesky, but half of the information is too garbled for me to keep more than 10 words of it in my head at a time. Something about scaling issues.
And yes, I know of the Bluesky uploading wiki page. It isn't any help to me.

So now I ask that this become a thread to help simplify the process of uploading from Bluesky down to a way that someone who scores 10 on an IQ test might, after a meer week, be able to do it consistently, without needing to refer back to this page until a month later.

I only know that it works for images, gifs and videos i haven't tried:

Let's say you want to get the image from this post
https://bsky.app/profile/willquinnart.bsky.social/post/3liivyiz63c2u

Copy the image url, and you'll get
https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:wf7nfy2us3h5gpa7zfettmzl/bafkreib6xtcahemkupuadjyr4albwx7hsjbzkpam7wxgtzqrnaxula5unm@jpeg

So I want to change the format from
https://cdn.bsky.app/img/feed_thumbnail/plain/<decentralized identifier>/<IPFS content identifier>@jpeg
to
https://bsky.social/xrpc/com.atproto.sync.getBlob?did=<decentralized identifier>&cid=<IPFS content identifier>

So
https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:wf7nfy2us3h5gpa7zfettmzl/bafkreib6xtcahemkupuadjyr4albwx7hsjbzkpam7wxgtzqrnaxula5unm@jpeg

changes to

https://bsky.social/xrpc/com.atproto.sync.getBlob?did=did:plc:wf7nfy2us3h5gpa7zfettmzl&cid=bafkreib6xtcahemkupuadjyr4albwx7hsjbzkpam7wxgtzqrnaxula5unm

The url changes highlighted in bold:
htps://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:wf7nfy2us3h5gpa7zfettmzl/bafkreib6xtcahemkupuadjyr4albwx7hsjbzkpam7wxgtzqrnaxula5unm@jpeg

changes to

htps://bsky.social/xrpc/com.atproto.sync.getBlob?did=did:plc:wf7nfy2us3h5gpa7zfettmzl&cid=bafkreib6xtcahemkupuadjyr4albwx7hsjbzkpam7wxgtzqrnaxula5unm

Pay attention to what's highlighted in bold, especially that last slash

Now that I know the video already exists on e6, I can also see it was posted by the artist.
This kinda implies to me that at the moment, we do not have a way to get gifs and videos from Bluesky. The only ways I can think of are going into site source code and grabbing the video from there, or putting the link to the page in a video downloader like Cobalt and doing nessecarry conversions to .webm or .gif files for upload.

Also thank you dba afish

Use gallery-dl.
Bsky transcodes everything into h264 MP4 (similar to ๐•), however framerate is upscaled/downscaled to 30, causing some major issues, so that's why all and every Bsky animation I have dealt with, I have had to manually handle the frames, one-by-one.
Also they normalize audio, which causes major spikes in audio in general, so ripping audio from even ๐• and using Bsky video is better.

mairo said:

Also they normalize audio, which causes major spikes in audio in general, so ripping audio from even ๐• and using Bsky video is better.

Wouldn't that count as third party edit?

snpthecat said:
Wouldn't that count as third party edit?

You are transcoding/converting the animation to begin with, so no.

It's a fine line, but generally if something can be uploaded here directly, then it's generally better to not touch anything and just upload directly, this is why we keep both censored and uncensored works in many cases if censored is generally higher quality, because we really don't want anyone to copy-paste JPG genitals on PNG.
Animations in general are much harder to handle, was just talking in comments about flash conversions, because flash isn't image file, it's not even video file most of the time, so you do actually have to work with the conversion process and alter some things to even make it possible to have it as a file, but as long as the content itself is identical to the source, site will not consider these as edits, but conversions and transcodes.

Altough this does make me slightly worried as because with many posts, the source files are like this, where e621 copies do have pillarboxing removed, framerates corrected, manual conversions from MP4 to APNG or GIF, artists gameplay screencaps re-recorded from scratch, superior quality audio tracks attached, etc. that with some posts, we technically have superior copies compared to sources provided, meaning if h264 support was possible, we would also be replacing many of these with original sources.
But I guess that's in future and as these transcodes and conversions are made out of the original the original is still on technical, objective standpoint superior.

But yes, with Bsky, stuff like 30 FPS framerate upscaling and frame dublication is actual problem. It can be reversed with one of two FFmpeg filters during transcoding, but the amount of stutter they introduce to artists animations there is absurdly bad and unacceptable. This is like newbie tier coding mistake in their pipeline.

peskeon said:
I found this video on bluesky by Roskim
https://bsky.app/profile/roksim.bsky.social/post/3lhqxedsyjk2t

It depicts Ivy from Deadlock, a gargoyle who falls asleep by turning into stone, getting fucked in her sleep by another gargoyle.
I've been trying all day to figure out how to upload it to e6 from Bluesky, but half of the information is too garbled for me to keep more than 10 words of it in my head at a time. Something about scaling issues.
And yes, I know of the Bluesky uploading wiki page. It isn't any help to me.

So now I ask that this become a thread to help simplify the process of uploading from Bluesky down to a way that someone who scores 10 on an IQ test might, after a meer week, be able to do it consistently, without needing to refer back to this page until a month later.

I'm someone who has no tech experience yet I was shown a way that works really well for uploading bluesky images, though I've got nothing that'll help for gifs or videos yet

Basically let's start with this link: https://bsky.app/profile/jayashgh.bsky.social/post/3lbmteis4qc2c

Open up just the image in a new tab:

https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:2vfsfkhaqpk7szuejowxrpne/bafkreiacggjvzn4cqxxnb4gtilcygwba4ycotay4doadyfqifp7jhq37mi@jpeg

Now here's the parts of the URL you edit to get the e621 approved version

[[[[https://cdn.bsky.app/img/feed_fullsize/plain/]]]]did:plc:2vfsfkhaqpk7szuejowxrpne[[[[/]]]]bafkreiacggjvzn4cqxxnb4gtilcygwba4ycotay4doadyfqifp7jhq37mi [[[[[@jpeg]]

Delete the https://cdn.bsky.app/img/feed_fullsize/plain/ and replace it with https://bsky.social/xrpc/com.atproto.sync.getBlob?did=

Next delete the / and replace it with &cid=

As for the @jpeg part just delete it, no replaced necessary

After you've edited the url to fit that format in this case you'll gone from https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:2vfsfkhaqpk7szuejowxrpne/bafkreiacggjvzn4cqxxnb4gtilcygwba4ycotay4doadyfqifp7jhq37mi@jpeg
To
https://bsky.social/xrpc/com.atproto.sync.getBlob?did=did:plc:2vfsfkhaqpk7szuejowxrpne&cid=bafkreiacggjvzn4cqxxnb4gtilcygwba4ycotay4doadyfqifp7jhq37mi

You'll hit enter and it'll bring up the uncompressed version of the image, or at least that's what I've been doing and it's been working wonders for me.

That's all the help I can offer though since I'm not really experienced in this type of thing but it works and it's simple enough for me to understand, so I hope it'll help you too.

A mod earlier this week replaced several of my bluesky uploads so after I was shown this by a user named Catthew, I've been going over all my bluesky uploads by replacing them with these since I was told they were likely to be replaced if I didn't do them myself. Most of them have been approved.

Ah nevermind. You can get the same result with gallery-dl using this command:

gallery-dl --get-urls https://bsky.app/profile/roksim.bsky.social/post/3lhqxedsyjk2t

snedmano said:
Alternatively, use yt-dlp.

The result is the same, but here you can get the direct link to the highest quality file by using this command:

yt-dlp -f blob --get-url https://bsky.app/profile/roksim.bsky.social/post/3lhqxedsyjk2t

This returns https://chanterelle.us-west.host.bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:qabtzszt5kvv2izxhvhonlnm&cid=bafkreih5xl5pao3ol2wr5o3kwfe77wcgnn275q65pymifq7jbtuflcb6su

Yeah, I do already use -g with ๐• which is same as --get-url.
However I would not use this for Bsky, seems like they URL has part that changes and the links stop working really fast, where with ๐• it's literally HTTPS directly to MP4 file which keeps working for eternity.

Bsky was not supported in yt-dlp for longest time, would fall onto generic extractor and fail, seems like it was added last november.
At that point use either gallery-dl or yt-dlp, seems like downloaded files are hash identical with each other.

mairo said:
However I would not use this for Bsky, seems like they URL has part that changes and the links stop working really fast, where with ๐• it's literally HTTPS directly to MP4 file which keeps working for eternity.

While it may look like that, these are actually permanent links. These should work as long as Bluesky exists (Unless they completely change how their URLs work).

The did=did:plc:qabtzszt5kvv2izxhvhonlnm portion is just the user id.
This part can actually put into the user profile URL in place of the user name.
So https://bsky.app/profile/did:plc:qabtzszt5kvv2izxhvhonlnm will lead to the user profile.
With this trick you can find the user profile just from the file URL itself, which isn't possible with ๐•, formerly known as Twitter.

The cid=bafkreih5xl5pao3ol2wr5o3kwfe77wcgnn275q65pymifq7jbtuflcb6su portion seems to be the id of the content itself (pretty sure cid stands for content id) and is not some temporary access token.
For example I've added this kind of link to post #4975396 3 months ago and the link still works. gallery-dl and yt-dlp also still return the same URL.

smuglytherat said:
I'm someone who has no tech experience yet I was shown a way that works really well for uploading bluesky images...

There is a userscript by Tarrgon, that does this automatically, so you don't have to assemble the full quality Bluesky URL by hand each time: https://gist.github.com/Tarrgon/a58375cd3c1f15d8fd4238a2a7df35b5
(Script is also listed in howto:sites_and_sources)

snedmano said:
While it may look like that, these are actually permanent links. These should work as long as Bluesky exists (Unless they completely change how their URLs work).

The did=did:plc:qabtzszt5kvv2izxhvhonlnm portion is just the user id.
This part can actually put into the user profile URL in place of the user name.
So https://bsky.app/profile/did:plc:qabtzszt5kvv2izxhvhonlnm will lead to the user profile.
With this trick you can find the user profile just from the file URL itself, which isn't possible with ๐•, formerly known as Twitter.

The cid=bafkreih5xl5pao3ol2wr5o3kwfe77wcgnn275q65pymifq7jbtuflcb6su portion seems to be the id of the content itself (pretty sure cid stands for content id) and is not some temporary access token.
For example I've added this kind of link to post #4975396 3 months ago and the link still works. gallery-dl and yt-dlp also still return the same URL.

Huh, so then it's something on my end.
However basically none of the direct video links from bsky actually work for me.