Package: ricecooker
ricecookerThericecookerlibrary is a framework for automating the conversion of educational content into
Kolibri content channels and uploading them toKolibri Studio,
which is the central content server forKolibri.📚 Ricecooker docsVisit the documentation site at📚 ricecooker.readthedocs.iofor the full details aboutinstallation,getting started,API reference,
andcode examples.Overview of Kolibri contentricecookeris used to take openly licensed educational content available on the
web and convert it into an offline-friendly package that can be imported into Kolibri.The basic process of getting new content into Kolibri is as follows:UPLOADyour content to Kolibri Studio either manually through the Kolibri Studio
web interface or programmatically using aricecooker-based content integration script.PUBLISHthe channel on Kolibri Studio to make it accessible for use in Kolibri.IMPORTthe the channel into Kolibri using the channel token displayed in
Kolibri Studio after the PUBLISH step is done.The diagram below illustrates how content flows within the Kolibri ecosystem
and highlights the part which is covered by thericecookerframework (bottom left).External content sources (left) are first uploaded toKolibri Studio(middle), so they can be used in theKolibri Learning Platform(right).Further readingTheRicecooker docswebsite is the best
place to learn about writing automated content integration scripts.Here are some links to other documents and guides you can read to learn about
the other parts of the Kolibri content platform:TheKolibri Content Integration Guideis a comprehensive guide to the decisions, processes, and tools for integrating
external content sources for use in the Kolibri Learning Platform.Read theKolibri Studio docsto learn more about the Kolibri Studio featuresRead theKolibri docsto learn
how to install Kolibri on your machine (useful for testing channels)=======
History0.6.46 (2020-09-21)Addricecooker.utils.youtube, containing utilities for handling and caching YouTube videos and playlists.Improve validation ofmandnmastery model values inExerciseNode.0.6.45 (2020-07-25)Remove SushiBar remote monitoring and remote command functionality0.6.44 (2020-07-16)Documentation overhaul and refresh, seericecooker.readthedocs.io <https://ricecooker.readthedocs.io/>__Add support for specifying a Channel taglineEnsure we sendextra_fieldsdata for all node typesMake--resetbehavior the defaultRemove legacy code aroundcompatibiliry_modeand BaseChef classImproved caching logic (no caching for thumbnails and local paths, always cache youtube downloads)Ensure chefs clean up after run (automatic temp files removal)Addedsave_channel_tree_as_jsonfull channel metadata as part of every run.Added support for web content archivingFurther improvements to loggingBugfix: deep deterministic cache keys for nested dicts values inffmpeg_settings0.6.42 (2020-04-10)Added--sample Ncommand line option. Run script with--sample 10to
produce a test version of the channel with 10 randomly selected nodes from
the full channel. Use this to check transformations are working as expected.Addeddryruncommand. Use the command./sushichef.py dryrunto run the
chef as normal but skip the step where the files get uploaded to Studio.Added HTTP proxy functionality for YouTubeVideoFile and YouTubeSubtitleFile
Set thePROXY_LISTenv variable to a;-separated list of{ip}:{port}.
Ricecooker will detect the presence of thePROXY_LISTand use it when
accessing resources via YoutubeDL. Alternatively, setUSEPROXYenv var
to use a list of free proxy servers, which are very slow and not reliable.Improved colored logging functionality and customizability of logging output.0.6.40 (2020-02-07)Changed default behaviour to upload the staging tree instead of the main treeAdded--deployflag to reproduce old bahavior (upload to main tree)Added thumbnail generating methods for audio, HTML5, PDF, and ePub nodes.
Set thederive_thumbnail=Truewhen creating the Node instance, or pass the
command line argument--thumbnailsto generate thumbnails for all nodes.
Note: automatic thumbnail generation will only work ifthumbnailis None.0.6.38 (2019-12-27)Added support theh5pcontent kind andh5pfile typeRemoved monkey-patching oflocalStorageanddocument.cookiein the helper methoddownload_static_assetsAdded validation logic for tagsImproved error reporting0.6.36 (2019-09-25)Added support for tags using theJsonChefworkflowAdded validation step to ensure subtitles file are unique for each language codeDocument newSlidesShowcontent kind coming in Kolibri 0.13Added docs with detailed instruction for content upload and update workflowsBugfixes to file extension logic and improved error handling around subtitles0.6.32 (2019-08-01)Updated documentation to use top-level headingsRemoved support for Python 3.4Removed support for the "sous chef" workflow0.6.31 (2019-07-01)Handle more subtitle convertible formats:SRT,TTML,SCC,DFXP, andSAMI0.6.30 (2019-05-01)Updated docs build scripts to make ricecooker docs available on read the docsAddedcorrectionscommand line script for making bulk edits to content metadataAddedStudioApiclient to support CRUD (created, read, update, delete) Studio actionsAdded pdf-splitting helper methods (seericecooker/utils/pdf.py)0.6.23 (2018-11-08)Updatedle-utilsandpressurcookerdependencies to latest versionAdded support for ePub files (EPubFiles can be added ofDocumentNodes)Added tag supportChanged default value forSTUDIO_URLtoapi.studio.learningequality.orgAddedaggregatorandproviderfields for content nodesVarious bugfixes to image processing in exercisesChanged validation logic to useself.filenameto check file format is inself.allowed_formatsAddedis_youtube_subtitle_file_supported_languagehelper function to support importing youtube subsAddedsrt2vttsubtitles conversionAdded static assets downloader helper method inutils.downloader.download_static_assetsAdded LineCook chef functions to--generateCSV from directory structureFixed the alwaysrandomize=TruebugDocs: general content node metadata guidelinesDocs: video compression instructions and helper scriptsconvertvideo.batandconvertvideo.sh0.6.17 (2018-04-20)Added support forroleattribute on ConentNodes (currentlycoach||learner)Update pressurecooker dependency (to catch compression errors)Docs improvements, seehttps://github.com/learningequality/ricecooker/tree/master/docs0.6.15 (2018-03-06)Added support for non-mp4 video files, with auto-conversion using ffmpeg. Seegit diff b1d15fa 87f2528Added CSV exercises workflow support toLineCookchef classAdded --nomonitor CLI argument to disable sushibar functionalityDefined new ENV variables:PHANTOMJS_PATH: set this to a phantomjs binary (instead of assuming one in node_modules)STUDIO_URL (alias CONTENTWORKSHOP_URL): set to URL of Kolibri Studio server where to upload filesVarious fixes to support sushi chefsRemovedminimize_html_css_jsutility function fromricecooker/utils/html.pyto remove dependency oncss_html_js_minifyand support Py3.4 fully.0.6.9 (2017-11-14)Changed default logging level to --verboseAdded support for cronjobs scripts via--cmdsock(see docs/daemonization.md)Added tools for creating HTML5Zip files in utils/html_writer.pyAdded utility for downloading HTML with optional js support in utils/downloader.pyAdded utils/path_builder.py and utils/data_writer.py for creating souschef archives
(zip archive that contains files in a folder hierarchy + Channel.csv + Content.csv)0.6.7 (2017-10-04)Sibling content nodes are now required to have unique source_idThe fieldcopyright_holderis required for all licenses other than public domain0.6.7 (2017-10-04)Sibling content nodes are now required to have unique source_idThe fieldcopyright_holderis required for all licenses other than public domain0.6.6 (2017-09-29)AddedJsonTreeChefclass for creating channels from ricecooker json treesAddedLineCookchef class to support souschef-based channel workflows0.6.4 (2017-08-31)Addedlanguageattribute forContentNode(string key in internal repr. defined in le-utils)Madelanguagea required attribute for ChannelNodeEnabled sushibar.learningequality.org progress monitoring by default
Set SUSHIBAR_URL env. var to control where progress is reported (e.g.http://localhost:8001)Updated le-utils and pressurecooker dependencies to latest0.6.2 (2017-07-07)Clarify ricecooker is Python3 only (for now)Use https:// and wss:// for SuhiBar reporting0.6.0 (2017-06-28)Remote progress reporting and logging to SushiBar (MVP version)New API based on the SuchiChef classesSupport existing old-API chefs in compatibility mode0.5.13 (2017-06-15)Last stable release before SushiBar functionality was addedRenamed --do-not-activate argument to --stage0.1.0 (2016-09-30)First release on PyPI.