{"id":13419243,"url":"https://github.com/supakeen/pinnwand","last_synced_at":"2025-05-15T16:09:43.908Z","repository":{"id":41489920,"uuid":"171712839","full_name":"supakeen/pinnwand","owner":"supakeen","description":"A Python pastebin that tries to keep it simple.","archived":false,"fork":false,"pushed_at":"2025-03-27T06:08:11.000Z","size":1605,"stargazers_count":204,"open_issues_count":52,"forks_count":49,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-01T00:32:00.520Z","etag":null,"topics":["hacktoberfest","pastebin","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/supakeen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","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":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-20T16:52:16.000Z","updated_at":"2025-03-27T06:08:16.000Z","dependencies_parsed_at":"2023-01-29T14:45:45.608Z","dependency_job_id":"f3e9f2f1-1e21-4a4e-8c16-51f348a957f2","html_url":"https://github.com/supakeen/pinnwand","commit_stats":{"total_commits":646,"total_committers":25,"mean_commits":25.84,"dds":0.2306501547987616,"last_synced_commit":"b383e779053e503b350969a1ac4aa878caf15c9c"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supakeen%2Fpinnwand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supakeen%2Fpinnwand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supakeen%2Fpinnwand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supakeen%2Fpinnwand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supakeen","download_url":"https://codeload.github.com/supakeen/pinnwand/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247760439,"owners_count":20991493,"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":["hacktoberfest","pastebin","python"],"created_at":"2024-07-30T22:01:13.287Z","updated_at":"2025-04-08T01:34:11.827Z","avatar_url":"https://github.com/supakeen.png","language":"Python","funding_links":[],"categories":["Python","hacktoberfest"],"sub_categories":[],"readme":"![pinnwand logo, a rabbit](https://pinnwand.readthedocs.io/en/latest/_static/logo-doc.png)\n\n# pinnwand\n\n[![](https://readthedocs.org/projects/pinnwand/badge/?version=latest)](https://pinnwand.readthedocs.io/en/latest/) [![](https://pinnwand.readthedocs.io/en/latest/_static/license.svg)](https://github.com/supakeen/pinnwand/blob/master/LICENSE) [![](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) [![](https://img.shields.io/pypi/v/pinnwand)](https://pypi.org/project/pinnwand) [![](https://codecov.io/gh/supakeen/pinnwand/branch/master/graph/badge.svg)](https://codecov.io/gh/supakeen/pinnwand)\n\n## About\n\n`pinnwand` is Python pastebin software that tried to keep it simple but got\na little more complex.\n\nPrerequisites\n=============\n* Python \u003e= 3.8\n* Tornado\n* sqlalchemy\n* click\n* docutils\n* tomli\n* pygments-better-html\n* a database driver\n\nUsage\n=====\n\nWeb\n---\nEnter text, click \"Paste\", easy enough.\n\nsteck\n-----\n[steck](https://github.com/supakeen/steck) is a command line client to pinnwand instances:\n\n```\n€ pip install --user steck\n...\n€ steck paste *\nYou are about to paste the following 7 files. Do you want to continue?\n- LICENSE\n- mypy.ini\n- poetry.lock\n- pyproject.toml\n- README.rst\n- requirements.txt\n- steck.py\n\nContinue? [y/N] y\n\nCompleted paste.\nView link:    https://localhost:8000/W5\nRemoval link: https://localhost:8000/remove/TS2AFFIEHEWUBUV5HLKNAUZFEI\n```\n\ncurl\n----\n`pinnwand` has a direct endpoint for `curl` users:\n\n```\n€ echo \"foo\" | curl -X POST http://localhost:8000/curl -F 'raw=\u003c-'\nPaste URL:   http://localhost:8000/OE\nRaw URL:     http://localhost:8000/raw/GU\nRemoval URL: http://localhost:8000/remove/GQBHGJYKRWIS34D6FNU6CJ3B5M\n€ curl http://localhost:8000/raw/GU\nfoo%\n```\n\nThis will preselect the `lexer` and `expiry` arguments to be `text` and\n`1day` respectively. You can provide those to change them.\n\nAPI\n---\n`pinnwand` provides a straight forward JSON API, here's an example using the\ncommon requests library:\n\n```\n\u003e\u003e\u003e requests.post(\n...     \"http://localhost:8000/api/v1/paste\",\n...     json={\n...             \"expiry\": \"1day\",\n...             \"files\": [\n...                     {\"name\": \"spam\", \"lexer\": \"python\", \"content\": \"eggs\"},\n...             ],\n...     }\n... ).json()\n{'link': 'http://localhost:8000/74', 'removal': 'http://localhost:8000/remove/KYXQLPZQEWV2L4YZM7NYGTR7TY'}\n```\n\nMore information about this API is available in the [documentation](https://pinnwand.readthedocs.io/en/latest/).\n\n\nMore ways to use pinnwand\n-------------------------\nVarious deprecated ways of posting are still supported, don't implement these\nfor any new software but if you are maintaining old software and want to know\nhow they used to work you can read our documentation_.\n\nIf you do use a deprecated endpoint to post a warning will be shown below any\npastes that are created this way.\n\nReporting bugs\n==============\nBugs are reported best at `pinnwand`'s [project page](https://github.com/supakeen/pinnwand) on github. If you just\nwant to hang out and chat about `pinnwand` then I'm available in the\n`#pinnwand` channel on OFTC IRC.\n\nLicense\n=======\n`pinnwand` is distributed under the MIT license. See `LICENSE`\nfor details.\n\nHistory\n=======\nThis pastebin has quite a long history which isn't reflected entirely in its\nrepository.\n\nTesting\n=======\nThere are 2 types of tests available to verify that the application still works correctly after the changes:\n* unit test\n* browser e2e tests\n\nUnit tests are run by pytest by default when executing (the browser tests will be skipped)\n```\n€ pytest\n```\nIf you'd like to run browser tests you need to pass the `--e2e` option to the pytest command.\n```\n€ pytest --e2e\n```\nThe browser tests are executed by [Playwright](https://playwright.dev/python/docs/intro).\nThe tests by default will be run in the headless mode. \nBut it's possible to run them in the headed mode as well to be able to observe the execution of the tests.\nFor that, you just need to pass the `--headed` option to the `pytest --e2e` command:\n```\n€ pytest --e2e --headed\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupakeen%2Fpinnwand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupakeen%2Fpinnwand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupakeen%2Fpinnwand/lists"}