{"id":13546816,"url":"https://github.com/wabarc/ipfs-pinner","last_synced_at":"2025-05-16T06:11:22.727Z","repository":{"id":41961050,"uuid":"280700380","full_name":"wabarc/ipfs-pinner","owner":"wabarc","description":"A toolkit helps upload files to IPFS pinning services.","archived":false,"fork":false,"pushed_at":"2025-03-25T01:42:17.000Z","size":131,"stargazers_count":58,"open_issues_count":6,"forks_count":16,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-30T00:03:35.351Z","etag":null,"topics":["file-sharing","infura","ipfs","ipfs-pinner","ipfs-pinning-services","nft","nftstorage","pinata","web3","web3storage"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wabarc.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":"2020-07-18T16:58:04.000Z","updated_at":"2025-02-17T00:47:43.000Z","dependencies_parsed_at":"2024-01-05T20:46:30.308Z","dependency_job_id":"f6d707f9-54dc-46ec-9777-eb95d0d752e4","html_url":"https://github.com/wabarc/ipfs-pinner","commit_stats":{"total_commits":57,"total_committers":3,"mean_commits":19.0,"dds":0.4385964912280702,"last_synced_commit":"dc378f9e202bd5e8b7927c750d06d8edffa872f5"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wabarc%2Fipfs-pinner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wabarc%2Fipfs-pinner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wabarc%2Fipfs-pinner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wabarc%2Fipfs-pinner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wabarc","download_url":"https://codeload.github.com/wabarc/ipfs-pinner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253492529,"owners_count":21916959,"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":["file-sharing","infura","ipfs","ipfs-pinner","ipfs-pinning-services","nft","nftstorage","pinata","web3","web3storage"],"created_at":"2024-08-01T12:00:45.448Z","updated_at":"2025-05-16T06:11:22.709Z","avatar_url":"https://github.com/wabarc.png","language":"Go","funding_links":[],"categories":["Go","Tools","File Sharing"],"sub_categories":["Security"],"readme":"# ipfs-pinner\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/wabarc/ipfs-pinner)](https://goreportcard.com/report/github.com/wabarc/ipfs-pinner)\n[![Go Reference](https://img.shields.io/badge/godoc-reference-blue.svg)](https://pkg.go.dev/github.com/wabarc/ipfs-pinner)\n[![Releases](https://img.shields.io/github/v/release/wabarc/ipfs-pinner.svg?include_prereleases\u0026color=blue)](https://github.com/wabarc/ipfs-pinner/releases)\n[![ipfs-pinner](https://snapcraft.io/ipfs-pinner/badge.svg)](https://snapcraft.io/ipfs-pinner)\n\n`ipfs-pinner` is a toolkit to help upload files or specific content id to IPFS pinning services.\n\nSupported Golang version: See [.github/workflows/testing.yml](./.github/workflows/testing.yml)\n\n## Installation\n\nVia Golang package get command\n\n```sh\ngo get -u github.com/wabarc/ipfs-pinner/cmd/ipfs-pinner\n```\n\nUsing [Snapcraft](https://snapcraft.io/ipfs-pinner) (on GNU/Linux)\n\n```sh\nsnap install ipfs-pinner\n```\n\n## Usage\n\n### Supported Pinning Services\n\n#### [Infura](https://infura.io)\n\nInfura is a freemium pinning service that doesn't require any additional setup.\nIt's the default one used. Please bear in mind that Infura is a free service,\nso there is probably a rate-limiting.\n\n##### How to enable\n\nCommand-line:\n\nUse flag `-p infura`.\n\u003c!-- markdownlint-disable-file MD010 --\u003e\n```sh\n$ ipfs-pinner\nA CLI tool for pin files or directory to IPFS.\n\nUsage:\n\n  ipfs-pinner [flags] [path]...\n\nFlags:\n\n  -p string\n        Pinner sceret or password.\n  -t string\n        IPFS pinner, supports pinners: infura, pinata, nftstorage, web3storage. (default \"infura\")\n  -u string\n        Pinner apikey or username.\n```\n\u003c!-- markdownlint-enable-file MD010 --\u003e\n\nGo package:\n```go\nimport (\n        \"fmt\"\n\n        \"github.com/wabarc/ipfs-pinner/pkg/infura\"\n)\n\nfunc main() {\n        cid, err := infura.PinFile(\"file-to-path\");\n        if err != nil {\n                fmt.Sprintln(err)\n                return\n        }\n        fmt.Println(cid)\n}\n```\n\nor requests with project authentication\n\n```go\nimport (\n        \"fmt\"\n\n        \"github.com/wabarc/ipfs-pinner/pkg/infura\"\n)\n\nfunc main() {\n        inf := \u0026infura.Infura{ProjectID: \"your-project-id\", ProjectSecret: \"your-project-secret\"}\n        cid, err := inf.PinFile(\"file-to-path\");\n        if err != nil {\n                fmt.Sprintln(err)\n                return\n        }\n        fmt.Println(cid)\n}\n```\n\n#### [Pinata](https://pinata.cloud)\n\nPinata is another freemium pinning service. It gives you more control over\nwhat's uploaded. You can delete, label and add custom metadata. This service\nrequires signup.\n\n##### Environment variables\n\nUnix*:\n```sh\nIPFS_PINNER_PINATA_API_KEY=\u003capi key\u003e\nIPFS_PINNER_PINATA_SECRET_API_KEY=\u003csecret api key\u003e\n```\n\nWindows:\n```sh\nset IPFS_PINNER_PINATA_API_KEY=\u003capi key\u003e\nset IPFS_PINNER_PINATA_SECRET_API_KEY=\u003csecret api key\u003e\n```\n\n##### How to enable\n\nCommand-line:\n\nUse flag `-p pinata`.\n```sh\nipfs-pinner -p pinata file-to-path\n```\n\nGo package:\n```go\nimport (\n        \"fmt\"\n\n        \"github.com/wabarc/ipfs-pinner/pkg/pinata\"\n)\n\nfunc main() {\n        pnt := pinata.Pinata{Apikey: \"your api key\", Secret: \"your secret key\"}\n        cid, err := pnt.PinFile(\"file-to-path\");\n        if err != nil {\n                fmt.Sprintln(err)\n                return\n        }\n        fmt.Println(cid)\n}\n```\n\n#### [NFT.Storage](https://nft.storage)\n\nNFT.Storage is a long-term storage service designed for off-chain NFT data\n(like metadata, images, and other assets) for up to 31GiB in size. Data is\ncontent addressed using IPFS, meaning the URL pointing to a piece of data\n(“ipfs://…”) is completely unique to that data.\n\n##### How to enable\n\nCommand-line:\n\nUse flag `-p nftstorage`.\n```sh\nipfs-pinner -p nftstorage file-to-path\n```\n\nGo package:\n```go\nimport (\n        \"fmt\"\n\n        \"github.com/wabarc/ipfs-pinner/pkg/nftstorage\"\n)\n\nfunc main() {\n        nft := nftstorage.NFTStorage{Apikey: \"your api key\"}\n        cid, err := nft.PinFile(\"file-to-path\");\n        if err != nil {\n                fmt.Sprintln(err)\n                return\n        }\n        fmt.Println(cid)\n}\n```\n\n#### [Web3.Storage](https://web3.storage)\n\n\u003c!--alex disable simple--\u003e\n\nWeb3.Storage is a service to make building on top of Filecoin as simple as\npossible - giving the developers the power of open, distributed networks via\na friendly JS client library. Behind the scenes, Web3.Storage is backed by\nFilecoin and makes content available via IPFS leveraging the unique\nproperties of each network.\n\n\u003c!--alex enable simple--\u003e\n\n##### How to enable\n\nCommand-line:\n\nUse flag `-p web3storage`.\n```sh\nipfs-pinner -p web3storage file-to-path\n```\n\nGo package:\n```go\nimport (\n        \"fmt\"\n\n        \"github.com/wabarc/ipfs-pinner/pkg/web3storage\"\n)\n\nfunc main() {\n        web3 := web3storage.Web3Storage{Apikey: \"your api key\"}\n        cid, err := web3.PinFile(\"file-to-path\");\n        if err != nil {\n                fmt.Sprintln(err)\n                return\n        }\n        fmt.Println(cid)\n}\n```\n\n## License\n\nPermissive GPL 3.0 license, see the [LICENSE](https://github.com/wabarc/ipfs-pinner/blob/main/LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwabarc%2Fipfs-pinner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwabarc%2Fipfs-pinner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwabarc%2Fipfs-pinner/lists"}