{"id":23588114,"url":"https://github.com/sonirico/wpoke","last_synced_at":"2025-06-28T09:36:55.876Z","repository":{"id":92459071,"uuid":"176582497","full_name":"sonirico/wpoke","owner":"sonirico","description":"python library tool to gather wordpress information","archived":false,"fork":false,"pushed_at":"2020-09-25T08:10:09.000Z","size":158,"stargazers_count":4,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-08T21:09:55.868Z","etag":null,"topics":["information-gathering","library","poetry","python3","scraping","security-tools","tox","wordpress"],"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/sonirico.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","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":"2019-03-19T19:15:47.000Z","updated_at":"2022-11-22T13:26:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"be95e2b7-4194-4cf5-9cb5-35de6b73e9e4","html_url":"https://github.com/sonirico/wpoke","commit_stats":{"total_commits":75,"total_committers":3,"mean_commits":25.0,"dds":"0.21333333333333337","last_synced_commit":"be193a41159dabf912d793eb5a6ebf2f0e9440bb"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/sonirico/wpoke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonirico%2Fwpoke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonirico%2Fwpoke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonirico%2Fwpoke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonirico%2Fwpoke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sonirico","download_url":"https://codeload.github.com/sonirico/wpoke/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonirico%2Fwpoke/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262407090,"owners_count":23306315,"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":["information-gathering","library","poetry","python3","scraping","security-tools","tox","wordpress"],"created_at":"2024-12-27T05:12:27.786Z","updated_at":"2025-06-28T09:36:55.838Z","avatar_url":"https://github.com/sonirico.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wpoke [![Build Status](https://img.shields.io/travis/sonirico/wpoke.svg?branch=master\u0026style=flat-square)](https://travis-ci.org/sonirico/wpoke) [![PyPI versions](https://img.shields.io/badge/python-3.7%20|%203.8-blue.svg?style=flat-square)](https://pypi.org/project/wpoke/) [![PyPi versions](https://img.shields.io/pypi/v/wpoke?style=flat-square)](https://pypi.org/project/wpoke/)\n\n## What's this\nYou much probably have landed off here while seeking some python scripts online\nto gather some information from WordPress sites without too much effort. I \nregret to say that this library, while I actively seek to make it usable by \nother applications, it may not meet your expectations.\nOn one side, it's being rolled down employing `asyncio`, low-level parsers\nsuch as `lxml` and of course python\u003e=3.7. (We only python3 in this house). \nEither way, not a too much exotic stack but modern enough to require you to \nprepare more complex environments in order to run it. Of course I know about \nother tools that ship with all the ecosystem needed to extract this \ninformation, such as `scrapy`, but I wanted to get my hands dirty with new \ntech... Besides, who does not want to reinvent the wheel from time to time?\n\nOn the other hand, it is still under heavy development and there is not much\ninfo you can scrape using this tool. Hence, you are very welcome to \ncontribute! :)\n\n## Featuring\n\n- **Theme metadata information**\n    - Theme name, version, description and URL\n    - Child themes (template)\n    - Included translations\n    - Screenshot (featured image)\n    - Status\n    - Tags\n    - License and license URL\n    - Version\n    - Description and text domain\n    - Author name and URL\n\n## Installing\n~~I'd rather have a deterministic dependency manager. That's why\nthis projects employs poetry~~. Ejem well, I'm pretty tired of running into\nweird issues on different environments due to these exotic dep managers,\nshould I will stick back to pip for now.\n\n##### Install with setup.py\n\n```shell\ngit clone git@github.com:sonirico/wpoke.git\ncd wpoke/\npython setup.py install\n```\n\n##### Install from pypi\n\n```shell\npip install -U pip  # Make sure pip is updated\npip install wpoke\n```\n\n## Run as command line tool\n\n```shell\npip install wpoke\nwpoke-cli https://wp-target-site.com/\n```\n\n## Run on docker\n\n```shell\ndocker run sonirico/wpoke:latest https://wp-target-site.com\n```\n\n\n## Configuration\n\nAs of now, configurable parameters are:\n\n- max number of redirects: `max-redirects`\n- global timeout: `timeout`\n- user-agent: `user-agent`\n\n## Examples\n\n```shell\nwpoke-cli --max-redirects=5 --timeout 5 --user-agent \"Mozilla/5.0\" https://my-wp-target.com\n```\n\n## Roll down your own checks (aka fingers)\n\n```python\nimport requests\nfrom wpoke.hand import Hand\n\nhand = Hand()\n\n@hand.add_finger\ndef custom_version_extractor(url):\n    response = requests.get(url)\n    data = my_response_parser(response.text())\n    return data\n\nif __name__ == \"__main__\":\n    hand.poke()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonirico%2Fwpoke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsonirico%2Fwpoke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonirico%2Fwpoke/lists"}