{"id":13813545,"url":"https://github.com/pv8/noipy","last_synced_at":"2025-12-14T05:25:05.242Z","repository":{"id":646898,"uuid":"8957202","full_name":"pv8/noipy","owner":"pv8","description":"Command line tool to update DDNS: No-IP, DuckDNS and DynDNS hosts IP","archived":false,"fork":false,"pushed_at":"2024-10-28T08:29:15.000Z","size":289,"stargazers_count":72,"open_issues_count":17,"forks_count":14,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-07T03:09:17.574Z","etag":null,"topics":["cli","command-line","ddns","ddns-client","dyndns","noip","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pv8.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.md","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":"2013-03-22T17:30:34.000Z","updated_at":"2024-10-30T00:17:01.000Z","dependencies_parsed_at":"2024-08-04T04:04:16.912Z","dependency_job_id":null,"html_url":"https://github.com/pv8/noipy","commit_stats":null,"previous_names":["povieira/noipy"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pv8%2Fnoipy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pv8%2Fnoipy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pv8%2Fnoipy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pv8%2Fnoipy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pv8","download_url":"https://codeload.github.com/pv8/noipy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225319265,"owners_count":17455736,"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":["cli","command-line","ddns","ddns-client","dyndns","noip","python","python3"],"created_at":"2024-08-04T04:01:21.001Z","updated_at":"2025-12-14T05:25:00.173Z","avatar_url":"https://github.com/pv8.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"noipy: DDNS update tool\n=======================\n\n\n.. image:: https://img.shields.io/pypi/v/noipy.svg\n        :target: https://pypi.python.org/pypi/noipy/\n\n.. image:: https://img.shields.io/pypi/pyversions/noipy.svg\n        :target: https://pypi.python.org/pypi/noipy\n\n.. image:: https://snapcraft.io/noipy/badge.svg\n        :target: https://snapcraft.io/noipy\n        :alt: Snap Status\n\n.. image:: https://snapcraft.io/noipy/trending.svg?name=0\n        :target: https://snapcraft.io/noipy\n        :alt: Snap Trending\n\n.. image:: https://api.travis-ci.org/pv8/noipy.svg?branch=master\n        :target: https://travis-ci.org/pv8/noipy\n\n.. image:: https://codecov.io/gh/pv8/noipy/branch/master/graph/badge.svg\n        :target: https://codecov.io/gh/pv8/noipy\n\n.. image:: https://landscape.io/github/pv8/noipy/master/landscape.svg\n        :target: https://landscape.io/github/pv8/noipy/master\n        :alt: Code Health\n\n.. image:: https://api.codeclimate.com/v1/badges/1f700be0ea796c8a49e9/maintainability\n        :target: https://codeclimate.com/github/pv8/noipy/maintainability\n        :alt: Maintainability\n\n.. image:: https://zenodo.org/badge/doi/10.5281/zenodo.29017.svg?style=flat-square\n        :target: http://dx.doi.org/10.5281/zenodo.29017\n\nCommand line tool to update DDNS hosts IP address via update API. Initially\nthe tool was designed to update IP address only on No-IP DDNS provider. But\nnow **noipy** has support for the following DDNS providers:\n\n- `No-IP \u003chttp://www.noip.com/integrate/request\u003e`_\n- `DuckDNS \u003chttps://www.duckdns.org/install.jsp\u003e`_\n- `DynDNS \u003chttp://dyn.com/support/developers/api/perform-update/\u003e`_\n\n\nInstallation\n------------\n\nInstall with `pip \u003chttps://pip.pypa.io/en/stable/\u003e`_:\n\n.. code-block:: bash\n\n    $ pip install noipy\n\nOr with `Snappy \u003chttps://en.wikipedia.org/wiki/Snappy_(package_manager)\u003e`_ on `supported distros \u003chttps://docs.snapcraft.io/core/install#support-overview\u003e`_:\n\n.. code-block:: bash\n\n    $ sudo snap install noipy\n\n**Note**: **noipy** will also install the `Requests HTTP library \u003chttps://github.com/kennethreitz/requests\u003e`_.\n\n\nUsage\n-----\n\nBasic usage of **noipy** command line tool:\n\n.. code-block:: bash\n\n    $ noipy -u \u003cyour username\u003e -p \u003cyour password\u003e -n \u003cyour hostname on DDNS provider\u003e\n            --provider {generic|noip|dyn|duck}\n\n\nFor `DuckDNS provider \u003chttps://www.duckdns.org\u003e`_, the command line would look like this:\n\n.. code-block:: bash\n\n    $ noipy -u \u003cyour token\u003e -n \u003cyour DuckDNS domain\u003e --provider duck\n\n\nOr you can just use ``--hostname`` (``-n``) and ``--provider`` arguments if you have\npreviously `stored your auth information \u003c#storing-auth-information\u003e`_ with ``--store`` option.\n\n.. code-block:: bash\n\n    $ noipy --hostname \u003cyour hostname on DDNS provider\u003e --provider {generic|noip|dyn| duck}\n\n\nYou can also specify a custom DDNS URL (thanks to `@jayennis22 \u003chttps://github.com/jayennis22\u003e`_):\n\n.. code-block:: bash\n\n    $ noipy --hostname \u003cyour hostname on DDNS provider\u003e [--provider  generic]\n            --url \u003ccustom DDNS URL\u003e\n\n\nIt is also possible to inform an IP address other than the machine's current:\n\n.. code-block:: bash\n\n    $ noipy --hostname \u003cyour hostname on DDNS provider\u003e 127.0.0.1\n\n\nIf ``--provider`` option is not informed, **generic** will be used as provider.\n\n\nFor details:\n\n.. code-block:: bash\n\n    $ noipy --help\n\n\nStoring auth information\n------------------------\n\nWith ``--store`` option it is possible to store login information. The\ninformation is sotred in ``$HOME/.noipy/`` directory:\n\n.. code-block:: bash\n\n    $ noipy --store --username \u003cyour username\u003e --password \u003cyour password\u003e \\\n        --provider {generic|noip|dyn| duck}\n\nOr simply:\n\n.. code-block:: bash\n\n    $ noipy --store --provider {generic|noip|dyn| duck}\n\nAnd type username and password when required.\n\n**Note:** password is stored simply encoded with\n`Base64 \u003chttps://en.wikipedia.org/wiki/Base64\u003e`_ method and is not actually\n*encrypted*!\n\nRunning tests\n~~~~~~~~~~~~~\n\nInstall tests dependencies (`tox \u003chttp://tox.readthedocs.org/en/latest/\u003e`_\nand `flake8 \u003chttps://flake8.readthedocs.org/\u003e`_):\n\n.. code-block:: bash\n\n    $ pip install -r requirements_dev.txt\n\n\nTest the code against all supported Python versions and check it against **PEP8** with ``tox``:\n\n.. code-block:: bash\n\n    $ tox\n\nCheck **PEP8** only:\n\n.. code-block:: bash\n\n    $ tox -e pep8\n\n\nCopyright \u0026 License\n-------------------\n\n.. image:: https://img.shields.io/github/license/pv8/noipy.svg?style=flat-square\n        :target: LICENSE\n        :alt: License\n\nCopyright (c) 2013 Pablo Vieira (pv8).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpv8%2Fnoipy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpv8%2Fnoipy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpv8%2Fnoipy/lists"}