{"id":18129203,"url":"https://github.com/jkawamoto/go-pixeldrain","last_synced_at":"2025-10-06T11:13:05.479Z","repository":{"id":30406006,"uuid":"124807862","full_name":"jkawamoto/go-pixeldrain","owner":"jkawamoto","description":"Share files with decentralized cloud storage.","archived":false,"fork":false,"pushed_at":"2025-09-22T07:00:15.000Z","size":4657,"stargazers_count":59,"open_issues_count":2,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-22T07:15:57.287Z","etag":null,"topics":["cloud","fileshare","go","golang","openapi"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/jkawamoto/go-pixeldrain","language":"Go","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/jkawamoto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"jkawamoto"}},"created_at":"2018-03-11T23:03:51.000Z","updated_at":"2025-09-22T06:28:02.000Z","dependencies_parsed_at":"2024-06-19T17:11:48.396Z","dependency_job_id":"ff69bbfc-38cd-4654-8da9-7b0dbfbe17e9","html_url":"https://github.com/jkawamoto/go-pixeldrain","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/jkawamoto/go-pixeldrain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkawamoto%2Fgo-pixeldrain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkawamoto%2Fgo-pixeldrain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkawamoto%2Fgo-pixeldrain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkawamoto%2Fgo-pixeldrain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkawamoto","download_url":"https://codeload.github.com/jkawamoto/go-pixeldrain/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkawamoto%2Fgo-pixeldrain/sbom","scorecard":{"id":522376,"data":{"date":"2025-08-11","repo":{"name":"github.com/jkawamoto/go-pixeldrain","commit":"2a6edaa2044f1da8dab1fdb757ec32aebbc56081"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/10 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":2,"reason":"2 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yaml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yaml:9","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/jkawamoto/go-pixeldrain/release.yaml/main?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yaml:12"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.7.4 not signed: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/212391124","Warn: release artifact v0.7.3 not signed: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/196326311","Warn: release artifact v0.7.2 not signed: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/150813356","Warn: release artifact v0.7.1 not signed: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/98632200","Warn: release artifact v0.7.0 not signed: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/98614591","Warn: release artifact v0.7.4 does not have provenance: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/212391124","Warn: release artifact v0.7.3 does not have provenance: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/196326311","Warn: release artifact v0.7.2 does not have provenance: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/150813356","Warn: release artifact v0.7.1 does not have provenance: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/98632200","Warn: release artifact v0.7.0 does not have provenance: https://api.github.com/repos/jkawamoto/go-pixeldrain/releases/98614591"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T03:23:10.127Z","repository_id":30406006,"created_at":"2025-08-20T03:23:10.127Z","updated_at":"2025-08-20T03:23:10.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278598620,"owners_count":26013291,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cloud","fileshare","go","golang","openapi"],"created_at":"2024-11-01T10:07:35.258Z","updated_at":"2025-10-06T11:13:05.474Z","avatar_url":"https://github.com/jkawamoto.png","language":"Go","funding_links":["https://ko-fi.com/jkawamoto"],"categories":[],"sub_categories":[],"readme":"# A Pixeldrain client\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)\n[![Go application](https://github.com/jkawamoto/go-pixeldrain/actions/workflows/ci.yaml/badge.svg)](https://github.com/jkawamoto/go-pixeldrain/actions/workflows/ci.yaml)\n[![Go Reference](https://pkg.go.dev/badge/github.com/jkawamoto/go-pixeldrain.svg)](https://pkg.go.dev/github.com/jkawamoto/go-pixeldrain)\n[![codecov](https://codecov.io/gh/jkawamoto/go-pixeldrain/branch/master/graph/badge.svg?token=ppX3MVIqWA)](https://codecov.io/gh/jkawamoto/go-pixeldrain)\n\n\n## Usage\n### Upload files\n```shell\npd upload \u003cpath[:name]\u003e...\n```\n\n`upload` command uploads files specified by the given `path`s to Pixeldrain and shows a URL to download them.\nEach `path` can have an optional `name`. If a name is given, uploaded file will be renamed with it.\n\nFor example, this command reads `img.png` and uploads it as `another.png`:\n\n```shell\npd upload img.png:another.png\n```\n\nIf `path` is `-`, the uploading file is read from stdin. In this case, it's recommended to give a file name.\nTo avoid being interpreted as an option flag, it is necessary to prepend `--` before the argument in this case.\nFor example, this command reads data from stdin and uploads it as `output.log`:\n\n```shell\npd upload -- -:output.log\n```\n\nIf multiple files are given, an album consists of them will be created. By default, the album has a random name.\n`--album` flag can specify the name.\nFor example, this command uploads two files and creates an album named `screenshots`:\n\n```shell\npd upload --album screenshots img1.png img2.png\n```\n\n#### Upload a directory\nSince this application supports uploading a file from STDIN, you can upload a directory with `tar` command.\nTo ensure the argument is not interpreted as an option flag, prepend `--` before the argument.\nFor example, this command uploads `~/Documents` directory:\n\n```shell\ntar zcf - ~/Documents | pd upload -- -:documents.tar.gz\n```\n\n#### Upload to your account\nIf you want to upload files to your account, give your API key with `--api-key` flag or via `PIXELDRAIN_API_KEY`\nenvironment variable.\n\nAn API key can be obtained from https://pixeldrain.com/user/api_keys.\n\n\n### Download files\n```shell\npd download \u003cURL\u003e...\n```\n\n`download` command downloads files from Pixeldrain and stores it in the current directory by default.\n\nIf `--dir` or `-o` option is given with a directory path, the downloaded file is stored in the directory.\n\nIf the given URL refers an album which consists of multiple files, this command asks which file you want to download.\nIf you want to download all files without any interaction, use `--all` flag.\n\n### End-to-end encryption\nIf recipients are specified with `--recipient` and/or `--recipient-file` flags to upload command,\nfiles will be encrypted before being uploaded by [age](https://github.com/FiloSottile/age).\nEncrypted files will have extension `.age`.\n\nA recipient specified with `--recipient` flag can be an age public key generated by `age-keygen` (\"age1...\")\nor an SSH public key (\"ssh-ed25519 AAAA...\", \"ssh-rsa AAAA...\").\nA recipient file specified with `--recipient-file` flag contains one or more recipients, one per line.\nEmpty line sand lines starting with \"#\" are ignored as comments.\n\nIf a downloading file has extension `.age` and an identity file is specified with `--identity` flag to download command,\nthe file will be decrypted.\n\nAn identity contains one or more secret keys (\"AGE-SECRET-KEY-1...\"), one per line, or an SSH key.\nEmpty lines and lines starting with \"#\" are ignored as comments.\n\nSee [age](https://github.com/FiloSottile/age) for the details of `age` and `age-keygen`.\n\n## Installation\nIf you're a Homebrew or Linuxbrew user, you can install this app by the following commands:\n\n```\n$ brew tap jkawamoto/pixeldrain\n$ brew install pixeldrain\n```\n\nTo build the newest version, use go get command:\n\n```\n$ go install github.com/jkawamoto/go-pixeldrain/cmd/pd@latest\n```\n\nOtherwise, compiled binaries are also available in [GitHub](https://github.com/jkawamoto/go-pixeldrain/releases).\n\n\n## License\nThis software is released under the MIT License, see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkawamoto%2Fgo-pixeldrain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkawamoto%2Fgo-pixeldrain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkawamoto%2Fgo-pixeldrain/lists"}