{"id":34034689,"url":"https://github.com/readicculus/pysh","last_synced_at":"2026-04-08T12:32:03.591Z","repository":{"id":237768886,"uuid":"794708047","full_name":"readicculus/pysh","owner":"readicculus","description":"Phish.net API Python Wrapper for getting show, setlist, song, venue, and other phishy data","archived":false,"fork":false,"pushed_at":"2024-05-03T20:34:07.000Z","size":35,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-19T02:07:28.888Z","etag":null,"topics":["api","api-wrapper","music-data","phish","phishnet","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/readicculus.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":"2024-05-01T19:33:41.000Z","updated_at":"2025-11-20T23:17:21.000Z","dependencies_parsed_at":"2024-05-03T05:33:31.774Z","dependency_job_id":"9966cab7-d668-4743-9270-6bb41ec8096a","html_url":"https://github.com/readicculus/pysh","commit_stats":null,"previous_names":["readicculus/pysh"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/readicculus/pysh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/readicculus%2Fpysh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/readicculus%2Fpysh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/readicculus%2Fpysh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/readicculus%2Fpysh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/readicculus","download_url":"https://codeload.github.com/readicculus/pysh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/readicculus%2Fpysh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31556228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","api-wrapper","music-data","phish","phishnet","python"],"created_at":"2025-12-13T19:58:28.246Z","updated_at":"2026-04-08T12:32:03.420Z","avatar_url":"https://github.com/readicculus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Pysh - a phish.net API client in Python\n![](https://github.com/readicculus/pysh/actions/workflows/main.yml/badge.svg)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nPysh is a Python wrapper for the [phish.net](phish.net) API that can be used to query for Phish songs, \nsetlists, shows, venues, and other phish related data.  This project is not associated with phish.net and you must \nfollow their API's terms of service while using this project.\n\nThis wraps the API described in the [phish.net API v5 Docs](https://docs.phish.net/).\n## Installation\nThis package is available on pypi [pysh-client](https://pypi.org/project/pysh-client/) and can be installed by running:\n```bash\npip install pysh-client\n```\n\n## Requirements\n#### API Key\nYou will need to setup an API key which requires you have a phish.net account.  \nThis library gets the key from the `PHISH_API_KEY` environment variable.  \nOnce you have your API key run the following before you can use this library.\n```bash\nexport PHISH_API_KEY=xxx\n```\nYou can alternatively pass the API key to the client when constructing it like this:\n```python\nfrom pysh import Client\nc = Client(apikey=\"xxx\")\n```\n\n\n## Usage \n#### Filtering\nThere are a few ways to filter in your query calls.  Filtering is optional.\n1. You can filter by id, for example if trying to get a show by the show id you can specify `get_shows(id=123)`\n2. OR, you can filter by a category and value, the category being one of the attributes in the schema of that method. For \nexample `get_shows(column='showyear', value='1995')` which returns all shows in 1995.\n\n#### Additional Parameters\nThere are additional parameters you can define for all client methods defined by the `Parameters` class that allows you to \ndefine the following optional parameters if desired:\n1. `order_by`: name of column to sort by\n2. `direction`: direction to sort, either asc or desc (default asc)\n3. `limit`: number, maximum number of results to return\n4. `no_header`: if requesting data in HTML format, the argument _noheader will suppress the Phish.net banner\n5. `callback`: if requesting data in JSON format, sending a callback will wrap the resulting JSON file in a callback function call\n```python\nfrom pysh import Parameters, Client\nc = Client()\nc.get_shows(parameters=Parameters(order_by='showdate', direction='desc'))\n```\nYou can read more about each of these parameters in the [Parameters Docs](https://docs.phish.net/#parameters)\n\n## Examples\n\n**Get all shows**\n```python\nc.get_shows()\n```\n\n**Get a Show by Year**\n```python\nc.get_shows(column=\"showyear\", value=\"2020\")\n```\n\n**Get a song by name**\n```python\nc.get_songs(column=\"slug\", value=\"bug\")\n```\n\n**Get a setlist for a show by date**\n```python\nc.get_setlists(column=\"showdate\", value=\"1984-10-23\")\n```\n\n## Client API Methods\nBelow are the currently available API methods usable via this client.  I've not yet added the three \n[special methods](https://docs.phish.net/special-methods) (attendance, reviews, and users) but will at some point.\n\nEach pysh client method below corresponds to the phish.net api method and the return value is always a list \nof dictionaries with the below dictionary schema.\n\n#### Shows (v5/shows)\n```\nget_shows(...) -\u003e \nList[Dict{'showid', 'showyear', 'showmonth', 'showday', 'showdate', 'permalink', 'exclude_from_stats',\n'venueid', 'setlist_notes', 'venue', 'city', 'state', 'country', 'artistid', 'artist_name',\n'tourid', 'tour_name', 'created_at', 'updated_at'}]\n```\n#### Venues  (v5/venues)\n```\nget_venues(...) -\u003e \nList[Dict{'venueid', 'venuename', 'city', 'state', 'country', 'venuenotes', 'alias', 'short_name'}]\n```\n#### Songs  (v5/songs)\n```\nget_songs(...) -\u003e \nList[Dict{'songid', 'song', 'slug', 'abbr', 'artist', 'debut', 'last_played', 'times_played',\n                      'last_permalink', 'debut_permalink', 'gap'}]\n```\n#### Songdata  (v5/songdata)\n```\nget_songdata(...) -\u003e \nList[Dict{'songid', 'song', 'nickname', 'slug', 'lyrics', 'history', 'historian'}]\n```\n#### Setlists  (v5/setlists)\n```\nget_setlists(...) -\u003e \nList[Dict{'showid', 'showdate', 'permalink', 'showyear', 'uniqueid', 'meta', 'reviews', 'exclude',\n                  'setlistnotes', 'soundcheck', 'songid', 'position', 'transition', 'footnote', 'set', 'isjam',\n                  'isreprise', 'isjamchart', 'jamchart_description', 'tracktime', 'gap', 'tourid', 'tourname',\n                  'tourwhen', 'song', 'nickname', 'slug', 'is_original', 'venueid', 'venue', 'city', 'state',\n                  'country', 'trans_mark', 'artistid', 'artist_slug', 'artist_name'}]\n```\n#### Artists  (v5/artists)\n```\nget_artists(...) -\u003e \nList[Dict{'id', 'artist', 'slug'}]\n```\n\n#### Jamcharts  (v5/jamcharts)\n```\nget_jamcharts(...) -\u003e \nList[Dict{'showid', 'showdate', 'permalink', 'showyear', 'uniqueid', 'meta', 'reviews', 'exclude',\n                   'setlistnotes', 'soundcheck', 'songid', 'position', 'transition', 'footnote', 'set', 'isjam',\n                   'isreprise', 'isjamchart', 'jamchart_description', 'tracktime', 'gap', 'tourid', 'tourname',\n                   'tourwhen', 'song', 'nickname', 'slug', 'is_original', 'venueid', 'venue', 'city', 'state',\n                   'country', 'trans_mark', 'artistid', 'artist_slug', 'artist_name'}]\n```\n\n---\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freadicculus%2Fpysh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freadicculus%2Fpysh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freadicculus%2Fpysh/lists"}