{ "info": { "author": "Engine Bai", "author_email": "enginebai@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "PyMedium - Unofficial Medium API\n================================\n\n|License: MIT| |PyPI|\n\n.. figure:: https://raw.githubusercontent.com/enginebai/PyMedium/master/art/graphic.png\n :alt: PyMedium\n\n PyMedium\n\n*PyMedium* is an unofficial Medium API written in python flask. It\nprovides developers to access to user, post list and detail information\nfrom `Medium `__ website. This is a read-only API\nto access public information from Medium, you can customize this API to\nfit your requirements and deploy on your own server.\n\nNow we provide another way: python client SDK to let you integrate into\nyour application. More detail go to `wiki\npage `__.\n\nInstallation\n------------\n\nBefore running PyMedium API, you have to clone the code from this\nrepository, install requirements at first.\n\n.. code:: shell\n\n $ git clone git@github.com:enginebai/PyMedium.git\n $ cd PyMedium\n $ pip install -r requirements.txt\n\nThen download web driver to ``driver`` folder from\n`Selenium `__ or via the\ncommand-line with ``curl`` (update ``{VERSION}`` with the latest version\ncode and ``{OS}`` with your server operating system.\n\n.. code:: shell\n\n $ mkdir driver | cd driver\n $ curl -O https://chromedriver.storage.googleapis.com/{VERSION}/chromedriver_{OS}.zip\n $ unzip chromedriver_{OS}.zip\n\nUsage\n-----\n\nTo run this API application, use the ``flask`` command as same as `Flask\nQuickstart `__\n\n.. code:: shell\n\n $ export FLASK_APP=./pymedium/api.py\n $ export FLASK_DEBUG=1 ## if you run in debug mode.\n $ flask run\n * Running on http://localhost:5000/\n\nDocumentation\n-------------\n\nUsers\n~~~~~\n\n- ``GET /@{username}`` - Get user profile\n\nResponse\n^^^^^^^^\n\n.. code:: json\n\n {\n \"avatar\": \"1*Y7zH0UM975YmchIO86uIGA.jpeg\",\n \"bio\": \"Mixtape of developer, designer and startup. Cofounder and developer of DualCores Studio. Follow my technical blog: http://enginebai.logdown.com/\",\n \"display_name\": \"Engine Bai\",\n \"facebook\": \"789985027713671\",\n \"followedby_count\": 445,\n \"following_count\": 238,\n \"publications\": [\n {\n \"creator_user_id\": \"3301d32a6bba\",\n \"description\": \"Stories from the mix of designer and developer. \u8a2d\u8a08\u8207\u5de5\u7a0b\u7684\u4ea4\u7e54\uff0c\u6df7\u642d\u6fc0\u76ea\u51fa\u4e0d\u540c\u7684\u60f3\u50cf\u3002\",\n \"display_name\": \"DualCores Studio\",\n \"follower_count\": 302,\n \"image\": {\n \"image_id\": \"1*DLixNgsMpK5B74na3EDucQ.png\",\n \"original_height\": 591,\n \"original_width\": 591\n },\n \"logo\": {\n \"image_id\": \"1*DLixNgsMpK5B74na3EDucQ.png\",\n \"original_height\": 591,\n \"original_width\": 591\n },\n \"name\": \"dualcores-studio\",\n \"post_count\": 0,\n \"publication_id\": \"275e26e7c1b2\",\n \"url\": \"https://medium.com/dualcores-studio\"\n },\n ...more\n ],\n \"twitter\": \"enginebai\",\n \"user_id\": \"3301d32a6bba\",\n \"username\": \"enginebai\"\n }\n\nPublication\n~~~~~~~~~~~\n\n- ``GET /{publication_name}`` - Get publication profile\n\n.. code:: json\n\n {\n \"creator_user_id\": \"3301d32a6bba\",\n \"description\": \"Stories from the mix of designer and developer. \u8a2d\u8a08\u8207\u5de5\u7a0b\u7684\u4ea4\u7e54\uff0c\u6df7\u642d\u6fc0\u76ea\u51fa\u4e0d\u540c\u7684\u60f3\u50cf\u3002\",\n \"display_name\": \"DualCores Studio\",\n \"follower_count\": 302,\n \"image\": {\n \"image_id\": \"1*DLixNgsMpK5B74na3EDucQ.png\",\n \"original_height\": 591,\n \"original_width\": 591\n },\n \"logo\": {\n \"image_id\": \"1*DLixNgsMpK5B74na3EDucQ.png\",\n \"original_height\": 591,\n \"original_width\": 591\n },\n \"name\": \"dualcores-studio\",\n \"post_count\": 0,\n \"publication_id\": \"275e26e7c1b2\",\n \"url\": \"https://medium.com/dualcores-studio\"\n }\n\nPost\n~~~~\n\n- ``GET /@{username}/posts`` - Get user latest posts\n- ``GET /{publication_name}/posts`` - Get publication latest posts\n- ``GET /top`` - Get most popular today posts\n- ``GET /tag/{tag}`` - Get tagged in popular posts\n- ``GET /tag/{tag}/latest`` - Get tagged in latest posts\n\nParameters\n^^^^^^^^^^\n\n+--------+-----------+------------------------------------------------+\n| Name | Type | Description |\n+========+===========+================================================+\n| n | integer | The count of posts to return. Default is 10. |\n+--------+-----------+------------------------------------------------+\n\nResponse\n^^^^^^^^\n\n.. code:: json\n\n [\n {\n \"image_count\": 14,\n \"post_date\": 1478533474858,\n \"post_id\": \"99a3d86df228\",\n \"preview_image\": {\n \"image_id\": \"1*zhnQJhNzp-Oal1-GU1EUKw.png\",\n \"original_height\": 412,\n \"original_width\": 608\n },\n \"read_time\": 7.74811320754717,\n \"recommend_count\": 351,\n \"response_count\": 10,\n \"title\": \"Make an android custom view, publish and open source.\",\n \"url\": \"https://medium.com/dualcores-studio/make-an-android-custom-view-publish-and-open-source-99a3d86df228\",\n \"word_count\": 1669\n },\n ...more\n ]\n\nPost detail\n~~~~~~~~~~~\n\n- ``GET /post`` - Get the post content\n\nParameters\n^^^^^^^^^^\n\n+------+------+------+\n| Name | Type | Desc |\n| | | ript |\n| | | ion |\n+======+======+======+\n| u | stri | The |\n| | ng | post |\n| | | url |\n| | | to |\n| | | pars |\n| | | e |\n| | | cont |\n| | | ent. |\n+------+------+------+\n| form | stri | (opt |\n| at | ng | iona |\n| | | l) |\n| | | The |\n| | | form |\n| | | at |\n| | | of |\n| | | resp |\n| | | onse |\n| | | , |\n| | | the |\n| | | valu |\n| | | e |\n| | | coul |\n| | | d |\n| | | be |\n| | | ``te |\n| | | xt`` |\n| | | , |\n| | | ``ht |\n| | | ml`` |\n| | | , |\n| | | ``md |\n| | | ``, |\n| | | ``js |\n| | | on`` |\n| | | , |\n| | | defa |\n| | | ult |\n| | | is |\n| | | ``te |\n| | | xt`` |\n| | | . |\n+------+------+------+\n\nResponse\n^^^^^^^^\n\n::\n\n ## Simple text, json, html, markdown format\n\nIssues\n------\n\nFeel free to submit bug reports or feature requests and make sure you\nread the contribution guideline before opening any issue.\n\nContributing\n------------\n\n1. Check the open/close issues or open a fresh issue for feature request\n or bug report with different labels (``feature``/``bug``).\n2. Fork this `repository `__ on\n GitHub to start customizing on master or new branch.\n3. Write a test which shows that the feature works as expected or the\n bug was fixeed.\n4. Send a pull request and wait for code review.\n\n`Read more on contributing <./CONTRIBUTING.md>`__.\n\nLicense\n-------\n\nCopyright (c) 2017 Engine Bai Licensed under the `MIT\nlicense `__.\n\n.. |License: MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg\n :target: https://opensource.org/licenses/MIT\n.. |PyPI| image:: https://badge.fury.io/py/PyMedium.svg\n :target: https://badge.fury.io/py/PyMedium\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/enginebai/PyMedium", "keywords": "", "license": "The MIT License (MIT) Copyright \u00a9 2017 Engine Bai.", "maintainer": "", "maintainer_email": "", "name": "PyMedium", "package_url": "https://pypi.org/project/PyMedium/", "platform": "", "project_url": "https://pypi.org/project/PyMedium/", "project_urls": { "Homepage": "https://github.com/enginebai/PyMedium" }, "release_url": "https://pypi.org/project/PyMedium/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "PyMedium - Unofficial Medium API", "version": "1.0.3" }, "last_serial": 2871079, "releases": { "1.0.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "256fe4725b88e5ee769e531e7ca3d38c", "sha256": "fead6d1b594ecfe4887450650aee9300f3eebf5f5cd4f46927ffd1ed5e589dee" }, "downloads": -1, "filename": "PyMedium-1.0.1.tar.gz", "has_sig": false, "md5_digest": "256fe4725b88e5ee769e531e7ca3d38c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10471, "upload_time": "2017-05-13T01:59:33", "url": "https://files.pythonhosted.org/packages/e0/f0/23760ec1a27e9c27aa9fd06af43fac848eb6a0bff0f0c006a4cc5f4adeaa/PyMedium-1.0.1.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "4751a2c0c83a0eea162678e000ffcc1c", "sha256": "9a55398401e2871bb5ddbe788e52ede0ba65287ccd2f460b4c9022e400f0a0a7" }, "downloads": -1, "filename": "PyMedium-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4751a2c0c83a0eea162678e000ffcc1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10478, "upload_time": "2017-05-13T06:42:22", "url": "https://files.pythonhosted.org/packages/26/89/368ca438bb7a24b34edc5dea9913c18fea6aaa1edb84a48ce0b38857bcf3/PyMedium-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4751a2c0c83a0eea162678e000ffcc1c", "sha256": "9a55398401e2871bb5ddbe788e52ede0ba65287ccd2f460b4c9022e400f0a0a7" }, "downloads": -1, "filename": "PyMedium-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4751a2c0c83a0eea162678e000ffcc1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10478, "upload_time": "2017-05-13T06:42:22", "url": "https://files.pythonhosted.org/packages/26/89/368ca438bb7a24b34edc5dea9913c18fea6aaa1edb84a48ce0b38857bcf3/PyMedium-1.0.3.tar.gz" } ] }