{"id":13936444,"url":"https://github.com/yilinjuang/Octomender","last_synced_at":"2025-07-19T22:30:22.319Z","repository":{"id":42438648,"uuid":"103153689","full_name":"yilinjuang/Octomender","owner":"yilinjuang","description":"Get repo recommendation based on your GitHub star history. (EoS)","archived":false,"fork":false,"pushed_at":"2024-04-16T23:54:59.000Z","size":1569,"stargazers_count":91,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-23T20:55:15.053Z","etag":null,"topics":["github","recommendation-system","repository"],"latest_commit_sha":null,"homepage":"https://octomend.com","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/yilinjuang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2017-09-11T15:30:22.000Z","updated_at":"2024-10-28T18:13:57.000Z","dependencies_parsed_at":"2024-04-16T07:39:04.668Z","dependency_job_id":"6f62f134-a5d9-45c2-8ced-5d6671f47ccc","html_url":"https://github.com/yilinjuang/Octomender","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yilinjuang%2FOctomender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yilinjuang%2FOctomender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yilinjuang%2FOctomender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yilinjuang%2FOctomender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yilinjuang","download_url":"https://codeload.github.com/yilinjuang/Octomender/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226686720,"owners_count":17666928,"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":["github","recommendation-system","repository"],"created_at":"2024-08-07T23:02:40.702Z","updated_at":"2024-11-27T04:31:02.926Z","avatar_url":"https://github.com/yilinjuang.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Octomender\nGithub Repo Recommender System.\n```\nOctomender = Octocat + Recommender\n```\nGet repo recommendation based on your GitHub star history.\n\n## \u003ca href=\"https://octomend.com\"\u003e~~[HELP] Algorithm Testing~~\u003c/a\u003e End of Service\n~~The recommendation algorithm is deployed and being tested on [octomend.com](https://octomend.com).~~\n\n~~Visit [octomend.com](https://octomend.com) to help improve the recommendation.~~\n\n__End of Service since GitHub published [\"Discover Repositories\"](https://github.com/dashboard/discover) service.__\n\n\n## Dependencies\n- [redis](https://redis.io/): An in-memory database that persists on disk\n\n### Core\n- [hireids](https://github.com/redis/hiredis): Minimalistic C client for Redis \u003e= 1.2\n- [OpenMP\u003e=4.0](http://www.openmp.org/): C/C++ API that supports multi-platform shared memory multiprocessing programming\n\n### Preprocessing\n- [redis-py](https://github.com/andymccurdy/redis-py): Redis Python Client\n\n### Website\n- [Flask](http://flask.pocoo.org): A microframework for Python based on Werkzeug, Jinja 2 and good intentions\n- [GitHub-Flask](https://github.com/cenkalti/github-flask): Flask extension for authenticating users with GitHub and making requests to the API\n- [gunicorn](http://gunicorn.org): A Python WSGI HTTP Server for UNIX\n- [google-cloud-datestore](https://github.com/GoogleCloudPlatform/google-cloud-datastore): Low-level Java and Python client libraries for Google Cloud Datastore\n\n## Dataset\n[Github Archive](https://www.githubarchive.org/)\n\n## Build Core\n```\ncd core; make\n```\n\n## Preprocessing\n### [parse.py](preprocessing/parse.py)\nParse raw json data files into three pickle data files.\n- output-data-basename.user: map of user id (str) to user name (str)\n- output-data-basename.repo: map of repo id (int) to repo name (str)\n- output-data-basename.edge: list of tuples of user-repo edge (str, int)\n```\nUsage: parse.py {-m|--member|-w|--watch} {\u003cinput-json-directory\u003e|\u003cinput-json-file\u003e} \u003coutput-data-basename\u003e\n  -m, --member      parse MemberEvent.\n  -w, --watch       parse WatchEvent.\nEx:    parse.py -m 2017-06-01-0.json data\nEx:    parse.py --watch json/2017-05/ data/2017-05\n```\nRefer raw json data format to [GitHub API v3](https://developer.github.com/v3/activity/events/types/).\n\n### [parse_mp.py](preprocessing/parse_mp.py)\nDitto, but run with multiprocessing. Default number of processes is 16.\n```\nUsage: parse_mp.py {-m|--member|-w|--watch} {\u003cinput-json-directory\u003e|\u003cinput-json-file\u003e} \u003coutput-data-basename\u003e [n-process]\n  -m, --member      parse MemberEvent.\n  -w, --watch       parse WatchEvent.\n  n-process         number of processes when multiprocessing.\nEx:    parse.py -m 2017-06-01-0.json data\nEx:    parse.py --watch json/2017-05/ data/2017-05 32\n```\n\n### [mergedata.py](preprocessing/mergedata.py)\nMerge multiple pickle data files into one.\n```\nUsage: mergedata.py \u003cinput-data-dir\u003e \u003coutput-data-basename\u003e\nEx:    mergedata.py data/2016-010203/ data/2016-Q1\n```\n\n### [graph2redis.py](preprocessing/graph2redis.py)\nInsert graph data into redis database.\n```\nUsage: graph2redis.py \u003cinput-edgelist\u003e \u003credis-port\u003e\nEx:    graph2redis.py data/2016-Q1.edge 6379\n```\n\n## Thanks\n\n[importpython](https://importpython.com/newsletter/) and reddit.\n\n![importpython](assets/importpython.png)\n\n![reddit](assets/reddit.png)\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyilinjuang%2FOctomender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyilinjuang%2FOctomender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyilinjuang%2FOctomender/lists"}