{ "info": { "author": "ClericPy", "author_email": "clericpy@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# [onwebchange](https://github.com/ClericPy/onwebchange) [![PyPI version](https://badge.fury.io/py/onwebchange.svg)](https://badge.fury.io/py/onwebchange)\n\n- [x] Default Console Web UI.\n- [x] RSS support.\n- [x] Release on pypi.\n- [x] Add **tag** filter, to distinguish all the RSS sites. Add multiple tags support.\n- [x] Add .pyz usage for fast deploying.\n- [x] Support one-key sub RSS\n\n### Install\n\n```bash\n> pip3 install onwebchange -U\n\n> python3 -m onwebchange -f wc.config -i 300 --host=127.0.0.1 -p 8080 --username=admin --password=admin\n```\n\n**or shiv as one file \"onwebchange.pyz\", for fast deploying**\n\n```bash\n> pip3 install shiv -U\n> shiv -o onwebchange.pyz -e onwebchange.__main__:main --compressed onwebchange\n> python3.7 onwebchange.pyz --username=admin --password=admin\n```\n\n### Requirements\n\n> torequests\n> click\n> bottle\n> objectpath\n> beautifulsoup4\n\n#### Quick start\n\n1. install\n\n> python3 -m onwebchange\n\n2. add shell command to systemd / supervisor.\n 1. Run with username & password.\n\n> python3 -m onwebchange -f wc.config -i 300 --host=127.0.0.1 -p 8080 --username=admin --password=admin\n\n3. Add Tasks\n 1. Press [AddTask] button\n\n 2. Fill the blank:\n\n name: \"pypi trending projects no1\"\n\n request_args: \"https://pypi.org/\"\n\n parser_name: \"css\"\n\n operation: \"#content > div:nth-child(4) > div > div:nth-child(1) > ul > li:nth-child(1) > a > h3 > span.package-snippet__name\"\n\n value: \"$text\"\n\n check_interval: 300\n\n max_change: 10\n\n 3. Press [Update Task] button\n\n 4. Subscribe RSS from chrome RSS reader extension\n\n### Default Web UI\n\n![demo1](demo1.png)\n\n![demo2](demo2.png)\n\n![demo2](demo3.png)\n\n### Example\n\n> # run as main package with command\n>\n> python3 -m onwebchange -f wc.config -i 300 -a\n\nor\n\n```python\nfrom onwebchange.core import WebHandler\nfrom onwebchange.webui import app\n\nif __name__ == \"__main__\":\n wh = WebHandler(\n app,\n file_path=None,\n loop_interval=300,\n auto_open_browser=True,\n change_callback=lambda task: print(task.name),\n app_kwargs={'port': 9988})\n # python3 -m onwebchange -f wc.config -i 300 -a\n wh.run()\n\n```\n\n\n\n### Parser examples\n\n1. regex\n\n 1. parser_name: re\n 2. operation: class=\"(.*?)\"\n 3. value: $1\n\n2. css selector for attribute\n\n 1. parser_name: css\n 2. operation: #J_all_item_910789\n 3. value: @class\n 1. **value also can be:**\n 1. $string\n 1. list of outer HTML\n 2. $text\n 1. list of node.text\n 3. $get_text\n 1. list of node.get_text()\n\n3. json (ObjectPath).\n\n 1. > https://httpbin.org/get\n >\n > \u200b\twith json-handle chrome extention.\n\n 2. parser_name: json\n\n 3. operation: $.headers[\"Accept-Encoding\"]\n\n 4. value: $text\n\n4. python\n\n 1. parser_name: python\n\n 2. operation:\n\n 1. ```python\n def parse(resp):\n return resp.text[:10]\n ```\n\n 3. value as null\n\n### New Task template\n\n```python\n \"name\": \"task name0\",\n \"request_args\": \"https://pypi.org\", # could be url, curl string, request args dict.\n \"parser_name\": \"css\", # could be re/css/json/python\n \"operation\": \".lede-paragraph\",\n \"value\": \"$text\",\n \"check_interval\": 300,\n \"max_change\": 2,\n \"sorting_list\": true,\n \"origin_url\": \"https://pypi.org\",\n \"encoding\": null\n{\n \"name\": \"task name1\",\n \"request_args\": \"https://pypi.org\",\n \"parser_name\": \"re\",\n \"operation\": \"class=\\\"(lede-paragraph)\\\"\",\n \"value\": \"$1\",\n \"check_interval\": 300,\n \"max_change\": 2,\n \"sorting_list\": true,\n \"origin_url\": \"\",\n \"encoding\": null\n}\n{\n \"name\": \"task name2\",\n \"request_args\": \"http://httpbin.org/get\",\n \"parser_name\": \"json\",\n \"operation\": \"$.url\",\n \"value\": \"\",\n \"check_interval\": 300,\n \"sorting_list\": true,\n \"origin_url\": \"\",\n \"encoding\": null\n}\n```\n\n### More docs\n```python\n\nWatchdog task.\n :param name: Task name.\n :type name: str\n :param request_args: arg for sending a request, could be url/curl_string/dict.\n :type request_args: dict / str\n :param parser_name: re, css, json, python, defaults to None, use the resp.text.\n :type parser_name: str, optional\n :param operation: parse operation for the parser_name, defaults to None\n :type operation: str, optional\n :param value: value operation for the parser, defaults to None\n :type value: str, optional\n :param sorting_list: whether sorting the list of result from `css or other parsers`, defaults to True\n :type sorting_list: bool, optional\n :param check_interval: check_interval, defaults to 60 seconds\n :type check_interval: int, optional\n :param max_change: save result in check_result_list, save the latest 2 change, defaults to 2\n :type max_change: list, optional\n :param check_result_list: latest `max_change` checking result, usually use md5 to shorten it, defaults to None\n :type check_result_list: list, optional\n :param origin_url: the url to see the changement, defaults to request_args['url']\n :type origin_url: str, optional\n\n request_args examples:\n url:\n http://pypi.org\n args:\n {'url': 'http://pypi.org', 'method': 'get'}\n curl:\n curl 'https://pypi.org/' -H 'authority: pypi.org' -H 'cache-control: max-age=0' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' -H 'sec-fetch-mode: navigate' -H 'sec-fetch-user: ?1' -H 'dnt: 1' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' -H 'sec-fetch-site: none' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: zh-CN,zh;q=0.9' -H 'cookie: user_id__insecure=; session_id=' --compressed\n\n parser examples:\n re:\n operation = '.*?abc'\n value = '$0' (or '$1', `$` means the group index for regex result)\n css:\n operation = \".className\"\n value = '$string'\n $string: return [node] as outer html\n $text: return [node.text]\n $get_text: return [node.get_text()]\n @attr: [get attribute from node]\n json:\n view more: https://github.com/adriank/ObjectPath\n # input response JSON string: {\"a\": 1}\n operation = \"$.a\"\n value = None\n\n python:\n ! function name should always be `parse` if value is None,\n or use `value` as the function name.\n `operation can be a function object.`\n operation = lambda resp: resp.text\n operation = r'''\n def parse(resp):\n return md5(resp.text)\n '''\n value = None\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ClericPy/onwebchange", "keywords": "watchdog web change.", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "onwebchange", "package_url": "https://pypi.org/project/onwebchange/", "platform": "any", "project_url": "https://pypi.org/project/onwebchange/", "project_urls": { "Homepage": "https://github.com/ClericPy/onwebchange" }, "release_url": "https://pypi.org/project/onwebchange/0.3.4/", "requires_dist": [ "torequests", "click", "bottle", "objectpath", "beautifulsoup4" ], "requires_python": "", "summary": "watchdog toolkit for check web change.", "version": "0.3.4", "yanked": false, "yanked_reason": null }, "last_serial": 6582781, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0ee6b3e33e4fd7a6ac9fd3754e4ff953", "sha256": "bc85015316f8b2190c4a8c612c3be3e1296e6dd9af54a5b38e0deb369c5ada6d" }, "downloads": -1, "filename": "onwebchange-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ee6b3e33e4fd7a6ac9fd3754e4ff953", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9922, "upload_time": "2019-08-27T17:47:05", "upload_time_iso_8601": "2019-08-27T17:47:05.035105Z", "url": "https://files.pythonhosted.org/packages/56/bb/23a84e8c7f9b3a088fa394d2a8fd6770bddd8d5949734573214678422cda/onwebchange-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "686a2e46fed67d6fbaf1cb7cec892dc5", "sha256": "270eab79009bd3099733da19ae278e2426a50ad88496a163c020327cf0339caf" }, "downloads": -1, "filename": "onwebchange-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "686a2e46fed67d6fbaf1cb7cec892dc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9924, "upload_time": "2019-08-27T17:52:51", "upload_time_iso_8601": "2019-08-27T17:52:51.914619Z", "url": "https://files.pythonhosted.org/packages/95/7d/f3e8d0da2180632a57a7cec2a110a8784a7465ae416336263498d9ff7305/onwebchange-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "3b66a96e341c13d667b187123b174ea9", "sha256": "87a1601f932894fe3d902d4c1cd4a43b1bd4573ad0bb9f0d6e9d0fee1ec5386c" }, "downloads": -1, "filename": "onwebchange-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3b66a96e341c13d667b187123b174ea9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9925, "upload_time": "2019-08-27T18:00:06", "upload_time_iso_8601": "2019-08-27T18:00:06.091944Z", "url": "https://files.pythonhosted.org/packages/47/2a/10c15cee8a50631317e354ef861ac86b537019b5ec91a543228ac59bb07e/onwebchange-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "8c6c258cd6838bdd72caceb8da3e2298", "sha256": "8d2b76f14b5b4a1dde21ada42d640c38da860af9c108656e5472b381ac360c1d" }, "downloads": -1, "filename": "onwebchange-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8c6c258cd6838bdd72caceb8da3e2298", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9925, "upload_time": "2019-08-27T18:02:06", "upload_time_iso_8601": "2019-08-27T18:02:06.000427Z", "url": "https://files.pythonhosted.org/packages/69/c7/6308129d4942e3334f973db6e69e6c582f96031fe2c463612dbb6abc3106/onwebchange-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "41da8a4f8b8fe575ed6daf060e90dfd1", "sha256": "f3a195550fad76363e0e21d03451d7021d61f0ac33403f40b660f6d08af6589d" }, "downloads": -1, "filename": "onwebchange-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "41da8a4f8b8fe575ed6daf060e90dfd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11925, "upload_time": "2019-08-27T18:07:50", "upload_time_iso_8601": "2019-08-27T18:07:50.204712Z", "url": "https://files.pythonhosted.org/packages/48/c9/b939d3a507b1fb714b8e9b0c70a32b995c5f18e8d5605d116a07c51f4a14/onwebchange-0.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "ac6d1cdd199bba77df31936c809048aa", "sha256": "07eef18b858439a1affaf15559e08dfe19297c06857ff7f19cbcde4130eb015d" }, "downloads": -1, "filename": "onwebchange-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "ac6d1cdd199bba77df31936c809048aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13294, "upload_time": "2019-08-27T18:23:21", "upload_time_iso_8601": "2019-08-27T18:23:21.412623Z", "url": "https://files.pythonhosted.org/packages/e9/93/9c2b19b3fed51669f88971f17cdb98ecf023c1d0bb4cb4e4dc61b9ba3c2a/onwebchange-0.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "12007a897fe60003429a874876f6e591", "sha256": "0ac9a454408121914c10613872532a77cd4ee9b6b38b48ee9c000128b495fc8a" }, "downloads": -1, "filename": "onwebchange-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "12007a897fe60003429a874876f6e591", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13315, "upload_time": "2019-08-28T02:50:25", "upload_time_iso_8601": "2019-08-28T02:50:25.834833Z", "url": "https://files.pythonhosted.org/packages/2d/c9/c184f7ea06d76d453c90b1f380047bfd0dc8c42b1a54a2a7ff50d09287e2/onwebchange-0.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "6978ca4aabadc0590601eeb73f3b7783", "sha256": "0dfa78ba39c9181fd6e784f63d45c0aad1d9f86532bd2e902b71a1739ddbef6f" }, "downloads": -1, "filename": "onwebchange-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "6978ca4aabadc0590601eeb73f3b7783", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13310, "upload_time": "2019-08-28T02:53:01", "upload_time_iso_8601": "2019-08-28T02:53:01.511387Z", "url": "https://files.pythonhosted.org/packages/d8/02/c46d8b0928bc5bee6dd11e6d6e966a5774f5e54c3082acf154d4a53ecc34/onwebchange-0.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "c2a0f042deac6000ab28dd5cbafaf835", "sha256": "36e63f3ebd24a6c7d4438e2d170ec57e0b2be88be4c2347979066f285c528ce2" }, "downloads": -1, "filename": "onwebchange-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "c2a0f042deac6000ab28dd5cbafaf835", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13539, "upload_time": "2019-09-01T04:01:06", "upload_time_iso_8601": "2019-09-01T04:01:06.193936Z", "url": "https://files.pythonhosted.org/packages/10/ee/3945bfce472e8ff470f52a4af0fae8a9cde7b42fa99bcd1367432551c911/onwebchange-0.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "628f7a93bd9a0a200ca269f142fe555b", "sha256": "2782a6cf984310d44198b69ffbc480dc3f1e7939515205f9d952e5e49e6eda40" }, "downloads": -1, "filename": "onwebchange-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "628f7a93bd9a0a200ca269f142fe555b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13643, "upload_time": "2019-09-06T08:35:40", "upload_time_iso_8601": "2019-09-06T08:35:40.526791Z", "url": "https://files.pythonhosted.org/packages/8a/65/c0bb3c9b5f5c2a0e865b299114cc52357fa81e18d6d3e427f58308600945/onwebchange-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ea2a963a97b654d971749ad28b62dea4", "sha256": "0d4cb43eb1367c141ed5f51b4193a954f3bbab9c86f3ccd2be5f7e916abbadca" }, "downloads": -1, "filename": "onwebchange-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ea2a963a97b654d971749ad28b62dea4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14448, "upload_time": "2019-09-06T18:01:50", "upload_time_iso_8601": "2019-09-06T18:01:50.033019Z", "url": "https://files.pythonhosted.org/packages/4d/18/cdf8b675722f1e71360699eba830830d722aac08c291d0cc9dda02280221/onwebchange-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ba549ace97b3c2da36320c544410c0ce", "sha256": "701b5cfe45b5d029642d580ad884ccbdca0d1b5a46cd8e2af9e6ac6c54eab083" }, "downloads": -1, "filename": "onwebchange-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ba549ace97b3c2da36320c544410c0ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14876, "upload_time": "2019-09-06T18:58:59", "upload_time_iso_8601": "2019-09-06T18:58:59.053055Z", "url": "https://files.pythonhosted.org/packages/be/a3/f84fd2e475aa44af5beec10acc0630d47ca40d732112794768f156ac39ef/onwebchange-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b0711edc109eda623548a8cd17baff37", "sha256": "5b094d8ab5fc52747ae77a27f4d5ed77bc05267e3e84f18163ad6ffdab674ae6" }, "downloads": -1, "filename": "onwebchange-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b0711edc109eda623548a8cd17baff37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22425, "upload_time": "2019-09-08T14:09:43", "upload_time_iso_8601": "2019-09-08T14:09:43.223409Z", "url": "https://files.pythonhosted.org/packages/fa/50/f23d658241ab8f41d0a7d74f722ba5b6992e9bfdbfcf5a5d93e3fa3ef1f2/onwebchange-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "9654dab3292be359130b8ca123a36905", "sha256": "cf4323688f419180992c3438b078320ec7376af493be1e0ed5dfc4f9b6898258" }, "downloads": -1, "filename": "onwebchange-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9654dab3292be359130b8ca123a36905", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22409, "upload_time": "2019-09-08T19:05:54", "upload_time_iso_8601": "2019-09-08T19:05:54.735258Z", "url": "https://files.pythonhosted.org/packages/d6/62/aa46c997acec1a40457d45b491e24c0ae0f4aa0028c2e49bf24361654847/onwebchange-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "41e582687a6c387a4a0fd461b36b13ac", "sha256": "bf2c819f801a1a7082085d506f568a2f8d1420392dd635516d3662f4d49951a9" }, "downloads": -1, "filename": "onwebchange-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "41e582687a6c387a4a0fd461b36b13ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23234, "upload_time": "2019-09-12T08:24:15", "upload_time_iso_8601": "2019-09-12T08:24:15.162783Z", "url": "https://files.pythonhosted.org/packages/79/3a/d65bdfdc7272e95cab8fe2d2b90d7b372d4e0492c3dfbc5bf0717dd84a36/onwebchange-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "fb0a2603e1afd1e72c9968c6c4d2472d", "sha256": "ee2222a22a140f10001beeff8eaf3d9fc23628508fe6ed5819e2bd7a3c867075" }, "downloads": -1, "filename": "onwebchange-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "fb0a2603e1afd1e72c9968c6c4d2472d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23295, "upload_time": "2019-09-12T09:20:04", "upload_time_iso_8601": "2019-09-12T09:20:04.484332Z", "url": "https://files.pythonhosted.org/packages/e7/2e/76e1f4428f9c4b8b29a480f6554b96aa2a8ffc59bab75441442dce7be664/onwebchange-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "5cb9c899f4ef36e5f150851d8a000b37", "sha256": "9fdde3a2beeba6562596d64d2933b456487a476007db6e631dd4e4fa2ea42a5e" }, "downloads": -1, "filename": "onwebchange-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5cb9c899f4ef36e5f150851d8a000b37", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24275, "upload_time": "2019-09-12T15:26:11", "upload_time_iso_8601": "2019-09-12T15:26:11.022419Z", "url": "https://files.pythonhosted.org/packages/54/b0/d6933605ed08cd1a1e8adef192e79aa5d7eea436a2becc0edfda1dd8e31a/onwebchange-0.1.8-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "f0816b82e77fcf4ebbf1e5a8912a2c3b", "sha256": "88ada079561c0772ad661d8670e076d575491f479610c22f8157b95f7373dc45" }, "downloads": -1, "filename": "onwebchange-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "f0816b82e77fcf4ebbf1e5a8912a2c3b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24802, "upload_time": "2019-09-26T14:41:30", "upload_time_iso_8601": "2019-09-26T14:41:30.131417Z", "url": "https://files.pythonhosted.org/packages/d2/27/60cf2831763795ba4b967692d1536ce1b6b4f086c959ba50f3a89126c3a6/onwebchange-0.1.9-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "12a78a3239fa6d7d5563415d42fac37c", "sha256": "f37038e8d767876d51db19370f19f22f244e88cfd24f4b1ab665777511405a86" }, "downloads": -1, "filename": "onwebchange-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "12a78a3239fa6d7d5563415d42fac37c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24930, "upload_time": "2019-09-29T04:26:29", "upload_time_iso_8601": "2019-09-29T04:26:29.934575Z", "url": "https://files.pythonhosted.org/packages/cd/7c/8b2d28698e51865917bf0430ed5af1e54b4b2663b706d06e93b087fc5a9a/onwebchange-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9fc7dfa387f2d18b923bef79070b3220", "sha256": "73a856212d6391b0970bf7a7105c1b9fb5a7e4471916f695d7ffb8f363b89400" }, "downloads": -1, "filename": "onwebchange-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9fc7dfa387f2d18b923bef79070b3220", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25339, "upload_time": "2019-10-26T13:22:22", "upload_time_iso_8601": "2019-10-26T13:22:22.144801Z", "url": "https://files.pythonhosted.org/packages/17/de/79785aa8956707e9841d51244ec53084139ba7b062351255084fe7bef168/onwebchange-0.2.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3f37561f95eebcc66cc3919fef997406", "sha256": "0367e541e2b43d639326cca546c24ee33b3b7648d70b89a396925e6d27d56cde" }, "downloads": -1, "filename": "onwebchange-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f37561f95eebcc66cc3919fef997406", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25333, "upload_time": "2019-10-26T13:42:36", "upload_time_iso_8601": "2019-10-26T13:42:36.756671Z", "url": "https://files.pythonhosted.org/packages/e3/7e/9fc0f31502c8dca15ee0df148fbb0af941f987c4eaecff88185b78349597/onwebchange-0.2.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "0ac8be69e1017f19e6cbe70d711d7f16", "sha256": "ea9171cb0bc0896d9ad923ba89d99843213bfaa69bfee7cee5ac621e53d3b9c9" }, "downloads": -1, "filename": "onwebchange-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "0ac8be69e1017f19e6cbe70d711d7f16", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25711, "upload_time": "2019-10-28T10:48:29", "upload_time_iso_8601": "2019-10-28T10:48:29.029453Z", "url": "https://files.pythonhosted.org/packages/83/d5/8786f85c015bd350ff8652196accef079a2de527bf87c8be30fbed9c7d41/onwebchange-0.2.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "123e78f205cf12f677419b76b47466b7", "sha256": "6364dd441b5e25c294d0ba10ccb1b1b279987920bd7f8cf720b4aaed35bb56fc" }, "downloads": -1, "filename": "onwebchange-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "123e78f205cf12f677419b76b47466b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26051, "upload_time": "2019-11-14T13:00:05", "upload_time_iso_8601": "2019-11-14T13:00:05.521738Z", "url": "https://files.pythonhosted.org/packages/0c/1f/03d7f6e8e15a68a9f4c11215afc50dacaeda7ba463b74b54652b320de945/onwebchange-0.2.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "668994522d1aac468a84c3b4f9f57e6c", "sha256": "62a2612ba3a6946f21cf189179a21894a1b289a854c7fd60cdf6dfdfe896b0b4" }, "downloads": -1, "filename": "onwebchange-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "668994522d1aac468a84c3b4f9f57e6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26137, "upload_time": "2019-12-12T08:43:01", "upload_time_iso_8601": "2019-12-12T08:43:01.137534Z", "url": "https://files.pythonhosted.org/packages/8a/23/b9763999064d4820c6b9542f927d6d6e94f716086fd20bf37209209cd034/onwebchange-0.2.5-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "bc96a754e323a997c6288d22fb040577", "sha256": "dd628c4130539075bd219aaba9bb7b577982a8cf270122f4601e5843f401689a" }, "downloads": -1, "filename": "onwebchange-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "bc96a754e323a997c6288d22fb040577", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26294, "upload_time": "2019-12-26T16:06:54", "upload_time_iso_8601": "2019-12-26T16:06:54.396765Z", "url": "https://files.pythonhosted.org/packages/df/a9/1f62cd57078c24e2632da0d943319c310821973655cc87edb5163389f32d/onwebchange-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "5645627b8f6e989e5183c9ef0c155995", "sha256": "c3629a749a40d24c138efc3acfdd10f2c2f1d49666af38160bb4ca83cb6e4ae1" }, "downloads": -1, "filename": "onwebchange-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "5645627b8f6e989e5183c9ef0c155995", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26645, "upload_time": "2020-01-02T16:09:12", "upload_time_iso_8601": "2020-01-02T16:09:12.017339Z", "url": "https://files.pythonhosted.org/packages/15/4f/b3d8594dbcbbe114b2b290bc496ef1c4d6c6faefc790d3c667e16abffcd3/onwebchange-0.2.7-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "7e9a7e3f65ba75a9e037fc3e70e88007", "sha256": "47c4847acbff888760effb2d3b3e62cf35a8e1c883ae312ff9e3a5cf9bc01483" }, "downloads": -1, "filename": "onwebchange-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "7e9a7e3f65ba75a9e037fc3e70e88007", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26756, "upload_time": "2020-01-31T10:38:32", "upload_time_iso_8601": "2020-01-31T10:38:32.590332Z", "url": "https://files.pythonhosted.org/packages/e2/ef/6ccb582d3c562bebc1c042d166d2379159b534ae9804d5014d876b1360f6/onwebchange-0.2.8-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "39e755141558b2d3b33039f7473ecf02", "sha256": "15b9f4601d7bb5b187fdbdbe957b939d0d4c7cf37562185489d25bede3f33e3f" }, "downloads": -1, "filename": "onwebchange-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "39e755141558b2d3b33039f7473ecf02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26801, "upload_time": "2020-01-31T12:00:20", "upload_time_iso_8601": "2020-01-31T12:00:20.692335Z", "url": "https://files.pythonhosted.org/packages/16/2d/9bd8b4701703ee2f9e44d0df24fdd626ab7cc4f279f9588799ddaf137497/onwebchange-0.2.9-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ad4f9ced7e453aab42da82a5b73ff50e", "sha256": "744512177c72c866b526570a39c74905bc83511d106e0afcffcd0d78874c4330" }, "downloads": -1, "filename": "onwebchange-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ad4f9ced7e453aab42da82a5b73ff50e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27656, "upload_time": "2020-02-01T19:13:05", "upload_time_iso_8601": "2020-02-01T19:13:05.553772Z", "url": "https://files.pythonhosted.org/packages/8f/97/1d3cd6b7c5e67291e3225bf83c9bee481dc3ddd510a5cf20b62196264d2f/onwebchange-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3653a24cec3102b5671efa1ac52eb4be", "sha256": "acffa17dfac2d6ca2a919dba38eb9c781ac4463be6310f54b79d0315e9f593b2" }, "downloads": -1, "filename": "onwebchange-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3653a24cec3102b5671efa1ac52eb4be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27725, "upload_time": "2020-02-04T12:27:22", "upload_time_iso_8601": "2020-02-04T12:27:22.242381Z", "url": "https://files.pythonhosted.org/packages/cd/1c/a987ddcaacb5d47e1c2765fd1bcb23124c47a07bd8b665abfa2b81d9d9df/onwebchange-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "5a98aab1b0ae3b5c6a116df0b5cb10ed", "sha256": "5cad7866b3715c8cf2ff54af6fa5a0d123b12c484bf7724f8bee2f62624a24ab" }, "downloads": -1, "filename": "onwebchange-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5a98aab1b0ae3b5c6a116df0b5cb10ed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27846, "upload_time": "2020-02-04T12:45:12", "upload_time_iso_8601": "2020-02-04T12:45:12.578729Z", "url": "https://files.pythonhosted.org/packages/4f/36/0bda120af353feee975f3adbd3b994807985aede74a30136c76e500bae11/onwebchange-0.3.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "18cd8f57e05de596a62a872d0d6b04dc", "sha256": "c3aa8ea36f9e2c982f208cc416ac343f8d45c44ce0b1014e540f6398d4563cc7" }, "downloads": -1, "filename": "onwebchange-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "18cd8f57e05de596a62a872d0d6b04dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28213, "upload_time": "2020-02-06T15:34:12", "upload_time_iso_8601": "2020-02-06T15:34:12.937089Z", "url": "https://files.pythonhosted.org/packages/c5/a1/0cbf135b262e6613129dd598ca04d3098ba61def78d0e68c2c7f0eb7cb8c/onwebchange-0.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18cd8f57e05de596a62a872d0d6b04dc", "sha256": "c3aa8ea36f9e2c982f208cc416ac343f8d45c44ce0b1014e540f6398d4563cc7" }, "downloads": -1, "filename": "onwebchange-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "18cd8f57e05de596a62a872d0d6b04dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28213, "upload_time": "2020-02-06T15:34:12", "upload_time_iso_8601": "2020-02-06T15:34:12.937089Z", "url": "https://files.pythonhosted.org/packages/c5/a1/0cbf135b262e6613129dd598ca04d3098ba61def78d0e68c2c7f0eb7cb8c/onwebchange-0.3.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }