{"id":19297359,"url":"https://github.com/mkorangestripe/mntproj-data","last_synced_at":"2026-04-13T17:07:55.003Z","repository":{"id":259952060,"uuid":"879708605","full_name":"mkorangestripe/mntproj-data","owner":"mkorangestripe","description":"Mountain Project Data","archived":false,"fork":false,"pushed_at":"2024-12-29T20:04:34.000Z","size":120,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T22:09:34.302Z","etag":null,"topics":["flask","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkorangestripe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-10-28T12:13:37.000Z","updated_at":"2024-12-29T20:04:37.000Z","dependencies_parsed_at":"2024-10-28T19:48:47.133Z","dependency_job_id":"2857f0f8-fab7-4ce9-a092-78dbc46a6c3e","html_url":"https://github.com/mkorangestripe/mntproj-data","commit_stats":null,"previous_names":["mkorangestripe/mntproj-data"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkorangestripe%2Fmntproj-data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkorangestripe%2Fmntproj-data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkorangestripe%2Fmntproj-data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkorangestripe%2Fmntproj-data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkorangestripe","download_url":"https://codeload.github.com/mkorangestripe/mntproj-data/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240400293,"owners_count":19795331,"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":["flask","python"],"created_at":"2024-11-09T23:04:15.142Z","updated_at":"2026-04-13T17:07:54.996Z","avatar_url":"https://github.com/mkorangestripe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mountain Project Data Analyzer\n\nFind other Mountain Project users with similar tick lists.\n\n![graph](mntproj-data-app/static/mpda.svg)\n\n### Setup\n\nUse any of the following to install dependencies.\n\n* Create a virtual environment and install dependencies from [requirements.txt](requirements.txt). This will use your current version of Python.\n```shell script\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n* Create virtual environment and install dependencies from [Pipfile](Pipfile), or [Pipfile.lock](Pipfile.lock) if present. If installed, [pyenv](https://github.com/mkorangestripe/linux/blob/master/linux-notes/python-management.md#pyenv) will prompt you to install the specified version of Python if not already.\n```shell script\npipenv install\n```\n\n* With Anaconda installed, create virtual environment, install dependencies in [mntproj_py3.12.7.yaml](mntproj_py3.12.7.yaml), and install Python 3.12.7\n```shell script\nconda env create -n mntproj_py3.12.7 -f mntproj_py3.12.7.yaml python=3.12.7\n```\n\nSee [Package management](#package-management) below for further details.\n\n### Run as an API\n\nActivate virtual env:\n```shell script\nsource venv/bin/activate         # using venv\npipenv shell                     # using pipenv\nconda activate mntproj_py3.12.7  # using Anaconda\n```\n\nChange to the app directory:\n```shell script\ncd mntproj-data-app\n```\n\nStart using Flask:\n```shell script\npython app.py\n```\n\nStart using Gunicorn:  \nSet the number of workers to (number of CPU cores x 2) + 1\n\n```shell script\n# For shorter runs:\ngunicorn -w 3 -b 0.0.0.0:8000 --timeout 1800 app:app\n\n# Run in background:\nnohup gunicorn -w 3 -b 0.0.0.0:8000 --timeout 1800 app:app \u003e/var/log/mntproj/gunicorn.log 2\u003e\u00261 \u003c\u0026- \u0026\n```\n\nView in a browser running with Flask:\n[http://127.0.0.1:5000/](http://127.0.0.1:5000/)  \nView in a browser running with Gunicorn:\n[http://127.0.0.1:8000/](http://127.0.0.1:8000/)\n\nThe UID/name can be submitted on the page or with a query string.\n\nIf the port is already in use, check for previously started processes and kill the ppid, 49690 here:\n```shell script\nlsof -ni :8000\n\nps -ef | grep 49690\n\nkill 49690\n```\n\n### Run as a script\n\nCreate mntproj_user_ids.yaml and add UID/names, example:\n```yaml\nthomas-anderson: 123456789\nsuzy-bishop: 000000002\n```\n\nExample usage:\n```shell script\npython scrape_mntproj.py thomas-anderson\n\n# Use cached data for routes checked within the last 60 min:\npython scrape_mntproj.py thomas-anderson 60\n```\n\nOptions:  \n-n Try to use cached user's csv file\n\n### Logs\n\nThe log location is set in [constants.py](mntproj-data-app/constants.py)\n\nTail the log files to see progress while running:\n```shell script\ntail -f logs/app.log\ntail -f logs/compare_csv.log\ntail -f logs/scrape_mntproj.log\n```\n\n### Notes\n\nThis calls a Mountain Project API, you may receive HTTP response status code 429 (Too Many Requests) based on the rate limiting. This is why the get requests are not done in parallel.\n\nYou can use [compare_csv.py](mntproj-data-app/compare_csv.py) to compare two Mountain Project tick lists with each other.\n\n### Bugs\n\nOcassionally the percent for the user being analyzed will be over 100%. This should only ever be 100%. Just run it again with the options to use cached data and tick list.\n\n```shell script\npython scrape_mntproj.py thoman-anderson 60 -n\n```\n\n### Python versions\n\nOn macOS, you can use [Homebrew](https://brew.sh) to install anaconda, miniconda, or pyenv and inturn various version of Python.\n\n[Homebrew on macOS examples](https://github.com/mkorangestripe/linux/blob/master/linux-notes/package-management.md#homebrew-on-macos)\n\n[Python version and package management examples](https://github.com/mkorangestripe/linux/blob/master/linux-notes/python-management.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkorangestripe%2Fmntproj-data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkorangestripe%2Fmntproj-data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkorangestripe%2Fmntproj-data/lists"}