{"id":17282760,"url":"https://github.com/chechiachang/scouter","last_synced_at":"2025-07-05T06:02:03.287Z","repository":{"id":101666922,"uuid":"137899010","full_name":"chechiachang/scouter","owner":"chechiachang","description":"Get github contribution with a face detection app. Dragon ball fantasy!","archived":false,"fork":false,"pushed_at":"2023-07-18T15:06:36.000Z","size":16934,"stargazers_count":14,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T23:23:26.476Z","etag":null,"topics":["dlib","dragon-ball","face-detection","face-recognition","flask","github-api","golang","python","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","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/chechiachang.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":"2018-06-19T13:57:49.000Z","updated_at":"2023-12-05T15:08:29.000Z","dependencies_parsed_at":"2024-10-15T10:00:01.775Z","dependency_job_id":null,"html_url":"https://github.com/chechiachang/scouter","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/chechiachang%2Fscouter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chechiachang%2Fscouter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chechiachang%2Fscouter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chechiachang%2Fscouter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chechiachang","download_url":"https://codeload.github.com/chechiachang/scouter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248860218,"owners_count":21173342,"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":["dlib","dragon-ball","face-detection","face-recognition","flask","github-api","golang","python","unity"],"created_at":"2024-10-15T09:49:42.957Z","updated_at":"2025-04-14T10:10:26.322Z","avatar_url":"https://github.com/chechiachang.png","language":"C#","readme":"Scouter\n===\n\nScouter: A human face detector which displays your Github contribution statistics.\n\n[![Build Status](https://travis-ci.org/chechiachang/scouter.svg?branch=master)](https://travis-ci.org/chechiachang/scouter)\n\n![inline](docs/2000.jpeg)\n\n![inline](docs/demo.png)\n\n# Check Slides for GDG DevFest 2019 Kaohsiung\n\n[Google Slides](https://docs.google.com/presentation/d/1WMOZ7EXDinXvQHBwl08KaFQVYKktq_4eOlEvXlzZtcY/)\n\n# Check Presentation Stream on COSCUP 2018\n\n[![Check this live demo](docs/coscup-2018.png)](https://www.youtube.com/live/4SWO4x7bNjo?feature=share\u0026t=23536)\n\n[Presentation On COSCUP 2018](https://github.com/chechiachang/my-speeches/blob/master/fr-ar-open-source-power-detector/presentation.md)\n\n# Brief\n\n- Fetch data with Github API\n  - Github user data\n  - Github user avatar\n  - Parse Github contribution HTML to get user contribution statistics\n- Convert avatar to identity with Face Recognition API. Encoding avatar identity with userId.\n- Track face and crop face image from camera streaming with OpenCV\n- Send face image to Flask API server\n  - Convert unknown face image to identity.\n  - Get userId and contribution statistics with identity.\n- Send user contribution to App and display.\n\n# MongoDB\n\n1. Have a local running mongoDB using docker\n```\nmake db\n```\n\n2. (Optional) Import dump user data\n```\nmake migrate\n\n# Check user data in mongodb\ndocker exec -it mongo mongo scouter --eval \"printjson(db.users.findOne())\"\ndocker exec -it mongo mongo scouter --eval \"printjson(db.users.count())\"\n```\n\nSkip 'Fetching data with Github API' if using dump data\n\n# (Optional) Fetching data with Github API\n\n### Generate Github access token\n\n1. Github -\u003e User -\u003e settings -\u003e Developer settings -\u003e Personal access tokens\n2. Keep your token safe.\n\n### Run fetchers with token\n\n0. Install go\n\n1. Fetch user data with Github Search API\n```\nGITHUB_ACCESS_TOKEN=\ngo build ./cmd/user_fetcher \u0026\u0026 ./user_fetcher -token ${GITHUB_ACCESS_TOKEN}\n```\n\n2. Fetch user detail information like follwers and repos with Github User API\n```\ngo build ./cmd/user_detail_fetcher \u0026\u0026 ./user_detail_fetcher -token ${GITHUB_ACCESS_TOKEN}\n```\n\n3. Fetch users' avatar with user.url from data in mongodb\n```\ngo build ./cmd/avatar_downloader \u0026\u0026 ./avatar_downloader\n```\n\n4. Fetch users' contribution statics by parsing html response of user.url from data in mongodb\n```\ngo build ./cmd/contribution_fetcher \u0026\u0026 ./contribution_fetcher\n```\n\n5. Make sure user avatar are good to go\n```\nls data/avatars\n```\n\n# Face detection and Face recognition\n\n[Face Recognition API](https://Github.com/ageitgey/face_recognition)\n\n0. Prepare a python virtual env\n```\npython3 -m venv .venv\nsource ./.venv/bin/activate\n```\n\n1. Install python dependency\n```\npip3 install dlib flask face_recognition pymongo bson\n```\n\n2. Try some face recognition API\n```\nface_recognition --show-distance true --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/\n```\n\n3. Prepare face identity file with encoding generator\n```\n# Filter data/avatars image. Save images with human faces to data/human_face.\n# Generate face_recognition/encodings and face_recognition/index with data/human_face\npython ./face_recognition/encoding_file_generator.py\n```\n\n4. Run apiserver to serve face recognition API\n```\npython ./face_recognition/apiserver.py\n```\n\n5. Send imageBytes to api server\n```\nPostRequest(\"http://\"+apiserverip+\":5000/face_detection\", imageBytes)\n```\n\n# Unity\n\n1. Download latest Unity with iOS Build tools\n\n2. Create a new project\n\n3. Download and import a free face tracker example from unity asset store\n[Face Tracker Example](https://assetstore.unity.com/packages/templates/tutorials/facetracker-example-35284)\n\n4. Download and import another priced asset is required: \n[OpenCV for Unity](https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088)\nNOTE: This is a priced asset.\n\n5. Copy unity scenes and scripts\n```\ncp -r unity/Assets/Scouter/* \u003cunity-workspace\u003e/\u003cyour-project\u003e/Assets/FaceTrackerExample\n```\n\n6. Open Unity and setup.\nFile -\u003e Build Settings -\u003e Player Settings\n```\nMac App Store Options -\u003e Bundle Identifier: com.chechiachang.scouter\nConfiguration -\u003e Scriptin Runtime Version: .NET 4.x Equivalent -\u003e restart\n```\n\n7. Open Scenes/WebCamTextureFaceTrackerExample\n```\nInspector -\u003e Web Cam Texture Face Tracker Example -\u003e Apiserverip: \n- 127.0.0.1 on your localhost mac\n- 172.20.10.3 with personal hotspot of Iphone\n```\nRun\n\n### Project Configuration\n\n1. Open unity build for iphone project with xcode. Open another project.\n2. Xcode developer account:\n  - Xcode - Preferences - Accounts: Add and login your 'apple developer ID'. \n  - The team of your developer account will show up. \n  - In my case, A personal team show up with my username as team name.\n3. Signing:\n  - Click my-project. The project configure page will show up.\n  - General - Identity: Change your display name and Bundle Identifier. Any reasonable identifier other than the example identifier will work.\n  - General - Signing: Check 'Automatically manage signing'.\n  - Choose your team. A signing certificates will show up.\n  - If you stuck here, check your bundle identifier.\n\n### Build project\n\n1. Attach your device (your iphone). Unlock your iphone.\n2. Click 'Build and Run Current Schema'.\n\n# TODOs\n\n- [x] Github API crawler\n  - [x] Add an API to search user in Taiwan \n    - [x] Order by joined asc\n    - [x] Implement a API call with narrowed search condition\n  - [x] Add an API to fetch user Data\n    - [x] Get user with userUrl\n    - [x] order by most follower\n    - [x] order by most commit. Might need query by username.\n  - [x] Save user data to mongodb\n    - [x] username\n    - [x] avatar\n    - [x] # of follower\n    - [x] # of contributions\n- [x] Google Search API Face downloader\n  - [x] Search Avatar with Github username and login\n  - [x] Google Custom Search API\n    [Google Custom Search API](https://developers.google.com/custom-search/docs/tutorial/introduction)\n- [x] Face Recognizer\n  - [x] Face detector\n    - [x] Generate face encoding and save to Python Pickle file\n    - [x] Face Recognition\n      [Face recognition](https://Github.com/ageitgey/face_recognition)\n- [x] Front-End\n  - [x] Unity ios app\n  - [x] API portal\n  - [x] AR GUI\n- [x] Readme\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchechiachang%2Fscouter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchechiachang%2Fscouter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchechiachang%2Fscouter/lists"}