Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ziodotsh/atfile

๐Ÿ“ฆโž”๐Ÿฆ‹ Store and retrieve files on the ATmosphere
https://github.com/ziodotsh/atfile

atproto bluesky file-hosting

Last synced: 3 days ago
JSON representation

๐Ÿ“ฆโž”๐Ÿฆ‹ Store and retrieve files on the ATmosphere

Awesome Lists containing this project

README

        


ATFile


Store and retrieve files on the ATmosphere (like Bluesky)

Written entirely in Bash Shell. No NodeJS here!



โฌ‡๏ธ Get ATFile ย |ย 
๐Ÿ’ฃ Submit Issue ย |ย 
๐Ÿฆ‹ @zio.sh


## โœจ Quick Start

```sh
curl -sSL https://raw.githubusercontent.com/ziodotsh/atfile/refs/heads/main/atfile-install.sh | bash
echo 'ATFILE_USERNAME=""' > ~/.config/atfile.env # e.g. alice.bsky.social, did:plc:vdjlpwlhbnug4fnjodwr3vzh
echo 'ATFILE_PASSWORD=""' >> ~/.config/atfile.env
atfile help
```

## ๐Ÿ‘€ Using

### โœ… Requirements

* **OSยน**
* ๐ŸŸก **Linux**: GNU, MinGW and Termux only; muslยฒ not supported
* ๐ŸŸข **macOS**: Compatible with built-in version of Bash (3.2)
* ๐ŸŸก **Windows**: MinGW (Cygwin, Git Bash, MSYS2, etc.) and WSL (see Linux caveats above)
* This repository **does not** provide a native version for Windows
* ๐ŸŸข **BSD**: FreeBSD, NetBSD and OpenBSD; other non-detected BSDs should work (see ยน)
* ๐ŸŸข **Haiku**: [Yes, really](https://bsky.app/profile/did:plc:kv7sv4lynbv5s6gdhn5r5vcw/post/3lboqznyqgs26)
* ๐Ÿ”ด **Solaris**: Has issues; low priority
* **Bashยณ:** 3.x or later
* **Packages**
* [`curl`](https://curl.se)
* [ExifTool (`exiftool`)](https://exiftool.org) _(optional: set `ATFILE_SKIP_NI_EXIFTOOL=1` to ignore)_
* [`file`](https://www.darwinsys.com/file) _(only on *BSD, macOS, or Linux)_
* [GnuPG (`gpg`)](https://gnupg.org) _(optional: needed for `upload-crypt`, `fetch-crypt`)_
* [`jq`](https://jqlang.github.io/jq)
* [MediaInfo (`mediainfo`)](https://mediaarea.net/en/MediaInfo) _(optional: set `ATFILE_SKIP_NI_MEDIAINFO=1` to ignore)_
* `md5sum` _(optional: set `ATFILE_SKIP_NI_MD5SUM=1` to ignore)_
* Both GNU and BusyBox versions supported
* [`websocat`](https://github.com/vi/websocat) _(optional: needed for `stream`)_
* **PDS:** [Bluesky PDS](https://github.com/bluesky-social/pds)
* Other PDSs (such as [millipds](https://github.com/DavidBuchanan314/millipds)) remain untested, but if they implement standard `com.atproto.*` endpoints, there should be no reason these won't work
* Filesize limits cannot be automatically detected. By default, this is 50MB
* To change this on Bluesky PDS, set `PDS_BLOB_UPLOAD_LIMIT=`
* If the PDS is running behind Cloudflare, the Free plan imposes a 100MB upload limit
* This tool, nor setting a higher filesize limit, does not workaround [video upload limits on Bluesky](https://bsky.social/about/blog/09-11-2024-video). Videos are served via a [CDN](https://video.bsky.app), and adding larger videos to post records yields errors on the app
* **ATProto account**
* `bsky.network` (`*.bsky.social`) accounts supported
If you can, limit the amount of files you upload to Bluesky's servers. It's a miracle this even works with, what's currently, an entirely free service. Heed the copyright warning too: **do not upload copyrighted files.**
* `did:web` is supported!
(Seriously, it ain't hard)

### ๐Ÿค” _(Todo)_

_(Todo)_

## ๐Ÿ—๏ธ Building

_(Todo)_

---

## โŒจ๏ธ Contributing

_(Todo)_

## ๐Ÿค Acknowledgements

* **Paul Frazee** โ€” [๐Ÿฆ‹ @pfrazee.com](https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd)
His kind words
* **Laurens Hof** โ€” [๐Ÿฆ‹ @laurenshof.online](https://bsky.app/profile/did:plc:mdjhvva6vlrswsj26cftjttd)
Featuring ATFile on [The Fediverse Report](https://fediversereport.com): _["Last Week in the ATmosphere โ€“ Oct 2024 week 4"](https://fediversereport.com/last-week-in-the-atmosphere-oct-2024-week-4/)_
* **Samir** โ€” [๐Ÿ™ @bdotsamir](https://github.com/bdotsamir)
Testing, and diagnosing problems with, support for macOS (`macos`)
* **Astra** โ€” [๐Ÿฆ‹ @astra.blue](https://bsky.app/profile/did:plc:ejy6lkhb72rxvkk57tnrmpjl)
[Various PRs](https://github.com/ziodotsh/atfile/pulls?q=is%3Apr+author%3Aastravexton); testing, and diagnosing problems with, support for MinGW (`linux-mingw`) and Termux (`linux-termux`).
* _(Forgot about you? [You know what to do](https://github.com/ziodotsh/atfile/compare))_

---

* **ยน** You can bypass OS detection in one of two ways:
* Set `ATFILE_SKIP_UNSUPPORTED_OS=1`
Be careful! There's a reason some OSes are not supported
* Set `ATFILE_FORCE_OS=`
This overrides the OS detected. Possible values:
* BSD: `bsd-freebsd`, `bsd-netbsd`, `bsd-openbsd`
* Linux: `linux`, `linux-mingw`, `linux-musl`, `linux-termux`
* Other: `haiku`, `macos`, `solaris`, `unknown`
* **ยฒ** musl-powered distros do not use GNU/glibc packages, and have problems currently
* Known musl distros: Alpine, Chimera, Dragora, Gentoo (musl), Morpheus, OpenWrt, postmarketOS, Sabotage, Void
* Bypassing OS detection (see ยน) will work, but dates will not be handled correctly
* **ยณ** As long as you have Bash installed, running from another shell will not be problematic ([`#!/usr/bin/env bash`](https://github.com/ziodotsh/atfile/blob/main/atfile.sh#L1) forces Bash)