{"id":14981637,"url":"https://github.com/daferferso/rooster_shift_finder","last_synced_at":"2026-02-11T08:03:56.709Z","repository":{"id":281825011,"uuid":"837995007","full_name":"daferferso/rooster_shift_finder","owner":"daferferso","description":"Rooster Shift Finder - This project enables the effective and efficient automation of shift scheduling on the Riders page of Pedidos Ya (Bolivia) using Puppeteer and proxies.","archived":false,"fork":false,"pushed_at":"2025-05-04T19:38:28.000Z","size":280,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T20:35:45.120Z","etag":null,"topics":["javascript","nodejs","prisma","puppeteer","rpa","selenium","typescript"],"latest_commit_sha":null,"homepage":"https://bo.usehurrier.com/app/rooster/web/login","language":"JavaScript","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/daferferso.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-04T16:34:00.000Z","updated_at":"2025-05-04T19:38:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"3b77d231-741d-4520-9dc8-4a2c9125d8df","html_url":"https://github.com/daferferso/rooster_shift_finder","commit_stats":null,"previous_names":["daferferso/rooster_shift_finder"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/daferferso/rooster_shift_finder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daferferso%2Frooster_shift_finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daferferso%2Frooster_shift_finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daferferso%2Frooster_shift_finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daferferso%2Frooster_shift_finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daferferso","download_url":"https://codeload.github.com/daferferso/rooster_shift_finder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daferferso%2Frooster_shift_finder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273403627,"owners_count":25099297,"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","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["javascript","nodejs","prisma","puppeteer","rpa","selenium","typescript"],"created_at":"2024-09-24T14:03:58.209Z","updated_at":"2026-02-11T08:03:56.620Z","avatar_url":"https://github.com/daferferso.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rooster Shift Finder\n\nThis project automates the scheduling of shifts on the website [https://bo.usehurrier.com/app/rooster/web/login](https://bo.usehurrier.com/app/rooster/web/login) using Puppeteer. It supports proxy management and error recovery mechanisms.\n\n## Requirements\n\n- **Node.js**: v20.14.0 or higher\n- **TypeScript**: Version 5.4.5\n\n## Installation\n\n1. Install all dependencies:\n\n   ```sh\n   npm install\n   ```\n\n## Configuration File (config.json)\n\nYou must configure the config.json file before running the program. Below is an explanation of each field:\n\n- **debugFile:** If you want to generate a log file.\n- **requestDelay:** Delay (in milliseconds) between requests for shifts.\n- **extensionPath:** Path to the ProxySharp extension.\n- **extensionUrl:** URL of the extension. It can change when the browser is reopened, so you may need to update it each time.\n- **browserPath:** Path to the browser executable (Chrome, Brave, Edge, or any Chromium-based browser).\n- **timeOutElements:** Maximum wait time (in milliseconds) for each element on the page before throwing an error.\n- **timeOutResponse:** Maximum wait time (in milliseconds) for a page response before throwing an error.\n- **selectors:** CSS selectors to identify page components such as the email input, password input, login button, and page title.\n\nExample config.json:\n\n```json\n{\n  \"debugFile\": false,\n  \"requestDelay\": 2500,\n  \"extensionPath\": \"modify_this_part\\\\utils\\\\extension\",\n  \"extensionUrl\": \"chrome-extension://cpmhjliddapgdeodmklfbibnchacikpl\",\n  \"browserPath\": \"modify_this_part\\\\Application\\\\brave.exe\",\n  \"timeOutElements\": 20000,\n  \"timeOutResponse\": 20000,\n  \"selectors\": {\n    \"emailInput\": \"#app \u003e div.Login__StyledContainer-EIyCN.hOPUnB \u003e form \u003e div \u003e div:nth-child(1) \u003e input\",\n    \"passwordInput\": \"#app \u003e div.Login__StyledContainer-EIyCN.hOPUnB \u003e form \u003e div \u003e div:nth-child(2) \u003e input\",\n    \"loginButton\": \"#app \u003e div.Login__StyledContainer-EIyCN.hOPUnB \u003e form \u003e button\",\n    \"pageTitle\": \"#app \u003e div.Y_H7dxviaGWF8ClZOdze \u003e div \u003e header \u003e div \u003e div.No9IbYC1L1JdgIlAPE0R\"\n  }\n}\n```\n\n## Data File (data.json)\n\nThe data.json file needs to be properly configured with the account that will be used to log in and search for shifts. Here's a breakdown:\n\n- **id:** The correct account ID.\n- **email and password:** Account credentials for logging into the website.\n- **country:** The country code, city ID, and timezone for the account.\n- **useProxy:** Set to false to use the local IP, or true to use proxies from the provided list.\n- **proxies:** A list of proxies to be used if useProxy is true.\n- **schedule:** The date range (start and end) for finding shifts.\n- **conditions:** Filters for shifts. Shifts are evaluated based on these conditions, including date and time range, minimum duration, and location - (place IDs).\n- **shifts[]:** Array to store all found and taken shifts.\n  Example data.json:\n\n```json\n{\n  \"account\": {\n    \"id\": 12345,\n    \"email\": \"test@gmail.com\",\n    \"password\": \"test123\",\n    \"country\": {\n      \"code\": \"bo\",\n      \"cityId\": 1,\n      \"tz\": \"America/La_Paz\"\n    },\n    \"useProxy\": false,\n    \"proxies\": [\"host:port\"],\n    \"schedule\": {\n      \"start\": \"2024-09-23\",\n      \"end\": \"2024-09-23\"\n    },\n    \"conditions\": [\n      {\n        \"startDate\": \"2024-09-23\",\n        \"endDate\": \"2024-09-23\",\n        \"startTime\": \"07:00:00\",\n        \"endTime\": \"03:00:00\",\n        \"minTime\": {\n          \"hours\": 1,\n          \"minutes\": 0\n        },\n        \"placesId\": []\n      }\n    ],\n    \"shifts\": []\n  }\n}\n```\n\n## Running the Program\n\nTo run the program in development mode:\n\n```sh\nnpm run dev\n```\n\nTo build the program into the bin/ folder:\n\n```sh\nnpm run build\n```\n\nThe final executable will be named `rooster_shift_finder.exe`. Note that the executable requires the utils folder to function. Inside the utils folder, the following items must be present:\n\n- extension folder containing the proxy connection extension.\n- config.json and data.json files properly configured as described above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaferferso%2Frooster_shift_finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaferferso%2Frooster_shift_finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaferferso%2Frooster_shift_finder/lists"}