{"id":43689466,"url":"https://github.com/nomi-san/yasuo","last_synced_at":"2026-02-05T03:07:28.893Z","repository":{"id":39563792,"uuid":"238667432","full_name":"nomi-san/yasuo","owner":"nomi-san","description":":tornado: Who picks Yasuo faster than me?","archived":false,"fork":false,"pushed_at":"2022-01-18T01:44:44.000Z","size":449,"stargazers_count":59,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2023-03-08T17:21:51.829Z","etag":null,"topics":["javascript","lcu-api","league-of-legends","lol","pick-lock","yasuo"],"latest_commit_sha":null,"homepage":"","language":"C#","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/nomi-san.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}},"created_at":"2020-02-06T10:55:19.000Z","updated_at":"2023-03-03T12:40:19.000Z","dependencies_parsed_at":"2022-09-02T23:41:28.550Z","dependency_job_id":null,"html_url":"https://github.com/nomi-san/yasuo","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/nomi-san/yasuo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomi-san%2Fyasuo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomi-san%2Fyasuo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomi-san%2Fyasuo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomi-san%2Fyasuo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nomi-san","download_url":"https://codeload.github.com/nomi-san/yasuo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomi-san%2Fyasuo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29108428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T02:48:39.389Z","status":"ssl_error","status_checked_at":"2026-02-05T02:48:27.400Z","response_time":65,"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":["javascript","lcu-api","league-of-legends","lol","pick-lock","yasuo"],"created_at":"2026-02-05T03:07:28.100Z","updated_at":"2026-02-05T03:07:28.882Z","avatar_url":"https://github.com/nomi-san.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" src=\"https://i.redd.it/1cp00o73bquz.jpg\" width=\"140px\"\u003e\n\n## Who picks Yasuo faster than me?\nSome code that helps you **pick and lock Yasuo or any champion as _quick as lightning_**!\n\n\u003cbr\u003e\n\nYou can read the Vietnamese post \u003ca href=\"https://nomi.dev/posts/super-fast-pick-lock\" target=\"_blank\"\u003ehere\u003c/a\u003e 😀\n\n## Some tools\n\n### / [yasuoit](https://github.com/nomi-san/yasuo/tree/master/yasuoit)\n- Written in **AutoIt**\n- Help you how to use LCU API\n\n### / [yasharp](https://github.com/nomi-san/yasuo/tree/master/yasharp)\n- Written in **C#**\n- Using websocket for event listener\n- Talk to the system via League's chatbox\n\n## 4 steps to pick and lock Yasuo immediately on your web browser!\n\n### Preparing\n\n- Please make sure **League Client** is opened\n- A modern web browser, Chromium-based web browser is suggested\n\n### Step 1 - Get League's auth\n\nOpen your terminal and type:\n\n- On Windows (use **cmd**, run as admin)\n  ```batch\n  WMIC PROCESS WHERE name='LeagueClientUx.exe' GET commandline\n  ```\n\n- On MacOS\n  ```bash\n  ps x -o args | grep 'LeagueClientUx'\n  ```\n\nLook for the following line:\n```\n\"--remoting-auth-token=abcdef123456ABCDEF123456\" \"--app-port=56789\"\n```\n- `abcdef123456ABCDEF123456` is the auth token (**PASS**)\n- `56789` is the address port (**PORT**)\n\n### Step 2 - Login and get champion IDs\n\nOpen your web browser and enter this URL:\n```http\nhttps://127.0.0.1:PORT/lol-champions/v1/owned-champions-minimal\n```\n- Replace **PORT** by your port, press enter\n- The login dialog will be shown, enter \"**riot**\" as username and your auth token as password\n\nThe browser will show all your owned and free champions (as JSON), please find ID of your favorite champions. Use **Ctrl** + **F** with  keyword:\n```\n\"name\":\"champion_name_here\n```\n\n### Step 3 - Execute script\n\nOn this tab, open **console** (on Windows, press \u003ckbd\u003eCtrl Shift J\u003c/kbd\u003e on **Chrome**)\n\nCopy the code below (or from [script.js](/script.js)) and paste to the console:\n```js\nvar start=function(){var t,n=arguments.length\u003e0\u0026\u0026void 0!==arguments[0]?arguments[0]:[157],a=async function(t,n,a){return await fetch(n,{method:t,body:a,headers:{\"Content-type\":\"application/json; charset=UTF-8\"}}).then(function(t){return t.text()}).then(function(t){return JSON.parse(t.length?t:\"{}\")})},e=async function(t,n){return 0===Object.keys(await a(\"PATCH\",\"/lol-champ-select/v1/session/actions/\".concat(t),JSON.stringify({championId:n}))).length},c=setInterval(async function(){if(await async function(){return\"InProgress\"===(await a(\"GET\",\"/lol-matchmaking/v1/ready-check\")).state}())await async function(){return await a(\"POST\",\"/lol-matchmaking/v1/ready-check/accept\")}();else if((t=await async function(){var t=await a(\"GET\",\"/lol-champ-select/v1/session\"),n=t.localPlayerCellId,e=t.actions;return e?e[0].filter(function(t){return t.actorCellId===n})[0].id:-1}())\u003e-1){for(var i=0;i\u003cn.length\u0026\u0026!await e(t,n[i]);i++);await async function(t){return await a(\"POST\",\"/lol-champ-select/v1/session/actions/\".concat(t,\"/complete\"))}(t),clearInterval(c)}},250)};\n```\n\nPress enter to run the script.\n\nNext, execute the code below:\n```js\nstart([157, 10, 1])\n```\n- 157 is Yasuo's ID, 10 is Kayle and 1 is Annine\n- If someone picks Yasuo faster than you or Yasuo is not picakble, then Kayle is the next one\n- Setup the ID array by yours and enter\n\n### Step 4 - Enjoy\n\nMake a Custom/Normal game (Summoner's Rift - blind pick only), and enjoy!\n\n// This script will accept you match found, and pick-lock your champ automatically. You should repeat the Step 3's **start** for the next match.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomi-san%2Fyasuo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnomi-san%2Fyasuo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomi-san%2Fyasuo/lists"}