{ "info": { "author": "JeanMichel FRANCOIS aka toutpt", "author_email": "toutpt@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Plone", "Framework :: Plone :: 4.0", "Framework :: Plone :: 4.1", "Framework :: Plone :: 4.2", "Framework :: Plone :: 4.3", "Framework :: Zope2", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Introduction\n============\n\nThis addon integrate oembed_ into Plone. You can find a demo at\nhttp://youtu.be/kHikGIWrvCs\n\noEmbed official documentation:\nhttp://oembed.com/\n\nYou have to know this addon try to go beyond already supported website\nand with as many providers as possible without third party services.\n\nHow to install\n==============\n\n.. image:: https://pypip.in/v/collective.oembed/badge.png\n :target: https://crate.io/packages/collective.oembed/\n\n.. image:: https://pypip.in/d/collective.oembed/badge.png\n :target: https://crate.io/packages/collective.oembed/\n\n.. image:: https://secure.travis-ci.org/collective/collective.oembed.png\n :target: http://travis-ci.org/#!/collective/collective.oembed\n\n.. image:: https://coveralls.io/repos/collective/collective.oembed/badge.png?branch=master\n :target: https://coveralls.io/r/collective/collective.oembed\n\nThis addon can be installed has any other addons.\nPlease follow official documentation_.\n\n.. _documentation: http://plone.org/documentation/kb/installing-add-ons-quick-how-to\n\n\noembed provider\n===============\n\nYour site will become an oembed provider using @@oembed view as an endpoint::\n\n URL Scheme: http://mysite.com/*\n API endpoint: http://mysite.com/@@oembed\n Supports discovery via tags\n\nThis addon use archetypes getPrimaryField to get the most representative field\nof your content type and then build information on how to embed this content\n\nTo change this behavior you can override the view for specific context::\n\n \n \n \n from collective.oembed.provider.\n class OEmbedProvider(OEmbedProvider):\n def add_context_info(self, ob, site):\n self.embed['type'] = 'rich'\n ...\n\n\noembed client\n=============\n\nThis addon provide an integration of jquery.oembed_ plugin. Because there are\nmany fork you have to choose the one you will use. The official plugin has been\nintegrated to plone throw the addon collective.js.oembed_\n\nThe oembed client is integrated using a viewlet that is not activated by\ndefault. You have to activate it throw the controlpanel. It is configured that\nway::\n\n \n \n\nconsumer\n========\n\nA consumer is availabe throw a utility::\n\n >>> url = \"http://www.youtube.com/watch?v=it1hMtZKle8\"\n >>> consumer = component.getUtility(collective.oembed.interfaces.IConsumer)\n >>> consumer.get_data(url, maxwidth=300, maxheight=None, format='json')\n {...}\n\nThere is also a @@collective.oembed.consumer view, which can take params throw\nattributes::\n\n >>> consumer_view = component.queryMultiAdapter((self.context,self.request),\n ... name=u'collective.oembed.consumer')\n >>> consumer_view._url = url\n >>> consumer_view.embed_auto()\n
...
\n\nOEmbed link view\n================\n\nThis addon register an oembed view to the Link content type. It displays\ncontent provided from the remote url and do not set maxwidth & maxheight. It\nshould be achieved by integrators.\n\nThe link view stores 3 different lists of components:\n\n* oembed\n* api2embed\n* url2embed\n\noembed\n------\n\nContains registered views of type oembed_view , able to get the html\nembed template from the targetted provider's oembed api (see below for a\nlist of currently supported providers).\n\napi2embed\n---------\n\nIf you have an API key for the targeted website, you should be able to\nuse it through those views.\nOnce this feature is implemented, you should be able to choose whether\nyou want to activate it or not.\n\nurl2embed\n---------\n\nContains registered views of type url2embed_view, which get the embed\ntemplate directly from the target's url.\nUsed as a fallback for websites who do not support the oEmbed format.\n\nNOTE::\n\n While the returned data will be sufficient to embed the target\n widget in your view, you won't be able to access the metadata which\n could have been associated with it in a straight oEmbed format.\n\nAll three lists are checked in the same order as they're presented here,\nand the first valid component found is used to get the embed code.\nIf no match at all is found, then nothing will be displayed.\n\nCheck endpoint.csv to see which of those views are currently supported for\neach service.\n\nEmbed.ly\n========\n\nThis addon can use embed.ly_ service. You can set the embed.ly api key in the\ncontrol panel or install and configure collective.embedly, this addon will\nuse the configuration provided by this one.\n\nProviders\n=========\n\nembed.ly is activated only if you have added an api_key or configured\ncollective.embedly. The addon provide native support for the following services:\n\nExternal providers:\n\n* Embedly (http://embed.ly)\n\nVideo providers:\n\n* 5min (http://www.5min.com/)\n* Youtube (http://www.youtube.com/)\n* Qik (http://qik.com/)\n* Revision3 (http://revision3.com/)\n* Hulu (http://www.hulu.com/)\n* Vimeo (http://vimeo.com/)\n* CollegeHumor (http://www.collegehumor.com/)\n* Kinomap (http://wwww.kinomap.com/)\n* Dailymotion (http://www.dailymotion.com/)\n* Clikthrough (http://clikthrough.com)\n* Dotsub (http://dotsub.com/)\n* Vhx.tv (http://vhx.tv) NOTE: only works with the dedicated URL for sharing\n* Nfb.ca (http://http://www.nfb.ca/)\n* Wordpress TV (http://wordpress.tv/)\n* Screenr (http://screenr.com/)\n\nPhoto providers:\n\n* 23hq (http://www.23hq.com/)\n* Flickr (http://www.flickr.com/)\n* SmugMug (http://www.smugmug.com/)\n* Photobucket (http://photobucket.com)\n* Instagr (http://instagr.am/)\n* Picasa (https://picasa.google.com/)\n\nRich providers:\n\n* Occipital (http://360.io)\n* iFixit (http://www.iFixit.com)\n* Apple (http://itunes.apple.com)\n* Poll Everywhere (http://www.polleverywhere.com/)\n* SlideShare (http://www.slideshare.net/)\n* WordPress (http://wordpress.com/)\n* Official.FM (http://official.fm)\n* Gist Github (https://gist.github.com)\n* Google Calendar (https://www.google.com/calendar)\n* Google Docs (https://docs.google.com/)\n* Google Maps (http://maps.google.com)\n* Issuu (http://issuu.com)\n* Scribd (http://www.scribd.com)\n* SoundCloud (http://soundcloud.com/)\n* Spotify (http://open.spotify.com/)\n\nProxy OEmbed Endpoint\n=====================\n\nThis addon provide consumer and provider. Both can be used at the same time\nin the proxy oembed endpoint. It means you can ask your site how to display\nan URL what ever it comes from the site itself or from outside.\n\n\nOther Plone addons\n==================\n\n* collective.portlet.oembed_\n* collective.js.oembed_\n* collective.embedly_\n\nAddon design (targeted to 2.0)\n==============================\n\nThe internal code has been completly redone on 2.0\n\nGoals:\n\n* code easier to understand\n* less components\n* performance optimization\n\nThe provided integration use only json throw ajax request.\n\nWe have one main view which achieve the job:\n@@proxy-oembed-provider\n\nThis one use a ram cache with a cache-key based on:\n* url + max-width + max-height\n* 1 hour (in case distant html has changed)\n\nThere is a structure key/value with hostname as keys\nand low level consumer name as values which are instanciated when needed (lazy\nloading) so it use less memory.\n\nTODO\n----\n\nMake the global structure configurable to:\n\n* blacklist some hostname throw portal_registry\n* add new key/value hostname/consumername throw portal_registry\n* override existing value throw portal_registry\n\n\nCredits\n=======\n\nCompanies\n---------\n\n|makinacom|_\n\n* `Planet Makina Corpus `_\n* `Contact us `_\n\n\nAuthors\n\n- JeanMichel FRANCOIS aka toutpt \n\nContributors\n\n- Raphael Gaziano aka raphigaziano \n- Alejandro Pereira aka aleGpereira \n- Sylvain Bouchard aka bouchardsyl \n\n.. |makinacom| image:: http://depot.makina-corpus.org/public/logo.gif\n.. _makinacom: http://www.makina-corpus.com\n.. _embed.ly: http://embed.ly\n.. _oembed: http://oembed.com\n.. _jquery.oembed: http://code.google.com/p/jquery-oembed/\n.. _collective.portlet.oembed: http://pypi.python.org/pypi/collective.portlet.oembed\n.. _collective.js.oembed: http://pypi.python.org/pypi/collective.js.oembed\n.. _collective.embedly: http://pypi.python.org/pypi/collective.embedly\n\nChangelog\n=========\n\n2.0.1 (2013-12-09)\n------------------\n\n- Fix JS: Uncaught TypeError: Cannot call method 'match' of undefined\n- Fix vimeo https endpoint\n- Fix twitter user endpoint\n\n\n2.0 (2013-11-21)\n----------------\n\n- fix(js): Replace ie unsupported use of dataset by getAttribute [toutpt]\n- Don't replace a link if the result is a link [toutpt]\n- Fix kinomap endpoint (no more oembed support -> url2embed) [toutpt]\n- Fix internal provider to work with dexterity content types [toutpt]\n\n2.0a4 (2013-05-17)\n------------------\n\n- Tested compatibility with Plone 4.3. [hvelarde]\n- Fixed Javascript typo regarding max height [bouchardsyl]\n\n\n2.0a3 (2013-04-02)\n------------------\n\n- Fix tiles zcml conditional check.\n- Use a template for the tile rendering\n- Add responsive option to oembed tile\n\n\n2.0a2 (2013-01-31)\n------------------\n\n- Fix Plone4.0 compatibility\n\n\n2.0a1 (2013-01-29)\n------------------\n\n- Can use links inside div.oembed too since tinymce don't apply styles to \"a\" well [djay]\n- Code refactored to use a structure with hostname/[lazy_endpoints]\n- Test coverage up to 94 %\n- Add spotify endpoint (open.spotify.com)\n\n1.2.5 (2013-01-07)\n------------------\n\n- Fix soundcloud provider which can use https\n- Add oembed tile if plone.app.tiles is installed\n- Add screenr provider\n- Add test view endpoints_test_view only available with provided buildout\n- Refactor tests to use assertX instead of failUnless\n- Add responsive behavior to img, embed and object tag.\n- Add itunes.apple.com support (iphone app)\n- Add 360.io support (occipital)\n- Add issuu.com support\n\n1.2.4 (2013-01-02)\n------------------\n\n- Add \"proxy-oembed-provider\" to make your Plone an oembed proxy consumer and provider\n- Add twitteruser (api2embed) and activate api2embed everywhere\n- Improve local oembed support for archetypes using primary field\n- Update returned html code to make it responsive (taken from fitVids.js)\n\n1.2.3 (2012-08-24)\n------------------\n\n- Add support for Soundcloud. [aleGpereira]\n\n1.2.2 (2012-07-10)\n------------------\n\n- Make GoogleMaps working with both: maps and mymaps\n- PEP8\n\n\n1.2.1 (2012-04-25)\n------------------\n\n- Fix offline mode (when working without internet)\n\n1.2 (2012-03-15)\n----------------\n\n- add Plone 4.0.x support\n\n1.1 (2012-02-22)\n----------------\n\n- Add collective.oembed.url2embed browser view component\n- Add collective.oembed.superconsumer browser view component\n- Add GoogleMaps, gist.github.com, google calendar, google docs, scribd support\n- Support shorted url with tinyurl.com, goo.gl, bit.ly, t.co, youtu.be, vbly.us\n\n1.0 (2012-01-13)\n----------------\n\n- Fix regex for 5min endpoint.\n- Handle more error: HTTPError, OEmbedError\n- Add url2embed support\n- Add oembed support for instagr.am, Vhx.tv, Official.FM, Nfb.ca\n [raphigaziano]\n- Add url2embed support for picasaweb\n [raphigaziano]\n\n1.0a (2012-01-02)\n-----------------\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/collective.oembed", "keywords": "plone collective oembed", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "collective.oembed", "package_url": "https://pypi.org/project/collective.oembed/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.oembed/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/collective/collective.oembed" }, "release_url": "https://pypi.org/project/collective.oembed/2.0.1/", "requires_dist": null, "requires_python": null, "summary": "oembed integration of consumers and provider for Plone", "version": "2.0.1" }, "last_serial": 939879, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "16df5b12cf1b45c433082756a327032e", "sha256": "64732a514fc732ab5bcdb4998655c30757aa4923c46276c1c31f12904a0876ed" }, "downloads": -1, "filename": "collective.oembed-1.0.tar.gz", "has_sig": false, "md5_digest": "16df5b12cf1b45c433082756a327032e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39381, "upload_time": "2012-01-13T14:43:22", "url": "https://files.pythonhosted.org/packages/6f/de/101499b83f7d4289f82409b16f514c0b3c256a734c5409d0b39a3c86472d/collective.oembed-1.0.tar.gz" } ], "1.0a": [ { "comment_text": "", "digests": { "md5": "4b9f7f7f63dca7c483983d1b729bfa91", "sha256": "194270c907ff7e5f231a5506ef1cea925e91dae101e97317eebf63a2cca571e9" }, "downloads": -1, "filename": "collective.oembed-1.0a.tar.gz", "has_sig": false, "md5_digest": "4b9f7f7f63dca7c483983d1b729bfa91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32140, "upload_time": "2012-01-02T17:34:59", "url": "https://files.pythonhosted.org/packages/a6/a9/2c7653cf193701a356fc87febc30d0667590e359ed44f2a1ce3e06649a61/collective.oembed-1.0a.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "8a4619a7bf24504a89e030604405c28e", "sha256": "f946f691997c2bea7b51a329fd23de7105138c719f0a9491b4b1aef86832d984" }, "downloads": -1, "filename": "collective.oembed-1.1.tar.gz", "has_sig": false, "md5_digest": "8a4619a7bf24504a89e030604405c28e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43175, "upload_time": "2012-02-22T14:43:10", "url": "https://files.pythonhosted.org/packages/7b/bd/a732c4ba49acd5b771357d4c7617bc3f625082c2c1e7fc5cab557752a92b/collective.oembed-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "7208a4b126df673f07762513d48a3975", "sha256": "c9ccd231f370db21e098da8e0a2794aa2f864dfb2a0b71aa1b7745db316a92f8" }, "downloads": -1, "filename": "collective.oembed-1.2.tar.gz", "has_sig": false, "md5_digest": "7208a4b126df673f07762513d48a3975", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43402, "upload_time": "2012-03-15T17:08:57", "url": "https://files.pythonhosted.org/packages/ed/ff/1edec34760bae86c327fdf0f230dcebdeac7f5a7e886b58832a0a51270c5/collective.oembed-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ce07437ce3fb9aaa6cda120855f9b13e", "sha256": "fe03def251cd752fe77d19042c6b1845b5f83e331dadf44d770c850acea8619a" }, "downloads": -1, "filename": "collective.oembed-1.2.1.zip", "has_sig": false, "md5_digest": "ce07437ce3fb9aaa6cda120855f9b13e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65909, "upload_time": "2012-04-25T12:54:00", "url": "https://files.pythonhosted.org/packages/0d/0c/5ad19e9c2706ee96471766f8a8c67d95f14ea4a536629df9569ea02a5975/collective.oembed-1.2.1.zip" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "76898b6bd06c7d7d6b117d363c260883", "sha256": "4918fae0cb5eda08454bc7294b7716014aa7dd85132289bd4d93b5c2e286657e" }, "downloads": -1, "filename": "collective.oembed-1.2.2.zip", "has_sig": false, "md5_digest": "76898b6bd06c7d7d6b117d363c260883", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66040, "upload_time": "2012-07-10T11:31:03", "url": "https://files.pythonhosted.org/packages/1d/2c/adbbd1ce5135cfcf42bacdd92817e850ff2305db75dcbeb428a180e30a5f/collective.oembed-1.2.2.zip" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "4f36f1c239331ef49ceb490abf665603", "sha256": "47410d6ae64b9cd9c0d8af8d2cccb47afa5d715607c00b5689db996393f1dc96" }, "downloads": -1, "filename": "collective.oembed-1.2.3.zip", "has_sig": false, "md5_digest": "4f36f1c239331ef49ceb490abf665603", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66309, "upload_time": "2012-08-24T09:49:09", "url": "https://files.pythonhosted.org/packages/e2/69/17b82efa1d93bd455bc56f0bff2848eb04e2e4eb615deb4bf7351027f20c/collective.oembed-1.2.3.zip" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "3c3140cf91f295f24ab5ceee289d7703", "sha256": "6b106649863c6648b23012c8f6509ed7bdfd52287be5ba3c428d9b03dc010715" }, "downloads": -1, "filename": "collective.oembed-1.2.4.zip", "has_sig": false, "md5_digest": "3c3140cf91f295f24ab5ceee289d7703", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74305, "upload_time": "2013-01-02T15:07:29", "url": "https://files.pythonhosted.org/packages/87/33/b6c0204ebd6fa995288e421e82f99265631dbabdb84a97549093d34334f1/collective.oembed-1.2.4.zip" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "f3e9e221775df8854f3f6aeedb795f63", "sha256": "93878ad7b2683a92a1d3a43698b8151709c9bfaca04ecb3f48de487014f8944c" }, "downloads": -1, "filename": "collective.oembed-1.2.5.zip", "has_sig": false, "md5_digest": "f3e9e221775df8854f3f6aeedb795f63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 97491, "upload_time": "2013-01-07T17:08:15", "url": "https://files.pythonhosted.org/packages/ee/d2/ec50f2de3eddb62cbb7922a50bf134c36c62abfb2cc625cb016f531e8957/collective.oembed-1.2.5.zip" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "2576e42819e85b407c7d4ee2b3630e4f", "sha256": "48baf42116e496564f8263683488a1f355cbabbfef26764d38f56c44e30d29ca" }, "downloads": -1, "filename": "collective.oembed-2.0.zip", "has_sig": false, "md5_digest": "2576e42819e85b407c7d4ee2b3630e4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99742, "upload_time": "2013-11-21T10:56:36", "url": "https://files.pythonhosted.org/packages/bc/c5/0900f60898bae8f0144ed21c69c562b6c58c73bccdb49484a86398352835/collective.oembed-2.0.zip" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "a3d907eb2770db026b4c0ad7d2a88442", "sha256": "3e726e2cd2500cead770aa405533e63bd92f985dce31acc1832b7563b998bdfe" }, "downloads": -1, "filename": "collective.oembed-2.0.1.zip", "has_sig": false, "md5_digest": "a3d907eb2770db026b4c0ad7d2a88442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101238, "upload_time": "2013-12-09T14:34:45", "url": "https://files.pythonhosted.org/packages/81/6d/b7f1274b60814c4e178341dd509e5e4b412239556050feb88da6d70c0757/collective.oembed-2.0.1.zip" } ], "2.0a1": [ { "comment_text": "", "digests": { "md5": "8cb5a1aeae5f01c1a5aa6a65c4214008", "sha256": "f3564e4a2fb918273115b3de4e06bb5491afb3ad25ab3265d177708e23e552f3" }, "downloads": -1, "filename": "collective.oembed-2.0a1.zip", "has_sig": false, "md5_digest": "8cb5a1aeae5f01c1a5aa6a65c4214008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98619, "upload_time": "2013-01-29T16:54:51", "url": "https://files.pythonhosted.org/packages/14/03/192441c260f37d97d721fe73dd684b2ed218d69db060a8b16b2e48143c56/collective.oembed-2.0a1.zip" } ], "2.0a2": [ { "comment_text": "", "digests": { "md5": "9d6fc1415edf3cb99a6baf1a48292243", "sha256": "a6d185cb3997ca8e150492a781ff988de549f169df8c0cdccb5cd6d217bd9798" }, "downloads": -1, "filename": "collective.oembed-2.0a2.zip", "has_sig": false, "md5_digest": "9d6fc1415edf3cb99a6baf1a48292243", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98887, "upload_time": "2013-01-31T13:11:46", "url": "https://files.pythonhosted.org/packages/65/a1/7ffcecf9edfe99e36130ebeaf89fe0fae0aa140cce2cea0ab2a0a2748185/collective.oembed-2.0a2.zip" } ], "2.0a3": [ { "comment_text": "", "digests": { "md5": "2d0866680d1a121285970511f059c035", "sha256": "e9b6642830f231899e579f5bb05425c3307ea49724a348dd1fdfbfe11751c1bd" }, "downloads": -1, "filename": "collective.oembed-2.0a3.zip", "has_sig": false, "md5_digest": "2d0866680d1a121285970511f059c035", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99608, "upload_time": "2013-04-02T09:58:28", "url": "https://files.pythonhosted.org/packages/15/78/62c1944ba7b4ed39ebdff81a9760f87b0f27c89c89bbe54be9ab5a781f41/collective.oembed-2.0a3.zip" } ], "2.0a4": [ { "comment_text": "", "digests": { "md5": "a97a6febba6ed8afd2cafb43a810711c", "sha256": "965eb912619a467b4b416d00d77524019d340b6d03b6645368826af92ff4a09a" }, "downloads": -1, "filename": "collective.oembed-2.0a4.zip", "has_sig": false, "md5_digest": "a97a6febba6ed8afd2cafb43a810711c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 100272, "upload_time": "2013-05-17T12:14:10", "url": "https://files.pythonhosted.org/packages/59/ba/3cb3c69daf08cad20e5312d00845983572b28f34f0aa4b8b3448feb29cca/collective.oembed-2.0a4.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a3d907eb2770db026b4c0ad7d2a88442", "sha256": "3e726e2cd2500cead770aa405533e63bd92f985dce31acc1832b7563b998bdfe" }, "downloads": -1, "filename": "collective.oembed-2.0.1.zip", "has_sig": false, "md5_digest": "a3d907eb2770db026b4c0ad7d2a88442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101238, "upload_time": "2013-12-09T14:34:45", "url": "https://files.pythonhosted.org/packages/81/6d/b7f1274b60814c4e178341dd509e5e4b412239556050feb88da6d70c0757/collective.oembed-2.0.1.zip" } ] }