{"id":18813193,"url":"https://github.com/nellore/nitwit","last_synced_at":"2025-06-30T14:04:03.894Z","repository":{"id":31473775,"uuid":"35037843","full_name":"nellore/nitwit","owner":"nellore","description":"Scan Twitter or Github for available handles","archived":false,"fork":false,"pushed_at":"2015-05-07T03:14:55.000Z","size":228,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T11:43:39.991Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/nellore.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":"2015-05-04T13:57:19.000Z","updated_at":"2024-08-27T09:36:21.000Z","dependencies_parsed_at":"2022-09-03T15:20:45.963Z","dependency_job_id":null,"html_url":"https://github.com/nellore/nitwit","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nellore%2Fnitwit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nellore%2Fnitwit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nellore%2Fnitwit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nellore%2Fnitwit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nellore","download_url":"https://codeload.github.com/nellore/nitwit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248784200,"owners_count":21161073,"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":[],"created_at":"2024-11-07T23:36:41.993Z","updated_at":"2025-04-13T21:26:13.595Z","avatar_url":"https://github.com/nellore.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nitwit v0.1.0\nScans Twitter or Github for available handles from a word list. Requires Python 2.x and \u003ca href=\"http://docs.python-requests.org/en/latest/\"\u003erequests\u003ca\u003e.\n# Important note\n`-m no` is a quick fix if the server starts returning \u003ca href=\"http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error\"\u003e429\u003c/a\u003es. Some handles may then be false positives if they are reserved keywords.\n# Possibilities\nSearch for \"TheReal\" + top 100 most-followed Twitter handles:\n```\ncurl -vs \"http://twittercounter.com/pages/100\" 2\u003e\u00261 \\\n    | grep \"analytics.track('Viewed Profile'\" \\\n    | awk -F 'href' '{print $2}'\\\n    | awk -F '\"' '{print $2}' \\\n    | cut -c 2- \\\n    | uniq \\\n    | awk '{ print \"TheReal\" $0 }' \\\n    | python nitwit.py -d - \u003enitwits.txt\n```\n5x (mutate one letter of each of the top 100 most-followed Twitter handles at random and check availability):\n```\ncurl -vs \"http://twittercounter.com/pages/100\" 2\u003e\u00261 \\\n    | grep \"analytics.track('Viewed Profile'\" \\\n    | awk -F 'href' '{print $2}'\\\n    | awk -F '\"' '{print $2}' \\\n    | cut -c 2- \\\n    | uniq \\\n    | python -c \\\n'import random\nimport sys\nimport string\nimport copy\nfor word in sys.stdin:\n    word = list(word.strip());\n    for i in xrange(5):\n        new_word = copy.deepcopy(word)\n        new_word[random.randint(0, len(new_word) - 1)] = \\\n            random.choice(string.ascii_lowercase)\n        print \"\".join(new_word)' \\\n    | python nitwit.py -d - \u003enitwits.txt\n```\nSearch for all three-letter Twitter handles in random order:\n```\nfor i in {a..z}{a..z}{a..z} \ndo\n    echo $i\ndone \\\n    | perl -MList::Util=shuffle -e 'print shuffle(\u003cSTDIN\u003e);' \\\n    | python nitwit.py -d - \u003enitwits.txt\n```\nOutput only handles from `/usr/share/dict/words` that can be registered on both Twitter and Github:\n```\ncomm \u003c(python nitwit.py -m no -g -s) \u003c(python nitwit.py -m no -s)\n```\nCheck the Twitter handle `i` every five seconds and beep insistently when it's available:\n```\nwhile true\ndo\n    if [[ $(echo i | python nitwit.py -m no -d - -s) == \"i\" ]]; then\n        while true\n        do\n            tput bel\n            sleep 1\n        done\n    fi\n    sleep 5\ndone\n```\n# Usage details\nDisplay help:\n```\npython nitwit.py -h\n```\nSource Twitter search with `/usr/share/dict/words`, writing live stats to `stderr` and available handles to `nitwits.txt`:\n```\npython nitwit.py \u003enitwits.txt\n```\nSearch Github, not Twitter:\n```\npython nitwit.py -g \u003enitwits.txt\n```\nIf \"\u003ctab\u003em\" follows a handle written to stdout, then while the handle has no account associated with it, Twitter/Github is currently blocking its registration. This could mean the handle will be available soon; it could also mean the handle is a reserved word.\n\nSearch only for handles that have no associated accounts:\n```\npython nitwit.py -m yes \u003enitwits.txt\n```\nSearch only for whether handles can be registered:\n```\npython nitwit.py -m no \u003enitwits.txt\n```\nSearch for words in `mydict.txt`, a text file with a single word per line, in random order:\n```\ncat mydict.txt \\\n    | perl -MList::Util=shuffle -e 'print shuffle(\u003cSTDIN\u003e);' \\\n    | python nitwit.py -g -d - \u003enitwits.txt\n```\nUse proxy `P` (useful in conjunction with Tor if getting \u003ca href=\"http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error\"\u003e429\u003c/a\u003e'd):\n```\npython nitwit.py -p P \u003enitwits.txt\n```\nAbove, `P` is, for example, `http://10.10.1.10:1080`.\n\nWait for 1.25 seconds between successive server requests:\n```\npython nitwit.py -w 1.25 \u003enitwits.txt\n```\nSuppress status messages written to stderr:\n```\npython nitwit.py -s \u003enitwits.txt\n```\n# License\nMIT. See `LICENSE` for details.\n\n# Disclaimer\nThe author is not responsible for misuse or abuse of this product by other users.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnellore%2Fnitwit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnellore%2Fnitwit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnellore%2Fnitwit/lists"}