{"id":13574105,"url":"https://github.com/keith-turner/ecoji","last_synced_at":"2025-05-16T02:08:46.122Z","repository":{"id":43427357,"uuid":"123867087","full_name":"keith-turner/ecoji","owner":"keith-turner","description":"Encodes (and decodes) data as emojis","archived":false,"fork":false,"pushed_at":"2024-07-15T18:13:25.000Z","size":1375,"stargazers_count":847,"open_issues_count":5,"forks_count":24,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-01T11:03:24.970Z","etag":null,"topics":["ecoji","emoji","encoding","fun","golang","unicode"],"latest_commit_sha":null,"homepage":"https://ecoji.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keith-turner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-05T05:02:09.000Z","updated_at":"2025-03-30T02:44:07.000Z","dependencies_parsed_at":"2024-01-06T01:04:21.862Z","dependency_job_id":"39087e8d-1733-4682-9360-fff27f23d7cb","html_url":"https://github.com/keith-turner/ecoji","commit_stats":{"total_commits":122,"total_committers":14,"mean_commits":8.714285714285714,"dds":"0.24590163934426235","last_synced_commit":"65f0d91468449ff456153c64fc25252977a7fdd7"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith-turner%2Fecoji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith-turner%2Fecoji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith-turner%2Fecoji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keith-turner%2Fecoji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keith-turner","download_url":"https://codeload.github.com/keith-turner/ecoji/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247838446,"owners_count":21004580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecoji","emoji","encoding","fun","golang","unicode"],"created_at":"2024-08-01T15:00:46.554Z","updated_at":"2025-04-08T12:11:43.598Z","avatar_url":"https://github.com/keith-turner.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Ecoji 2.0 🏣🔉🦐🩻🍈🚞🤹🥷\n\nEcoji encodes data using 1024 [emojis][emoji]. This repository contains the\ncanonical implementation of the [Ecoji standard](docs/encoding.md) written in\n[Go](https://go.dev). Version 2 of the Ecoji standard was released in 2022 with\nan improved set of emojis. Ecoji version 2 produces output that is much more\ninteresting and visually stimulating than what version 1 produced.\n\nVisit [ecoji.io](https://ecoji.io) to try Ecoji in your browser.\n\n## Usage\n\n```bash\n$ ecoji -h\nusage: ecoji [OPTIONS]... [FILE]\n\nEncode or decode data as Unicode emojis. 😁\n\nFor compatability, when given no options stdin will be encoded using Ecoji \nversion 1. When using the new -e option, stdin is encoded using Ecoji \nversion 2.  The -e and -d options are mutually exclusive.\n\nOptions:\n    -e, --encode          Encode data using Ecoji version 2.  Omitting this\n                          option will encode using Ecoji version 1.\n    -d, --decode          Decodes data encoded using the Ecoji version 1 or 2 standard.\n    -w, --wrap=COLS       wrap encoded lines after COLS character (default 76).\n                          Use 0 to disable line wrapping.  This options is\n                          ignored when decoding.\n    -h, --help            Print this message\n    -v, --version         Print version information.\n\n🏣🔉🦐🩻🍈🚞🤹🥷\n```\n\n## Examples\n\n### Encoding:\n\n```bash\n$ echo \"Base64 is so 1999, isn't there something better?\" | ecoji -e\n🧏📩🧈🐇🧅📘🔯🚜💞😽♏🐊🎱🥁🚄🌱💞😭💮✊💢🪠🐭🩴🍉🚲🦑🐶💢🪠🔮🩹🍉📸🐮🌼👦🚟🥴📑\n```\n\n### Decoding:\n\n```bash\n$ echo 🧏📩🧈🐇🧅📘🔯🚜💞😽♏🐊🎱🥁🚄🌱💞😭💮✊💢🪠🐭🩴🍉🚲🦑🐶💢🪠🔮🩹🍉📸🐮🌼👦🚟🥴📑 | ecoji -d\nBase64 is so 1999, isn't there something better?\n```\n\n### Concatenation:\n\n```bash\n$ echo -n abc | ecoji -e\n👖📸🎈☕\n$ echo -n 6789 | ecoji -e\n🎥🤠📠🛼\n$ echo XY | ecoji -e\n🐲👡🪚☕\n$ echo 👖📸🎈☕🎥🤠📠🛼🐲👡🪚☕ | ecoji -d\nabc6789XY\n```\n\n### Making Hashes More Interesting\n\n```bash\n$ cat encode.go  | openssl dgst -binary -sha1 | ecoji -e\n🧘🎺🥧🗽🍻🏺💨🥿🍚📇🌱👞👻🌁🥉🗾\n$ echo 🧘🎺🥧🗽🍻🏺💨🥿🍚📇🌱👞👻🌁🥉🗾 | ecoji -d | openssl base64\nQo7e3rIs0pdfySSfYaWNaoO+ZrM=\n$ cat encode.go  | openssl dgst -binary -sha1 | openssl base64\nQo7e3rIs0pdfySSfYaWNaoO+ZrM=\n```\n\n(If you want to use Ecoji for hashes, consider the dangers inherent in older systems without utf8 emoji support, different fonts, and similar emojis.)\n\n### A URL Shortener\n\nFour base1024 emojis can represent 1 trillion unique IDs.  In the example below `af82dd48f7` represents a 5 byte id for a URL in a key value store like [Accumulo](https://accumulo.apache.org).  When someone enters the URL, the 5 byte id could be used to obtain the actual URL from the database and then redirect.\n\n```\n$ printf \"https://ecoji.io/%s\\n\" $(echo af82dd48f7 | xxd -r -p | ecoji -e)\nhttps://ecoji.io/😉🤌🫢🏄\n```\n\n## Other Implementations\n\nLibraries implementing the Ecoji encoding standard. Submit a PR to add a\nlibrary to the list. Libraries are given a quick review if time permits and\ntested before being added. However, libraries are not examined after being\nadded. Adding something to the list is not an endorsement of its correctness or\nthe projects security practices.\n\nBefore Ecoji V2 there was not a standard cross language test script, so the\ntesting done for V1 only implementations was inconsistent adhoc manual tests.\n\n| Language | Version | Comments |\n|----------| ------- | -------- |\n| [D](https://github.com/ohdatboi/ecoji-d) | V1 | Implementation of Ecoji written in the D programming language. |\n| Go | V1,V2 | This repository offers a Go library package with three functions [ecoji.Encode()](https://github.com/keith-turner/ecoji/blob/1afbae30233e80e8fb712b3521ab4cb5bf470002/v2/encode.go#L172) [ecoji.EncodeV2()](https://github.com/keith-turner/ecoji/blob/1afbae30233e80e8fb712b3521ab4cb5bf470002/v2/encode.go#L177) and [ecoji.Decode()](https://github.com/keith-turner/ecoji/blob/1afbae30233e80e8fb712b3521ab4cb5bf470002/v2/decode.go#L107). |\n| [Java](https://github.com/netvl/ecoji-java) | V1 | Implementation of Ecoji written in Java, usable in any JVM language. |\n| [JavaScript](https://github.com/UmamiAppearance/BaseExJS) | V1,V2 | A collection of base converters, which includes an implementation of Ecoji written in JavaScript. |\n| [.NET](https://github.com/abock/dotnet-ecoji) | V1 | Implementation of Ecoji written in C# targeting .NET Standard 2.0: [`dotnet add package Ecoji`](https://www.nuget.org/packages/Ecoji). |\n| [PHP](https://github.com/Rayne/ecoji-php) | V1 | PHP 7.x implementation of Ecoji. Available as [`rayne/ecoji` on Packagist](https://packagist.org/packages/rayne/ecoji). |\n| [Python](https://github.com/mecforlove/ecoji-py) | V1 | Implementation of Ecoji written in the Python3 programming language. |\n| [Ruby](https://github.com/makenowjust/ecoji.rb) | V1,V2 | Implementation of Ecoji written in the Ruby programming language: [`gem install ecoji`](https://rubygems.org/gems/ecoji) |\n| [Rust](https://github.com/netvl/ecoji.rs) | V1 | Implementation of Ecoji written in the Rust programming language. |\n| [Swift](https://github.com/Robindiddams/ecoji-swift) | V1 | Implementation of Ecoji written in the Swift programming language. |\n\n\n## Building\n\nTo build the command line version of ecoji, run the following commands.\n\n```bash\ngit clone https://github.com/keith-turner/ecoji.git\ncd ecoji/cmd\ngo build ecoji.go\n./ecoji --help\n```\n\nFor an example of how to use Ecoji as library see [library-example.md](docs/library-example.md).\n\n[emoji]: https://unicode.org/emoji/\n[video]: https://www.youtube.com/watch?v=XCsL89YtqCs\n[tour]: https://tour.golang.org/welcome/1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeith-turner%2Fecoji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeith-turner%2Fecoji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeith-turner%2Fecoji/lists"}