{ "info": { "author": "Andr\u00e1s Veres-Szentkir\u00e1lyi", "author_email": "vsza@vsza.hu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Topic :: Communications :: Ham Radio", "Topic :: Multimedia :: Video :: Conversion" ], "description": "SSTV generator in pure Python\n=============================\n\n[![Build Status](https://travis-ci.org/dnet/pySSTV.svg?branch=master)](https://travis-ci.org/dnet/pySSTV)\n\nPySSTV generates SSTV modulated WAV files from any image that PIL can open\n(PNG, JPEG, GIF, and many others). These WAV files then can be played by any\naudio player connected to a shortwave radio for example.\n\nMy main motivation was to understand the internals of SSTV in practice, so\nperformance is far from optimal. I tried keeping the code readable, and only\nperformed such optimizations that wouldn't have complicated the codebase.\n\nCommand line usage\n------------------\n\n $ python -m pysstv -h\n usage: __main__.py [-h]\n [--mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120,PD160,PD180,PD240,Robot8BW,Robot24BW}]\n [--rate RATE] [--bits BITS] [--vox] [--fskid FSKID]\n [--chan CHAN]\n image.png output.wav\n\n Converts an image to an SSTV modulated WAV file.\n\n positional arguments:\n image.png input image file name\n output.wav output WAV file name\n\n optional arguments:\n -h, --help show this help message and exit\n --mode {MartinM1,MartinM2,ScottieS1,ScottieS2,Robot36,PasokonP3,PasokonP5,PasokonP7,PD90,PD120D160,PD180,PD240,Robot8BW,Robot24BW}\n image mode (default: Martin M1)\n --rate RATE sampling rate (default: 48000)\n --bits BITS bits per sample (default: 16)\n --vox add VOX tones at the beginning\n --fskid FSKID add FSKID at the end\n --chan CHAN number of channels (default: mono)\n\nPython interface\n----------------\n\nThe `SSTV` class in the `sstv` module implements basic SSTV-related\nfunctionality, and the classes of other modules such as `grayscale` and\n`color` extend this. Most instances implement the following methods:\n\n - `__init__` takes a PIL image, the samples per second, and the bits per\n sample as a parameter, but doesn't perform any hard calculations\n - `gen_freq_bits` generates tuples that describe a sine wave segment with\n frequency in Hz and duration in ms\n - `gen_values` generates samples between -1 and +1, performing sampling\n according to the samples per second value given during construction\n - `gen_samples` generates discrete samples, performing quantization\n according to the bits per sample value given during construction\n - `write_wav` writes the whole image to a Microsoft WAV file\n\nThe above methods all build upon those above them, for example `write_wav`\ncalls `gen_samples`, while latter calls `gen_values`, so typically, only\nthe first and the last, maybe the last two should be called directly, the\nothers are just listed here for the sake of completeness and to make the\nflow easier to understand.\n\nLicense\n-------\n\nThe whole project is available under MIT license.\n\nUseful links\n------------\n\n - receive-only \"counterpart\": https://github.com/windytan/slowrx\n - free SSTV handbook: http://www.sstv-handbook.com/\n - robot 36 encoder/decoder in C: https://github.com/xdsopl/robot36/\n\nDependencies\n------------\n\n - Python 2.7 (tested on 2.7.9; 2.6 might work, but test suite lacks support)\n or 3.x (tested on 3.2, 3.3, 3.4 and 3.5)\n - Python Imaging Library (Debian/Ubuntu package: `python-imaging`)", "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/dnet/pySSTV", "keywords": "HAM SSTV slow-scan television Scottie Martin Robot Pasokon", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "PySSTV", "package_url": "https://pypi.org/project/PySSTV/", "platform": "", "project_url": "https://pypi.org/project/PySSTV/", "project_urls": { "Homepage": "https://github.com/dnet/pySSTV" }, "release_url": "https://pypi.org/project/PySSTV/0.4.3/", "requires_dist": null, "requires_python": "", "summary": "Python classes for generating Slow-scan Television transmissions", "version": "0.4.3" }, "last_serial": 5524757, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "562298b820ed11008bf4cc363a28f213", "sha256": "0a02a45e8e22c02715f150287f9fd3fd7ce43bd693c48cd96c7927916dc9e158" }, "downloads": -1, "filename": "PySSTV-0.1.3.tar.gz", "has_sig": false, "md5_digest": "562298b820ed11008bf4cc363a28f213", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8397, "upload_time": "2013-06-24T13:05:13", "url": "https://files.pythonhosted.org/packages/71/89/bdd744f4b02484c03b0d35048dc8f7bc41046eeeb4de2d5e6eb640a31392/PySSTV-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b7b4979bd166f93f3dae199a0443d46e", "sha256": "666488e4bef321051740cf75dee965463a5ebec92a20fd7e4112ccd2b3130732" }, "downloads": -1, "filename": "PySSTV-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b7b4979bd166f93f3dae199a0443d46e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8396, "upload_time": "2013-06-24T13:27:14", "url": "https://files.pythonhosted.org/packages/c9/a6/207bac9c2f947c29ecac1bf47c87a1105a68b2cb2a574e8554b2fdd46a86/PySSTV-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "838b937a414273fe25c675901dfe988a", "sha256": "838bcc1b928772d3f04937ed1b84f0e2389e8b19c3632bc15a8e0900131701d0" }, "downloads": -1, "filename": "PySSTV-0.1.5.tar.gz", "has_sig": true, "md5_digest": "838b937a414273fe25c675901dfe988a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8460, "upload_time": "2013-06-24T15:06:30", "url": "https://files.pythonhosted.org/packages/9d/4d/0a1e0830b61c8dc348fd0144eaae5722d82d1863a0860e7250fab16452d8/PySSTV-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "364fdb24b200051cbcc9a9a644e7996a", "sha256": "bc35caaf7adcfdd1fc407060e546d270ce02d5f316e723ea7a891b12c15f0630" }, "downloads": -1, "filename": "PySSTV-0.1.6.tar.gz", "has_sig": true, "md5_digest": "364fdb24b200051cbcc9a9a644e7996a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8481, "upload_time": "2013-06-26T09:24:21", "url": "https://files.pythonhosted.org/packages/47/10/b2eb82de697f8b87b8df8feac5cb57c71fccf92fb2a0dbe6fa25872419d9/PySSTV-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "df3b7ec14f9a21f90bc9d63890020ef2", "sha256": "5d5c361bd95474cb0946cae287af1ac265664e5520aa2ae27bb43f9e07bda718" }, "downloads": -1, "filename": "PySSTV-0.1.7.tar.gz", "has_sig": true, "md5_digest": "df3b7ec14f9a21f90bc9d63890020ef2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8491, "upload_time": "2013-07-01T14:48:09", "url": "https://files.pythonhosted.org/packages/14/ad/b9841614bc08253b4cc69555e6a6db600ade963be5e9d1bcf1a32d0cb67e/PySSTV-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "9d20fac87672923669ba2164a48baa02", "sha256": "29e7118eedbce01d3e87c1bca76ae82dafde83df3e6ae859dbce9bdabbb44aa7" }, "downloads": -1, "filename": "PySSTV-0.1.8.tar.gz", "has_sig": true, "md5_digest": "9d20fac87672923669ba2164a48baa02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8580, "upload_time": "2013-07-01T21:25:45", "url": "https://files.pythonhosted.org/packages/c0/5e/3f8850a7c1d1077f19a71c6716042e88106f8c3b0dfe337e82f5321f2de3/PySSTV-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "cb34a91561f6190d0718c8fbda13577c", "sha256": "2b0a21cde5aee323112ab7016ce6f87be529d312b8e67275b9ce0f58a336014a" }, "downloads": -1, "filename": "PySSTV-0.1.9.tar.gz", "has_sig": true, "md5_digest": "cb34a91561f6190d0718c8fbda13577c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8571, "upload_time": "2013-07-02T15:49:35", "url": "https://files.pythonhosted.org/packages/69/84/89b50bae6954b433812e2b6c0c9664d7fa117878492f7c471218f32af6a3/PySSTV-0.1.9.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2a67210a2576f620b34f70c84e9ef87d", "sha256": "223462f739e5c7f6702f7e07f93b9b9003464c83554f27470b29fdac7e0bc060" }, "downloads": -1, "filename": "PySSTV-0.2.tar.gz", "has_sig": true, "md5_digest": "2a67210a2576f620b34f70c84e9ef87d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10468, "upload_time": "2013-11-04T23:06:29", "url": "https://files.pythonhosted.org/packages/18/56/081a8b816bfde428acef5ef0dbfecaf32dde0a0ca914fdd515019103f31a/PySSTV-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1be78e1c31d31dcf2e50b7d2769dfb24", "sha256": "76383a71cf7b2eb784d18124122fc289acf258a5962cf31bb6949b8bdc2efe8d" }, "downloads": -1, "filename": "PySSTV-0.2.1.tar.gz", "has_sig": true, "md5_digest": "1be78e1c31d31dcf2e50b7d2769dfb24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10803, "upload_time": "2013-11-05T20:43:26", "url": "https://files.pythonhosted.org/packages/ce/5d/68c1ecbfd6f76c85967f19a4d0833f6935d846a12fe12e440c5d10496b65/PySSTV-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "d5d4caeee8f78fe80309766a60da7ce8", "sha256": "4eb1587cedc8a5c09df02f50110939dd7a4bfa769c3c161cb090afb1f52c11ea" }, "downloads": -1, "filename": "PySSTV-0.2.2.tar.gz", "has_sig": true, "md5_digest": "d5d4caeee8f78fe80309766a60da7ce8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10972, "upload_time": "2013-11-09T19:26:31", "url": "https://files.pythonhosted.org/packages/a8/25/d3bc9c69046242f81f9c3249a0f8d94fecb2f356b2ab21d18debefbf1061/PySSTV-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "34da78b6f3735dc67838774d02c84793", "sha256": "b60b58a44f478750cd25f5f693f2931c59e8bb499087419ac562a34b991c8f8a" }, "downloads": -1, "filename": "PySSTV-0.2.3.tar.gz", "has_sig": true, "md5_digest": "34da78b6f3735dc67838774d02c84793", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11267, "upload_time": "2013-11-23T11:39:58", "url": "https://files.pythonhosted.org/packages/24/10/8054b51ce5be4b9355ae53ec22c8f1cb459d136ff74f9ea764a02888e64b/PySSTV-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "7b80348eabc5e67b7fdf1b019d6c8b22", "sha256": "8ce72c8ec43bcbd61c84176a4d8e6a469ab7e5126ae0e83f990f68256a278455" }, "downloads": -1, "filename": "PySSTV-0.2.4.tar.gz", "has_sig": true, "md5_digest": "7b80348eabc5e67b7fdf1b019d6c8b22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11270, "upload_time": "2014-01-14T08:46:10", "url": "https://files.pythonhosted.org/packages/3a/76/eb0fff4f0285865a39c6049e285baba8cf78c3172614905f1561c7b398bf/PySSTV-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "4b0790f0b8b20d4cae85df242a03a2b9", "sha256": "a673eaa1c483093482393901cc087acd103fbb5fc1691a0db9f260dae2de2c15" }, "downloads": -1, "filename": "PySSTV-0.2.5.tar.gz", "has_sig": true, "md5_digest": "4b0790f0b8b20d4cae85df242a03a2b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11558, "upload_time": "2014-04-23T08:37:36", "url": "https://files.pythonhosted.org/packages/81/61/08b3543d729ce4400f48ae316b144ffb26a6dcb69d065a720a7ec525d5b9/PySSTV-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "796294b99dd551f6229a4108737c6b23", "sha256": "7087d8fcd2cef9199029e7f9cd9b6e36454dd9474e28eeb7fd6f1a40a6ca3253" }, "downloads": -1, "filename": "PySSTV-0.2.6.tar.gz", "has_sig": false, "md5_digest": "796294b99dd551f6229a4108737c6b23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12036, "upload_time": "2016-02-22T13:50:25", "url": "https://files.pythonhosted.org/packages/02/a8/5e8c243d4b24b11cd020d6beb0b4c03cc9f007829b635371db7b1cb70cf8/PySSTV-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "a398748040484d4140b6e752a21b3df1", "sha256": "0f3cd8054817e2712f4185db3780f511c172b40bdac2e3907bba8ef14ebd1bff" }, "downloads": -1, "filename": "PySSTV-0.2.7.tar.gz", "has_sig": true, "md5_digest": "a398748040484d4140b6e752a21b3df1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12034, "upload_time": "2016-02-22T13:52:43", "url": "https://files.pythonhosted.org/packages/63/d4/4abd28d500b1c9d8cb66178500a61b093e31297a66a611805f5c525e3fdd/PySSTV-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "84349d5e321531b6213af33a4aba3475", "sha256": "4ffc4fa2c64e8315b00de94d9e547e7433aed4693d9ee2088816aa68f4563def" }, "downloads": -1, "filename": "PySSTV-0.2.8.tar.gz", "has_sig": true, "md5_digest": "84349d5e321531b6213af33a4aba3475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13819, "upload_time": "2017-01-03T14:10:53", "url": "https://files.pythonhosted.org/packages/cc/ab/475fe5b9578900897c109d442150fb606026565229426edc7b7d1a7a8bdf/PySSTV-0.2.8.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "1a1265b8ffded103d90eaf8db0e20e97", "sha256": "cd941c9d06f47d82d9a348976a649582cc74556c2180f56fd37edd3773a2daa8" }, "downloads": -1, "filename": "PySSTV-0.3.tar.gz", "has_sig": true, "md5_digest": "1a1265b8ffded103d90eaf8db0e20e97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13758, "upload_time": "2017-01-12T11:59:52", "url": "https://files.pythonhosted.org/packages/9a/76/c4a703fcacb12f2cbcd8e3cb62bba0d49af58f7e3397007c2b85d60b549b/PySSTV-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "4aafc8f3440cf1f0d6101aa3d987dbda", "sha256": "93dd09b44bd8f3a261e3dac8e042b2f40c2f665a5f54ab6ecdfabd12cf8e1702" }, "downloads": -1, "filename": "PySSTV-0.3.1.tar.gz", "has_sig": false, "md5_digest": "4aafc8f3440cf1f0d6101aa3d987dbda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13537, "upload_time": "2017-10-24T12:52:32", "url": "https://files.pythonhosted.org/packages/2f/6f/fdb9e27060407171e870e044b92286d1ae8f35b3dbf04833a1d36143a9c2/PySSTV-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "bee8fddcc210e59c3af131b4a638e50d", "sha256": "1c0edb1c542d7ddc3b826bdde6921e35f21033cd70bb31f638929c3630fd8434" }, "downloads": -1, "filename": "PySSTV-0.3.2.tar.gz", "has_sig": true, "md5_digest": "bee8fddcc210e59c3af131b4a638e50d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13564, "upload_time": "2018-02-22T08:22:38", "url": "https://files.pythonhosted.org/packages/09/ab/c61aeeba37b1116e828adaafd344fb99305fa10ad775f10339046553924a/PySSTV-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "0529be631b6980ec98905410339b3dc3", "sha256": "4ebc8258ec23eb8e95eb1c8bda65a1979517ae25aed2c353a48478e063d32b45" }, "downloads": -1, "filename": "PySSTV-0.4.tar.gz", "has_sig": true, "md5_digest": "0529be631b6980ec98905410339b3dc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13916, "upload_time": "2018-02-25T12:26:08", "url": "https://files.pythonhosted.org/packages/70/35/77256dcb2f0b665b86327f512c286b027db78befd8facf3210a2da7fdca4/PySSTV-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "6c3ad8134f0ca04b181293350eb71055", "sha256": "781396649139258ea54ac85c4fb5c5f8b2789e96521dfd50e8fca7bcc055061f" }, "downloads": -1, "filename": "PySSTV-0.4.1.tar.gz", "has_sig": true, "md5_digest": "6c3ad8134f0ca04b181293350eb71055", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14268, "upload_time": "2019-01-22T13:53:39", "url": "https://files.pythonhosted.org/packages/78/2b/3470e4f5208489464ecc3004ab323c9935718619f9d81ef10985f1291faa/PySSTV-0.4.1.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "69549f491228185b9219605b90786f04", "sha256": "1bea9ebdc81379f469a6461270023ea00b480be2d81d7903fe2e1ffbd0d9188d" }, "downloads": -1, "filename": "PySSTV-0.4.3.tar.gz", "has_sig": true, "md5_digest": "69549f491228185b9219605b90786f04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 223173, "upload_time": "2019-07-12T20:06:29", "url": "https://files.pythonhosted.org/packages/07/18/9c3f36cab0c67f6f175cd4a374b55e6b41671de80487585071faa52c1f8c/PySSTV-0.4.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "69549f491228185b9219605b90786f04", "sha256": "1bea9ebdc81379f469a6461270023ea00b480be2d81d7903fe2e1ffbd0d9188d" }, "downloads": -1, "filename": "PySSTV-0.4.3.tar.gz", "has_sig": true, "md5_digest": "69549f491228185b9219605b90786f04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 223173, "upload_time": "2019-07-12T20:06:29", "url": "https://files.pythonhosted.org/packages/07/18/9c3f36cab0c67f6f175cd4a374b55e6b41671de80487585071faa52c1f8c/PySSTV-0.4.3.tar.gz" } ] }