{ "info": { "author": "Will Breaden Madden", "author_email": "wbm@protonmail.ch", "bugtrack_url": null, "classifiers": [], "description": "ovipositor\n==========\n\nFlask link-shortening service and database system\n\n.. figure:: https://raw.githubusercontent.com/wdbm/ovipositor/master/media/ovipositor.png\n :alt: \n\ncredits\n=======\n\n- name by Ellis Kay\n\nintroduction\n============\n\nOvipositor is a link-shortener web program. A long URL is entered,\ntogether with an optional shortlink and an optional comment. When\ncreating a shortlink, the long URL and the shortlink are saved to a\ndatabase. When an attempt is made to use a shortlink, the specified\nshortlink is searched for in the database and, if the shortlink is in\nthe database, there is a redirect to its corresponding long URL.\n\n.. figure:: https://raw.githubusercontent.com/wdbm/ovipositor/master/media/screenshot.png\n :alt: \n\nsetup\n=====\n\n.. code:: bash\n\n sudo apt install sqlite\n sudo pip install ovipositor\n\nFlask\n=====\n\n.. code:: bash\n\n while true; do\n ovipositor --home=\"index.html\"\n done\n\nGunicorn\n========\n\n.. code:: bash\n\n sudo gunicorn --workers=1 \"ovipositor.__init__:WSGI(argv=['--home=index.html'])\" --bind=0.0.0.0:443 --certfile=/home/user/certificates/fullchain.pem --keyfile=/home/user/certificates/privkey.pem\n\novipositor database structure\n=============================\n\nThere is one table in an ovipositor database called \"shortlinks\". This\ntable has 6 fields:\n\n+-------------+-----------------------------------------------+\n| **field** | **description** |\n+=============+===============================================+\n| comment | shortlink descriptive comment |\n+-------------+-----------------------------------------------+\n| count | shortlink usage count |\n+-------------+-----------------------------------------------+\n| IP | IP address that created the shortlink |\n+-------------+-----------------------------------------------+\n| URL | long URL to which the shortlink corresponds |\n+-------------+-----------------------------------------------+\n| shortlink | shortlink text |\n+-------------+-----------------------------------------------+\n| timestamp | shortlink creation timestamp |\n+-------------+-----------------------------------------------+\n\nchanging from YOURLS to ovipositor\n==================================\n\nAn export dump should be made of the YOURLS MySQL database and the dump\nshould be converted to an SQLite3 database. This can be done using\n`mysql2sqlite `__.\n\nThe YOURLS SQLite database then can be converted to an ovipositor\ndatabase using the script\n``convert_YOURLS_SQLite_database_to_ovipositor_database.py``.\n\n.. code:: bash\n\n convert_YOURLS_SQLite_database_to_ovipositor_database.py --help\n\n convert_YOURLS_SQLite_database_to_ovipositor_database.py \\\n --database_YOURLD=linkdb.db \\\n --database_ovipositor=ovipositor.db\n\nThe YOURLS database contains three tables, \"yourls\\_url\",\n\"sqlite\\_sequence\" and \"yourls\\_options\". These tables have the\nfollowing fields:\n\n- yourls\\_url\n\n - clicks\n - ip\n - keyword\n - timestamp\n - title\n - url\n\n- sqlite\\_sequence\n\n - name\n - seq\n\n- yourls\\_options\n\n - option\\_id\n - option\\_name\n - option\\_value\n\nIn changing from YOURLS to ovipositor, the following database table and\nfield conversions are made:\n\n+-------------------------------------+-------------------------------------+\n| **YOURLS** | **ovipositor** |\n+=====================================+=====================================+\n| yourls\\_url | shortlinks |\n+-------------------------------------+-------------------------------------+\n| clicks | count |\n+-------------------------------------+-------------------------------------+\n| ip | IP |\n+-------------------------------------+-------------------------------------+\n| keyword | shortlink |\n+-------------------------------------+-------------------------------------+\n| url | URL |\n+-------------------------------------+-------------------------------------+\n| timestamp (``datetime.datetime``) | timestamp (``datetime.datetime``) |\n+-------------------------------------+-------------------------------------+\n| title | comment |\n+-------------------------------------+-------------------------------------+\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wdbm/ovipositor", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "ovipositor", "package_url": "https://pypi.org/project/ovipositor/", "platform": "", "project_url": "https://pypi.org/project/ovipositor/", "project_urls": { "Homepage": "https://github.com/wdbm/ovipositor" }, "release_url": "https://pypi.org/project/ovipositor/2018.8.14.1819/", "requires_dist": null, "requires_python": "", "summary": "link-shortening website and database system", "version": "2018.8.14.1819" }, "last_serial": 4170579, "releases": { "2017.2.5.157": [ { "comment_text": "", "digests": { "md5": "ee69705978cffb2808da6d662c5052b8", "sha256": "6b836a76a376ddd2c8e4ed21fd3263d3494519866388d66e97fa35a4ba2f420c" }, "downloads": -1, "filename": "ovipositor-2017.2.5.157.tar.gz", "has_sig": false, "md5_digest": "ee69705978cffb2808da6d662c5052b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4952, "upload_time": "2017-02-05T02:08:51", "url": "https://files.pythonhosted.org/packages/53/b4/604a2f3abf91638df2c7f43d9a9eebe95eb4c6c84b213863e27fae54c2b5/ovipositor-2017.2.5.157.tar.gz" } ], "2017.2.5.245": [ { "comment_text": "", "digests": { "md5": "e664d8f80fc3a65d813cba309de522af", "sha256": "f2856c57bb069b4c5d84e993b3e345955f5e0ec5f18bd773f2db1bafa8199abd" }, "downloads": -1, "filename": "ovipositor-2017.2.5.245.tar.gz", "has_sig": false, "md5_digest": "e664d8f80fc3a65d813cba309de522af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4959, "upload_time": "2017-02-05T02:47:14", "url": "https://files.pythonhosted.org/packages/43/e3/038767e476b82f112537f0cc453a206867087228f4012547deca6d66055d/ovipositor-2017.2.5.245.tar.gz" } ], "2017.2.6.2042": [ { "comment_text": "", "digests": { "md5": "7dd41f35f1801b91cedf6076bd524a77", "sha256": "333199259a7eae5210041407cb94cdf0379a9c6e13a7f6e2d4e07bbc9ac942d0" }, "downloads": -1, "filename": "ovipositor-2017.2.6.2042.tar.gz", "has_sig": false, "md5_digest": "7dd41f35f1801b91cedf6076bd524a77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5116, "upload_time": "2017-02-06T20:46:47", "url": "https://files.pythonhosted.org/packages/04/d9/a25849e555034c298a92eb3a4a68ba88f3e3c08d426929147c70f42937e7/ovipositor-2017.2.6.2042.tar.gz" } ], "2017.5.9.2150": [ { "comment_text": "", "digests": { "md5": "71b5e026b2b9a3dc2703d045a6303ddc", "sha256": "030be0db5fde7e0756801cd22d758f34044fa6e43efdca3f8cdde7ca429f655a" }, "downloads": -1, "filename": "ovipositor-2017.5.9.2150.tar.gz", "has_sig": false, "md5_digest": "71b5e026b2b9a3dc2703d045a6303ddc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5616, "upload_time": "2017-05-09T21:54:31", "url": "https://files.pythonhosted.org/packages/42/17/14d095d10b089fc3fb14d31768442c3c677808e013f2536c2e2b159eab2d/ovipositor-2017.5.9.2150.tar.gz" } ], "2018.1.15.2350": [ { "comment_text": "", "digests": { "md5": "1a9a74ca053f5affa185ab56a40ad2e0", "sha256": "47a280ed397faafd74746298bac2765b067786979cc9a0d3af80248256b8324a" }, "downloads": -1, "filename": "ovipositor-2018.1.15.2350.tar.gz", "has_sig": false, "md5_digest": "1a9a74ca053f5affa185ab56a40ad2e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6161, "upload_time": "2018-01-16T00:11:33", "url": "https://files.pythonhosted.org/packages/57/13/14fdcedfb98180ead3f3ee58018d7565a7e29ff0a1929086dd9a86342929/ovipositor-2018.1.15.2350.tar.gz" } ], "2018.3.14.1542": [ { "comment_text": "", "digests": { "md5": "0d627a57087ad9539401ce18b9b85716", "sha256": "83cb0989b9a687663467c0ad0a82643cff091086d273e6e164aa875efe44f801" }, "downloads": -1, "filename": "ovipositor-2018.3.14.1542.tar.gz", "has_sig": false, "md5_digest": "0d627a57087ad9539401ce18b9b85716", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6295, "upload_time": "2018-03-14T15:46:57", "url": "https://files.pythonhosted.org/packages/4a/8b/31b5c143dadea24642650b5e00b0547660542920910aecdceb0265deef62/ovipositor-2018.3.14.1542.tar.gz" } ], "2018.4.2.1704": [ { "comment_text": "", "digests": { "md5": "28d01b9dc988d5352f3eb2356fde5caa", "sha256": "fd8a9afce73f0a23b7268e694023c1ff9a375ed4f724f969a523905dd68d2f5e" }, "downloads": -1, "filename": "ovipositor-2018.4.2.1704.tar.gz", "has_sig": false, "md5_digest": "28d01b9dc988d5352f3eb2356fde5caa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6310, "upload_time": "2018-04-02T17:06:27", "url": "https://files.pythonhosted.org/packages/00/c7/7e54ce97b02c2128eb7fb0f2dc2cf6a1030a4ae83c09b59453644305e256/ovipositor-2018.4.2.1704.tar.gz" } ], "2018.4.2.1720": [ { "comment_text": "", "digests": { "md5": "e752c3ff77a04ab4e26928bc7d9845cd", "sha256": "da34370aa3a7e9e611f4a08879e07515cea2069d4f87952e52e2439e2f3dddcd" }, "downloads": -1, "filename": "ovipositor-2018.4.2.1720.tar.gz", "has_sig": false, "md5_digest": "e752c3ff77a04ab4e26928bc7d9845cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6299, "upload_time": "2018-04-02T17:20:48", "url": "https://files.pythonhosted.org/packages/bf/cf/63a19c6b37215debc94c1bf9b51e6bfb17607af3b02440b90db0995e8388/ovipositor-2018.4.2.1720.tar.gz" } ], "2018.6.21.1656": [ { "comment_text": "", "digests": { "md5": "21d91a3d003b6a2d437b0c340fb587cf", "sha256": "48470be84929de2782408ea06da9a3585baf300a5f2ef4d4eac71bd20ceebcf1" }, "downloads": -1, "filename": "ovipositor-2018.6.21.1656.tar.gz", "has_sig": false, "md5_digest": "21d91a3d003b6a2d437b0c340fb587cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13241, "upload_time": "2018-06-21T16:59:20", "url": "https://files.pythonhosted.org/packages/0f/21/008b059e10917cae7983172f447f687a3dcc8c546b0ae84bb0fbd3ac482d/ovipositor-2018.6.21.1656.tar.gz" } ], "2018.6.21.1711": [ { "comment_text": "", "digests": { "md5": "05e890af0ffba7e312f3c9dc98e87483", "sha256": "51c04629ca1656d549e90dae9729b7e676b7b71994c9988dda8fa1e601fb82ba" }, "downloads": -1, "filename": "ovipositor-2018.6.21.1711.tar.gz", "has_sig": false, "md5_digest": "05e890af0ffba7e312f3c9dc98e87483", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13240, "upload_time": "2018-06-21T17:12:12", "url": "https://files.pythonhosted.org/packages/c0/65/27f4b1b0cba923229419092e35db570a746bc1ce59428fb0e9cf0eb968c7/ovipositor-2018.6.21.1711.tar.gz" } ], "2018.8.14.1819": [ { "comment_text": "", "digests": { "md5": "4b02bb4c63213777b8a795e6126c1d49", "sha256": "c90ed281fa509f88c869a80f28dd49497e64f16a8788a4457f33b12c1ba071c0" }, "downloads": -1, "filename": "ovipositor-2018.8.14.1819.tar.gz", "has_sig": false, "md5_digest": "4b02bb4c63213777b8a795e6126c1d49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12776, "upload_time": "2018-08-14T18:59:11", "url": "https://files.pythonhosted.org/packages/30/a9/140ef748c701cedd6e01550998710f4761415aa720f39aa6c95eb327b1df/ovipositor-2018.8.14.1819.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b02bb4c63213777b8a795e6126c1d49", "sha256": "c90ed281fa509f88c869a80f28dd49497e64f16a8788a4457f33b12c1ba071c0" }, "downloads": -1, "filename": "ovipositor-2018.8.14.1819.tar.gz", "has_sig": false, "md5_digest": "4b02bb4c63213777b8a795e6126c1d49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12776, "upload_time": "2018-08-14T18:59:11", "url": "https://files.pythonhosted.org/packages/30/a9/140ef748c701cedd6e01550998710f4761415aa720f39aa6c95eb327b1df/ovipositor-2018.8.14.1819.tar.gz" } ] }