{"id":26490072,"url":"https://github.com/guysoft/moment","last_synced_at":"2026-05-10T14:46:09.590Z","repository":{"id":10145410,"uuid":"12221708","full_name":"guysoft/moment","owner":"guysoft","description":"A simple screen capture API based on PhantomJS, CasperJS, Redis, RQ, Flask, Gunicorn and good intentions.","archived":false,"fork":false,"pushed_at":"2013-08-19T16:36:59.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-05-01T18:57:47.267Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guysoft.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":null,"funding":null,"license":"LICENSE.rst","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-19T16:35:18.000Z","updated_at":"2017-01-03T11:58:21.000Z","dependencies_parsed_at":"2022-09-17T18:10:08.956Z","dependency_job_id":null,"html_url":"https://github.com/guysoft/moment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guysoft%2Fmoment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guysoft%2Fmoment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guysoft%2Fmoment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guysoft%2Fmoment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guysoft","download_url":"https://codeload.github.com/guysoft/moment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244574733,"owners_count":20474818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-20T07:55:08.497Z","updated_at":"2026-05-10T14:46:04.473Z","avatar_url":"https://github.com/guysoft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Moment\n======\n\nA simple screen capture API based on PhantomJS, CasperJS, Redis, RQ, Flask, Gunicorn and good intentions...\n\nWe're just sitting on the shoulders of giants.\n\nContributing\n------------\n\nPlease help:\n\n* Code_\n* Issues_\n* Demo_\n\nThe goal of Moment is a simple, easy to deploy and use, API for screen captures.\n\nThe feature set will remain minimal, and the code should be clean and highly readable.\n\nWe'd like to complete the following, and only the following, to be feature complete for V1:\n\n* Expose RESTful API endpoints for users\n* Create a UI for user accounts\n* Implement a simple and elegant looking solution for watermarking images with their source URL and any license declaration\n* Implement a proper backup and restore mechanism for the Redis database\n* Implement image cropping\n* Expose 'delay' and 'event' arguments for the capture method\n\n\nCapturing\n---------\n\nWe have a demo_ setup with a test user. Please make some test captures, and if you have any issues, please file a bug_.\n\nHere are the temporary credentials:\n\n* **username:** test_user\n* **key:** c413c0979c2c42bbbc1adb3c55797851\n* **token:** 6cdf4a492ecd4500ec80b6f4d95d0529\n\nThe current status of the code exposes a simple capture API - you pass a set of valid parameters, and you get back a file in return. Some parameters are required, and the rest have sensible defaults.\n\nRequired\n++++++++\n\n* **user:** the user's key\n* **token:** the user's token\n* **url:** the URL to capture\n\nOptional\n++++++++\n\n* **format:** 'png' or 'pdf'. 'png' default.\n* **viewport:** 'width,height'. '1280,800' default.\n* **target:** 'element' or '#id' or '.class'. 'body' default.\n* and more to be documented.....\n\n**Note:**\n\nIf you need to use '?' or '#' symbols as values in the query - that is fine, just make sure they are encoded.\n\n* ? : %3F\n* # : %23\n\nExamples\n++++++++\n\nSome example captures:\n\n* `The Public Knowledge Workshop`_\n* `Education Expenditure from Open Budget Comparator`_\n* `Map Chart from the Google Charts Gallery`_\n* `D3 Voronoi Tesselation`_\n* `YouTube Featured Videos Section`_\n* `Ynet (Israeli Tabloid)`_\n* `Sydney Morning Herald (Australian Tabloid)`_\n\n\nSetting up an instance\n----------------------\n\n* Make sure you have Python_, CasperJS_, PhantomJS_ and Redis_ available on your system\n* Create a virtualenv called **moment**, in your preferred way\n* Clone the repo into your project folder: e.g: 'git clone git@github.com:pwalsh/moment.git .'\n* Install the pip-managed requirements: 'pip install -r -U requirements.txt'\n* Run the server. You can run Flask's development server for debugging with: 'python dev.py' from the project root. Alternatively, Run Gunicorn with 'gunicorn moment:app'\n* Visit 127.0.0.1:9000 in your browser.\n* Currently, only the /capture/ endpoint is implemented. This is a convenience endpoint that any user can hit with a set of parameters, and have a file returned. See examples above for how to construct a query to /capture.\n\n.. _Python: http://python.org/download/releases/2.7.5/\n.. _CasperJS: http://casperjs.org/\n.. _PhantomJS: http://phantomjs.org/\n.. _Redis: http://redis.io/\n.. _bug: https://github.com/pwalsh/moment/issues?state=open\n.. _demo: http://moment.prjts.com/\n.. _Code: https://github.com/pwalsh/moment\n.. _Issues: https://github.com/pwalsh/moment/issues?state=open\n.. _Demo: http://moment.prjts.com/\n.. _The Public Knowledge Workshop: http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://www.hasadna.org.il/\n.. _Education Expenditure from Open Budget Comparator: http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://compare.open-budget.org.il/%3F00/0020\u0026target=.frame\n.. _Ynet (Israeli Tabloid): http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://www.ynet.co.il/\n.. _Map Chart from the Google Charts Gallery: http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart%23Example\u0026target=.framebox\n.. _D3 Voronoi Tesselation: http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://bl.ocks.org/mbostock/4060366\u0026target=iframe\n.. _YouTube Featured Videos Section: http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://www.youtube.com/\u0026target=.lohp-newspaper-shelf\n.. _Sydney Morning Herald (Australian Tabloid): http://moment.prjts.com/capture/?user=c413c0979c2c42bbbc1adb3c55797851\u0026token=6cdf4a492ecd4500ec80b6f4d95d0529\u0026url=http://www.smh.com.au\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguysoft%2Fmoment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguysoft%2Fmoment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguysoft%2Fmoment/lists"}