{"id":17300458,"url":"https://github.com/atomantic/henpin","last_synced_at":"2025-04-14T12:32:09.658Z","repository":{"id":46153130,"uuid":"416178639","full_name":"atomantic/henpin","owner":"atomantic","description":"hěn pīn 狠拼 (very together, much backup)","archived":false,"fork":false,"pushed_at":"2021-11-10T21:16:09.000Z","size":234,"stargazers_count":20,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T01:49:53.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomantic.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}},"created_at":"2021-10-12T04:10:08.000Z","updated_at":"2022-09-06T23:25:49.000Z","dependencies_parsed_at":"2022-09-01T01:01:14.769Z","dependency_job_id":null,"html_url":"https://github.com/atomantic/henpin","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2Fhenpin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2Fhenpin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2Fhenpin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomantic%2Fhenpin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomantic","download_url":"https://codeload.github.com/atomantic/henpin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248881706,"owners_count":21176903,"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":[],"created_at":"2024-10-15T11:28:41.506Z","updated_at":"2025-04-14T12:32:09.607Z","avatar_url":"https://github.com/atomantic.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hěn pīn 狠拼 (very together, much backup)\n\nA H=N IPFS pinning tool.\n\n## IPFS Pinning\n\nHic et Nunc (like most NFT platforms) stored the NFT data on IPFS. This is a network of decentralized file hosts. Every computer running an IPFS node is an edge caching server for the network as well as a host for specific (pinned) files. You can run your own website from IPFS if you like :)\n\nThere's a caveat with IPFS: If nobody is pinning a piece of content, it can expire from the network and be lost.\n\nYou can backup the Hic et Nunc platform (or just your own creations and collection, or that of your friends) by running an IPFS node and pinning the associated content.\n\nThis is a tool for pinning all of the creations and collections of a given tezos wallet.\n\n1. Install and run IPFS: https://ipfs.io/#install\n2. Git Clone this repository or download the release zip file\n3. Make sure you have Node.js installed: http://nodejs.org\n4. run `npm i` to install node modules\n5. Pin collection/creations by wallet address:\n\n```\nnode pin.js tz1iyFi4WjSttoja7Vi1EJYMEKKSebQyMkF9\n```\n\nor edit `pin.sh` to add your own addresses and run like so:\n\n```\n./pin.sh\n```\n\n### Timeout Config\n\nThere is a default timeout on IPFS pin set to 60 seconds in `./config.js`. You can override this value by setting the `IPFS_PIN_TIMEOUT` env var to an arbitrary value like so:\n\n\u003e Example setting timeout to 1 second:\n\n```\nIPFS_PIN_TIMEOUT=1s node pin.js tz1iyFi4WjSttoja7Vi1EJYMEKKSebQyMkF9\n\n# OR\n\nIPFS_PIN_TIMEOUT=1s ./pin.sh\n```\n\n## HENode\n\nYou can fun a full node of all H=N published assets by running\n\n```\nnode henode.js\n```\n\nThis will keep track of which files have already succesfully pinnned in a local state file (`.state.json`) and will resume from there on restarts.\n\n![henode running](./docs/henode.png)\n\n## Unpin Everything and Start Over?\n\nYou can `reset` your ipfs pins (unpin everything) like so:\n\n```\nipfs pin ls --type recursive | cut -d' ' -f1 | xargs -n1 ipfs pin rm\nipfs repo gc\n```\n\n## Under the Hood\n\nthis repo created by Adam Eivy @antic - https://tryshowtime.com/antic\n\nMuch thanks, very wow goes to https://hicdex.com/ (the underlying query api) by @marchingsquare - https://www.hicetnunc.xyz/marchingsquare\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomantic%2Fhenpin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomantic%2Fhenpin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomantic%2Fhenpin/lists"}