{ "info": { "author": "ping", "author_email": "lastmodified@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Instagram Private API Extensions\n\nAn extension module to [instagram\\_private\\_api](https://github.com/ping/instagram_private_api) to help with common tasks such as posting a photo or video.\n\n![](https://img.shields.io/badge/Python-2.7%2C%203.5-3776ab.svg?maxAge=2592000)\n[![Release](https://img.shields.io/github/release/ping/instagram_private_api_extensions.svg?colorB=ff7043)](https://github.com/ping/instagram_private_api_extensions/releases)\n[![Docs](https://img.shields.io/badge/docs-readthedocs.io-ff4980.svg?maxAge=2592000)](https://instagram-private-api-extensions.readthedocs.io/en/latest/)\n[![Build](https://img.shields.io/travis/ping/instagram_private_api_extensions.svg)](https://travis-ci.org/ping/instagram_private_api_extensions)\n[![Coverage](https://img.shields.io/coveralls/ping/instagram_private_api_extensions.svg)](https://coveralls.io/github/ping/instagram_private_api_extensions)\n\n## Features\n\n1. [``media``](#media): Edits a photo/video so that it complies with Instagram's requirements by:\n * Resizing\n * Cropping to fit the minimum/maximum aspect ratio\n * Generating the video thumbnail image\n * Clipping the video duration if it is too long\n * Changing the format/encoding\n\n2. [``pagination``](#pagination): Page through an api call such as ``api.user_feed()``.\n\n3. [``live``](#live): Download an ongoing IG live stream. Requires ffmpeg installed.\n\n4. [``replay``](#replay): Download an IG live replay stream. Requires ffmpeg installed.\n\n## Documentation\n\nDocumentation is available at https://instagram-private-api-extensions.readthedocs.io/en/latest/\n\n## Install\n\nInstall with pip using\n\n```bash\npip install git+https://git@github.com/ping/instagram_private_api_extensions.git@0.3.8\n```\n\nTo update:\n\n```bash\npip install git+https://git@github.com/ping/instagram_private_api_extensions.git@0.3.8 --upgrade\n```\n\nTo update with latest repo code:\n\n```bash\npip install git+https://git@github.com/ping/instagram_private_api_extensions.git --upgrade --force-reinstall\n```\n\n## Usage\n\n### [Media](instagram_private_api_extensions/media.py)\n```python\nfrom instagram_private_api import Client, MediaRatios\nfrom instagram_private_api_extensions import media\n\napi = Client('username', 'password')\n\n# post a photo\nphoto_data, photo_size = media.prepare_image(\n 'pathto/my_photo.jpg', aspect_ratios=MediaRatios.standard)\napi.post_photo(photo_data, photo_size, caption='Hello World!')\n\n# post a video\nvid_data, vid_size, vid_duration, vid_thumbnail = media.prepare_video(\n 'pathto/my_video.mp4', aspect_ratios=MediaRatios.standard)\napi.post_video(vid_data, vid_size, vid_duration, vid_thumbnail)\n\n# post a photo story\nphoto_data, photo_size = media.prepare_image(\n 'pathto/my_photo.jpg', aspect_ratios=MediaRatios.reel)\napi.post_photo_story(photo_data, photo_size)\n\n# post a video story\nvid_data, vid_size, vid_duration, vid_thumbnail = media.prepare_video(\n 'pathto/my_video.mp4', aspect_ratios=MediaRatios.reel)\napi.post_video_story(vid_data, vid_size, vid_duration, vid_thumbnail)\n\n# post a video without reading the whole file into memory\nvid_saved_path, vid_size, vid_duration, vid_thumbnail = media.prepare_video(\n 'pathto/my_video.mp4', aspect_ratios=MediaRatios.standard,\n save_path='pathto/my_saved_video.mp4', save_only=True)\n# To use save_only, the file must be saved locally\n# by specifying the save_path\nwith open(vid_saved_path, 'rb') as video_fp:\n api.post_video(video_fp, vid_size, vid_duration, vid_thumbnail)\n```\n\n### [Pagination](instagram_private_api_extensions/pagination.py)\n\n```python\nfrom instagram_private_api_extensions import pagination\n\n# page through a feed\nitems = []\nfor results in pagination.page(api.user_feed, args={'user_id': '123456'}):\n if results.get('items'):\n items.extend(results['items'])\nprint(len(items))\n```\n\n### [Live](instagram_private_api_extensions/live.py)\n\n```python\nfrom instagram_private_api_extensions import live\n\nbroadcast = api.broadcast_info('1234567890')\n\ndl = live.Downloader(\n mpd=broadcast['dash_playback_url'],\n output_dir='output_{}/'.format(broadcast['id']),\n user_agent=api.user_agent)\ntry:\n dl.run()\nexcept KeyboardInterrupt:\n if not dl.is_aborted:\n dl.stop()\nfinally:\n # combine the downloaded files\n # Requires ffmpeg installed. If you prefer to use avconv\n # for example, omit this step and do it manually\n dl.stitch('my_video.mp4')\n```\n\n### [Replay](instagram_private_api_extensions/replay.py)\n\n```python\nfrom instagram_private_api_extensions import replay\n\nuser_story_feed = api.user_story_feed('12345')\n\nbroadcasts = user_story_feed.get('post_live_item', {}).get('broadcasts', [])\nfor broadcast in broadcasts:\n dl = replay.Downloader(\n mpd=broadcast['dash_manifest'],\n output_dir='output_{}/'.format(broadcast['id']),\n user_agent=api.user_agent)\n # download and save to file\n dl.download('output_{}.mp4'.format(broadcast['id']))\n```\n\n## Support\nMake sure to review the [contributing documentation](CONTRIBUTING.md) before submitting an issue report or pull request.\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/ping/instagram_private_api_extensions/tree/master", "keywords": "instagram private api extensions", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "instagram-private-api-extensions", "package_url": "https://pypi.org/project/instagram-private-api-extensions/", "platform": "", "project_url": "https://pypi.org/project/instagram-private-api-extensions/", "project_urls": { "Homepage": "https://github.com/ping/instagram_private_api_extensions/tree/master" }, "release_url": "https://pypi.org/project/instagram-private-api-extensions/0.3.8/", "requires_dist": [ "moviepy (==0.2.3.2)", "Pillow (>=4.0.0)", "requests (>=2.9.1)" ], "requires_python": "", "summary": "An extension module for https://github.com/ping/instagram_private_api", "version": "0.3.8" }, "last_serial": 5232223, "releases": { "0.3.8": [ { "comment_text": "", "digests": { "md5": "af9c4d65021ffaa78972dc79234d6dce", "sha256": "46a68b001605cafdcce193ffed3ce09e68c347ffc0d6db1883fdc88bca8f4aeb" }, "downloads": -1, "filename": "instagram_private_api_extensions-0.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "af9c4d65021ffaa78972dc79234d6dce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19038, "upload_time": "2019-05-06T11:36:42", "url": "https://files.pythonhosted.org/packages/fb/3a/f9e594ab71d17f2deb59ab94c901914bc69a3b229b496c4cd70c5e89d6de/instagram_private_api_extensions-0.3.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "478363b496b5790470827a241977864a", "sha256": "8c50104966868cce36303d31e21edc4fbab662102cc483c135d304b315de9372" }, "downloads": -1, "filename": "instagram_private_api_extensions-0.3.8.tar.gz", "has_sig": false, "md5_digest": "478363b496b5790470827a241977864a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16740, "upload_time": "2019-05-06T11:36:45", "url": "https://files.pythonhosted.org/packages/82/5a/1e5e7185cfbb4545f43a81c420be3cb47c3b46a63da556c77ecca3cffa96/instagram_private_api_extensions-0.3.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "af9c4d65021ffaa78972dc79234d6dce", "sha256": "46a68b001605cafdcce193ffed3ce09e68c347ffc0d6db1883fdc88bca8f4aeb" }, "downloads": -1, "filename": "instagram_private_api_extensions-0.3.8-py3-none-any.whl", "has_sig": false, "md5_digest": "af9c4d65021ffaa78972dc79234d6dce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19038, "upload_time": "2019-05-06T11:36:42", "url": "https://files.pythonhosted.org/packages/fb/3a/f9e594ab71d17f2deb59ab94c901914bc69a3b229b496c4cd70c5e89d6de/instagram_private_api_extensions-0.3.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "478363b496b5790470827a241977864a", "sha256": "8c50104966868cce36303d31e21edc4fbab662102cc483c135d304b315de9372" }, "downloads": -1, "filename": "instagram_private_api_extensions-0.3.8.tar.gz", "has_sig": false, "md5_digest": "478363b496b5790470827a241977864a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16740, "upload_time": "2019-05-06T11:36:45", "url": "https://files.pythonhosted.org/packages/82/5a/1e5e7185cfbb4545f43a81c420be3cb47c3b46a63da556c77ecca3cffa96/instagram_private_api_extensions-0.3.8.tar.gz" } ] }