{ "info": { "author": "Charles Watkins", "author_email": "chris17453@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7" ], "description": "# ttygif\n\nA full featured text to gif conversion utility, that just works. It's in beta, so expect rough edges.\n\n## Why use ttygif?\n\n- its fast, and easy to install\n- can be used with a pipe\n- it can be scripted\n- it can read asciicast files\n- it runs headless\n- perfect fit for CI/CD\n\n## install\n\n```bash\n## requirements gcc and python development libs\npip install ttygif --user\n```\n\n## It's portable\n\nttygif is self contained with no dependencys other than python. GIF encoding \nand termal emulation are both implimented with internal cython code. No system \nfonts are required. All you need to get ttygif to work is a c compiler,\npython and its development libs. ttygif is a cython project.\n\n\n## usage\n\n```\nttygif version 1.0.792\nusage: ttygif [-h] [--input FILE] [--output FILE] [--loop COUNT] [--delay MS]\n [--record FILE] [--dilation RATE] [--fps FPS] [--width WIDTH]\n [--height HEIGHT] [--debug]\n\ntty output to gif\n\noptional arguments:\n -h, --help show this help message and exit\n --input FILE asciinema .cast file (default: None)\n --output FILE gif output file (default: None)\n --loop COUNT number of loops to play, 0=unlimited (default: 0)\n --delay MS delay before restarting gif in milliseconds (default: 100)\n --record FILE output generated cast data to file (default: None)\n --dilation RATE process events at a faster or slower rate of time (default:\n 1)\n --fps FPS encode at (n) frames per second (0-25) 0=speed of cast\n file, min 3ms (default: 0)\n --width WIDTH change character width of gif, default is 80 or what is in\n the cast file (default: None)\n --height HEIGHT change character height of gif, default is 25 or what is in\n the cast file (default: None)\n --debug show debuging statistics (default: \n```\n\n## themes\nTheming is based on the idea of branding your work for display in project repositories, ci/cd and online.\n\n### theme support\n\n- user directory. custom themes can be placed in the user directory under '~/.ttygif'\n- layers above and below the terminal image\n- transparency in layers\n- layers can be 1:1, 9slice (scale and tiled)\n- layers support cropping and positioning\n- palettes are defined by themes\n- all layers are mapped to this palette\n\n### shipped themes\n\n- default (256 color xterm palette)\n- default-4bit (16 colorxterm palette)\n- default-2bit (monochrome palette)\n- windows7 (windows style wrapped terminal)\n- game (8 bit inspired frame)\n\n\n## file size\n\nGif's are not the best compresed video format, however ttygif has all ability the format allows.\nBit reduction results in slightly smaller files For example The folowing table is made from the htop example:\n\n- Specs: 79 frames at 1 FPS for 13.5 seconds\n\n| COLORS | Bit Depth | Size | Change |\n|--------|-----------|------|--------|\n| 256 | 8 | 189k | 0% |\n| 16 | 4 | 175k | 7.5% |\n 2 | 2 | 133k | 29.7% |\n\n\n## cast file to gif\n\n```bash\nttygif --input 232377.cast --output ls_pipe.gif --fps=33\n```\n\n## pipe to gif\n\n```bash\nls -lhatsR | ttygif --output ls_pipe.gif --fps=0\n```\n\n## slow down gif\n\n```bash\nls -lhatsR | ttygif --output ls_pipe.gif --fps=0 --dilate 10\n```\n\n## speed up gif\n\n```bash\nls -lhatsR | ttygif --output ls_pipe.gif --fps=0 --dilate .5\n```\n\n## Supported fonts\n- All fonts came from [https://int10h.org/oldschool-pc-fonts](https://int10h.org/oldschool-pc-fonts/)\n- copyright FON conversion \u00a9 2015 VileR, license: CC BY-SA 4.0\n- ttygif supports the \"fd\" font format. Basicly text files.\n- All .FON files have been exported to fd files for portability.\n- All fonts are copyright of their perspective owners, not me.\n- default font=Verite_9x16\n\n- AMI_BIOS\n- ![AMI_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/AMI_BIOS.gif)\n- AmstradPC1512\n- ![AmstradPC1512](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/AmstradPC1512.gif)\n- ATI_8x14\n- ![ATI_8x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_8x14.gif)\n- ATI_8x16\n- ![ATI_8x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_8x16.gif)\n- ATI_8x8\n- ![ATI_8x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_8x8.gif)\n- ATI_9x14\n- ![ATI_9x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_9x14.gif)\n- ATI_9x16\n- ![ATI_9x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_9x16.gif)\n- ATI_SmallW_6x8\n- ![ATI_SmallW_6x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATI_SmallW_6x8.gif)\n- ATT_PC6300\n- ![ATT_PC6300](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ATT_PC6300.gif)\n- CompaqThin_8x14\n- ![CompaqThin_8x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/CompaqThin_8x14.gif)\n- CompaqThin_8x16\n- ![CompaqThin_8x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/CompaqThin_8x16.gif)\n- CompaqThin_8x8\n- ![CompaqThin_8x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/CompaqThin_8x8.gif)\n- DTK_BIOS\n- ![DTK_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/DTK_BIOS.gif)\n- IBM_3270pc\n- ![IBM_3270pc](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_3270pc.gif)\n- IBM_BIOS\n- ![IBM_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_BIOS.gif)\n- IBM_CGA\n- ![IBM_CGA](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_CGA.gif)\n- IBM_CGAthin\n- ![IBM_CGAthin](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_CGAthin.gif)\n- IBM_Conv\n- ![IBM_Conv](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_Conv.gif)\n- IBM_EGA8\n- ![IBM_EGA8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_EGA8.gif)\n- IBM_EGA9\n- ![IBM_EGA9](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_EGA9.gif)\n- IBM_ISO8\n- ![IBM_ISO8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_ISO8.gif)\n- IBM_ISO9\n- ![IBM_ISO9](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_ISO9.gif)\n- IBM_MDA\n- ![IBM_MDA](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_MDA.gif)\n- IBM_PGC\n- ![IBM_PGC](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_PGC.gif)\n- IBM_PS2thin1\n- ![IBM_PS2thin1](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_PS2thin1.gif)\n- IBM_PS2thin2\n- ![IBM_PS2thin2](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_PS2thin2.gif)\n- IBM_PS2thin3\n- ![IBM_PS2thin3](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_PS2thin3.gif)\n- IBM_PS2thin4\n- ![IBM_PS2thin4](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_PS2thin4.gif)\n- IBM_VGA8\n- ![IBM_VGA8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_VGA8.gif)\n- IBM_VGA9\n- ![IBM_VGA9](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/IBM_VGA9.gif)\n- ITT_BIOS\n- ![ITT_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ITT_BIOS.gif)\n- Kaypro2K\n- ![Kaypro2K](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Kaypro2K.gif)\n- Phoenix_BIOS\n- ![Phoenix_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Phoenix_BIOS.gif)\n- PhoenixEGA_8x14\n- ![PhoenixEGA_8x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/PhoenixEGA_8x14.gif)\n- PhoenixEGA_8x16\n- ![PhoenixEGA_8x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/PhoenixEGA_8x16.gif)\n- PhoenixEGA_8x8\n- ![PhoenixEGA_8x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/PhoenixEGA_8x8.gif)\n- PhoenixEGA_9x14\n- ![PhoenixEGA_9x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/PhoenixEGA_9x14.gif)\n- TandyNew_225\n- ![TandyNew_225](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/TandyNew_225.gif)\n- TandyNew_Mono\n- ![TandyNew_Mono](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/TandyNew_Mono.gif)\n- TandyNew_TV\n- ![TandyNew_TV](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/TandyNew_TV.gif)\n- TandyOld_225\n- ![TandyOld_225](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/TandyOld_225.gif)\n- TandyOld_TV\n- ![TandyOld_TV](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/TandyOld_TV.gif)\n- ToshibaLCD_8x16\n- ![ToshibaLCD_8x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ToshibaLCD_8x16.gif)\n- ToshibaLCD_8x8\n- ![ToshibaLCD_8x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/ToshibaLCD_8x8.gif)\n- Verite_8x14\n- ![Verite_8x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Verite_8x14.gif)\n- Verite_8x16\n- ![Verite_8x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Verite_8x16.gif)\n- Verite_8x8\n- ![Verite_8x8](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Verite_8x8.gif)\n- Verite_9x14\n- ![Verite_9x14](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Verite_9x14.gif)\n- Verite_9x16\n- ![Verite_9x16](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Verite_9x16.gif)\n- VGA_SquarePx\n- ![VGA_SquarePx](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/VGA_SquarePx.gif)\n- VTech_BIOS\n- ![VTech_BIOS](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/VTech_BIOS.gif)\n- Wyse700a-2y\n- ![Wyse700a-2y](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Wyse700a-2y.gif)\n- Wyse700a\n- ![Wyse700a](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Wyse700a.gif)\n- Wyse700b-2y\n- ![Wyse700b-2y](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/fonts/preview/Wyse700b-2y.gif)\n\n\n### ESCAPE CODE SUPPORT\n\n- the letters n and m in the middle of the escape sequence are numeric substitutions\n- ignore whitespace\n\n| Type | | Code | Name |\n|------|----------|----------|---------------------------------|\n| CSI | ^[ n A | CUU | Cursor up |\n| CSI | ^[ n B | CUD | Cursor down |\n| CSI | ^[ n C | CUF | Cursor Forward |\n| CSI | ^[ n D | CUB | Cursor Back |\n| CSI | ^[ n E | CNL | Cursor Next Line |\n| CSI | ^[ n F | CPL | Cursor Previous Line |\n| CSI | ^[ n G | CHA | Cursor Horizontal Absolute |\n| CSI | ^[ n;m H | CUP | Cursor Position |\n| CSI | ^[ n J | ED | Erase Display |\n| CSI | ^[ n K | EL | Erase Line |\n| CSI | ^[ n P | DCH | Delete Character |\n| CSI | ^[ n X | ECH | Erase Character |\n| CSI | ^[ n d | VPA | Vertical Position Absolute |\n| CSI | ^[ n ` | HPA | Horizontal Position Absolute |\n| CSI | ^[ n;m f | HVP | Horizontal / Vertical position |\n| CSI | ^[ n;m m | | Set Text Attributes |\n| CSI | ^[ s | SCP | Save Cursor Position |\n| CSI | ^[ u | RCP | Restore Cursor Position |\n| DEC | ^[ n;m r | DECSTBM | Set Top and Bottom Margins |\n| DEC | ^[? 7 h | DECAWM | Auto Wrap Mode / Set |\n| DEC | ^[? 7 l | DECAWM | Auto Wrap Mode / Reset |\n| DEC | ^[ 25 h | DECTCEM | Text Cursor Enable Mode / Set |\n| DEC | ^[ 25 l | DECTCEM | Text Cursor Enable Mode / Reset |\n| DEC | ^[?1049h | | Alternate Screen / Set |\n| DEC | ^[?1049l | | Alternate Screen / Reset |\n| | ^[?2004h | | Enable Bracket Paste Mode |\n| | ^[?2004l | | Disable Bracket Paste Mode |\n\n\n### Features I'd like to add\n\nThese are ideas that just pop in my head, or are gathered via discussion.\n\n- documentation\n- draw string template for theme, title, overlay\n- font /codepage mapping for utf 8,16,13 characters to base 256 map\n- embed event stream in gif as control header data\n- time period ( capture partial recording based on time stamps x-y)\n- add progress bar to top/bottom of gif with n of y H:M:I:S\n- asciicast v1 support\n- cursor emulation\n- cliping\n- origin x,y\n- logging with ansi stripping\n- split gif every n seconds or size\n- export as frames, png\n- frames/borders, windows 95, x11, mac, fedora, gnome, cinnamon\n- lead in and outtro frames, with delays\n- output as webm/mp4\n\n## The benchmark for speed\n\n- A medium density 60 second screen recording can be rendered to gif in less than 5-8 seconds,\n- tested on a 2012'ish 4 ghz 8 core amd running 1866 memory with ssd's and Fedora 29\n\n## ttygif-assets\n\nThe following resources are located in the [ttygif-assets](https://github.com/chris17453/ttygif-assets) repo\n\n### Examples\nsome random pics from the asciinema.org website, and my computer\n\n## htop\n- with windows7 theme\n![htop](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/test.gif)\n\n## pipe\n![htop](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/pipe.gif)\n\n## [Terminal ray tracing](https://asciinema.org/a/174524)\n![asciicast-174524](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/174524.gif)\n\n## [term-tris dt cannon](https://asciinema.org/a/232377)\n- with game theme\n![asciicast-232377](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/232377.gif)\n\n## [Denariusd compile on 30 cores!](https://asciinema.org/a/234628)\n![asciicast-234628](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/234628.gif)\n\n## [surpirsed Pikachu](https://asciinema.org/a/236096)\n![asciicast-236096](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/236096.gif)\n\n## [CACA_DRIVER=ncurses cacademo](https://asciinema.org/a/687)\n![asciicast-687](https://raw.githubusercontent.com/chris17453/ttygif-assets/master/encode/687.gif)\n\n\n## Notes\n\nasciicast may split data between events, causing escape codes not to be recognised.\nttygif moves all trailing unformed escape codes to the next event.\nthe gif techincal minimum for internal delays is 1ms. I default to 3ms. Testing\nshows various applications randnomly do not obey values from 1ms to 10ms.\n\n## Compatability issues... Maybe I'm wrong.\n\nWhen your cursor is on the last position of the screen, any printed character causes\na wrap, which initiates a scroll up, unless auto wrap mode is on (DECAWM).\n\nI've noticed that asciicast deems to always operate in autowrap mode. If the cursor is on \nthe bottom right most position, and you write a character to that position, the cursor does \nnot autowrap and cause scroll. It should unless DECAWM is on. \n\nSo far its a harmess hack, but we will see.\n\nI\"ll keep testing, and If I find this a asciicast issue, I'll put in an override mode \nfor those files only.", "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/chris17453/ttygif/", "keywords": "", "license": "Creative Commons Attribution-Noncommercial-Share Alike license", "maintainer": "", "maintainer_email": "", "name": "ttygif", "package_url": "https://pypi.org/project/ttygif/", "platform": "", "project_url": "https://pypi.org/project/ttygif/", "project_urls": { "Homepage": "https://github.com/chris17453/ttygif/" }, "release_url": "https://pypi.org/project/ttygif/1.2.113/", "requires_dist": null, "requires_python": "", "summary": "A asciicast to gif utility", "version": "1.2.113" }, "last_serial": 5557453, "releases": { "1.0.293": [ { "comment_text": "", "digests": { "md5": "2042f868ac422bbfa08c93ff7ab8ab51", "sha256": "af4453ab050249f51190c52fb2f9030e0d117041fa8a20595de3dd73e1984d44" }, "downloads": -1, "filename": "ttygif-1.0.293.tar.gz", "has_sig": false, "md5_digest": "2042f868ac422bbfa08c93ff7ab8ab51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1033252, "upload_time": "2019-06-16T01:26:49", "url": "https://files.pythonhosted.org/packages/87/da/f67b57fa040ec9d873ed938c4a397f626e554fc52584beb66b3449b0e567/ttygif-1.0.293.tar.gz" } ], "1.0.295": [ { "comment_text": "", "digests": { "md5": "079dadfb53e2cfb50fcbc2b7aa84731b", "sha256": "12da4270d1f61db82de073e4410f8cd35a6ba17d2dfec031bc5b40ecdb51ca75" }, "downloads": -1, "filename": "ttygif-1.0.295.tar.gz", "has_sig": false, "md5_digest": "079dadfb53e2cfb50fcbc2b7aa84731b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1033344, "upload_time": "2019-06-16T01:43:15", "url": "https://files.pythonhosted.org/packages/d8/1f/22ae09ea77f46541f0c415d79d23e7df19932a62de618d24b452cd640705/ttygif-1.0.295.tar.gz" } ], "1.0.301": [ { "comment_text": "", "digests": { "md5": "acd86ed68322e77834ac3417dad20b63", "sha256": "d38d3429a72e72e856fb99e34260a65d2259c37dd97934995766c726a4593ddc" }, "downloads": -1, "filename": "ttygif-1.0.301.tar.gz", "has_sig": false, "md5_digest": "acd86ed68322e77834ac3417dad20b63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1029119, "upload_time": "2019-06-16T02:13:04", "url": "https://files.pythonhosted.org/packages/84/81/cebd8c52ef558bc24e8b2597000b706e611233caa7125ad503cfab378fc5/ttygif-1.0.301.tar.gz" } ], "1.0.303": [ { "comment_text": "", "digests": { "md5": "28b400d720e709814b6d9a8bb2f5ac72", "sha256": "730965bc78a3e433d5280ebb89377c05117f4b49ca958ca18ae92e7d098af1fb" }, "downloads": -1, "filename": "ttygif-1.0.303.tar.gz", "has_sig": false, "md5_digest": "28b400d720e709814b6d9a8bb2f5ac72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1032577, "upload_time": "2019-06-16T02:34:11", "url": "https://files.pythonhosted.org/packages/f9/17/247815e136bd50e224f76d0d7beed8e06bef0f348427028953320f239032/ttygif-1.0.303.tar.gz" } ], "1.0.507": [ { "comment_text": "", "digests": { "md5": "7a493ee0748b28967d77ec15498d838e", "sha256": "c56b67ad19b2db12d9f7ed61c7df0b7963124a22f6d87aa449c2e78086d33174" }, "downloads": -1, "filename": "ttygif-1.0.507.tar.gz", "has_sig": false, "md5_digest": "7a493ee0748b28967d77ec15498d838e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1052191, "upload_time": "2019-06-17T01:36:51", "url": "https://files.pythonhosted.org/packages/7e/dc/ced0e1aa2c738b6bbff13c2dd364d8480fc4bf22199a098272bce5b93a7e/ttygif-1.0.507.tar.gz" } ], "1.0.510": [ { "comment_text": "", "digests": { "md5": "e8bf10b42ab233951d8540bb4afa9360", "sha256": "35a94ba7e797d679f581e295eda2674794b01e5b5f1e0b8db05d64ae69c6b969" }, "downloads": -1, "filename": "ttygif-1.0.510.tar.gz", "has_sig": false, "md5_digest": "e8bf10b42ab233951d8540bb4afa9360", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1055184, "upload_time": "2019-06-17T14:46:06", "url": "https://files.pythonhosted.org/packages/e9/b7/da3d61c5e6753c24bfd4a543f16e127dec082b076d4fcef65ff37ab4345e/ttygif-1.0.510.tar.gz" } ], "1.0.717": [ { "comment_text": "", "digests": { "md5": "a477ffbc451aa0a71362154b03b41ca9", "sha256": "d5a3a0efa269cd1d0a8c96d762ddb8da94afc10d8ca71192013005017f645303" }, "downloads": -1, "filename": "ttygif-1.0.717.tar.gz", "has_sig": false, "md5_digest": "a477ffbc451aa0a71362154b03b41ca9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1067896, "upload_time": "2019-06-21T05:35:21", "url": "https://files.pythonhosted.org/packages/34/67/a2db93a4203cbdc948bd737d2df4c0507d1ec36d929cc2daf5713b75d5d6/ttygif-1.0.717.tar.gz" } ], "1.0.718": [ { "comment_text": "", "digests": { "md5": "1485f00d7980cc52dee039fc23747613", "sha256": "25c6b3955d5bc5c8c6a2442932b650f83509423cfe9fdab5d81fe5e1aa9f748d" }, "downloads": -1, "filename": "ttygif-1.0.718.tar.gz", "has_sig": false, "md5_digest": "1485f00d7980cc52dee039fc23747613", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1068037, "upload_time": "2019-06-21T05:43:22", "url": "https://files.pythonhosted.org/packages/f3/59/03eec6b03fbf4547193d52a62b080cfa5e13181e7cfad12e24db719a0dd7/ttygif-1.0.718.tar.gz" } ], "1.0.754": [ { "comment_text": "", "digests": { "md5": "dc8a4130e03c0b6580d62e62be509442", "sha256": "8f14da61e4e8dced1e308f4bff77fce80b3124972a7caf17a7f2052553cba110" }, "downloads": -1, "filename": "ttygif-1.0.754.tar.gz", "has_sig": false, "md5_digest": "dc8a4130e03c0b6580d62e62be509442", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1116922, "upload_time": "2019-06-23T22:16:43", "url": "https://files.pythonhosted.org/packages/da/1d/fe78d41b67e2a6b9275c08814238c5949b2d23d0560fb57defc02d1fc5ef/ttygif-1.0.754.tar.gz" } ], "1.0.792": [ { "comment_text": "", "digests": { "md5": "e23a6bbcb928761ff5b578a16ae464fd", "sha256": "063b0f465d85f1448a258cf3c6da009c47219a1fdf41ac564e6dae2c7a4a6f6c" }, "downloads": -1, "filename": "ttygif-1.0.792.tar.gz", "has_sig": false, "md5_digest": "e23a6bbcb928761ff5b578a16ae464fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1122580, "upload_time": "2019-06-24T00:09:43", "url": "https://files.pythonhosted.org/packages/10/e4/8f906093d79deadea44412387e98fc6bf4c03106317e6e57faa94fd863b7/ttygif-1.0.792.tar.gz" } ], "1.0.793": [ { "comment_text": "", "digests": { "md5": "14a1d2e1b7dd07202af562dc4af71bdb", "sha256": "8d060d44224fbfa9a2b2e4e6c050809cc31b7ba1c67c6c0cab624545a1628b9e" }, "downloads": -1, "filename": "ttygif-1.0.793.tar.gz", "has_sig": false, "md5_digest": "14a1d2e1b7dd07202af562dc4af71bdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1153825, "upload_time": "2019-06-24T00:23:58", "url": "https://files.pythonhosted.org/packages/19/2d/bfc0fe85b3438b9c0e80447f76d6579726ddb4dcbf710efdabfe4265c542/ttygif-1.0.793.tar.gz" } ], "1.1.551": [ { "comment_text": "", "digests": { "md5": "1554051ee845e0001c0e7337cb09d408", "sha256": "09dbbaaff9af4a23ea1dc5aee040b807991b1bf25461619f93ad66d5c5726ef3" }, "downloads": -1, "filename": "ttygif-1.1.551.tar.gz", "has_sig": false, "md5_digest": "1554051ee845e0001c0e7337cb09d408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1401529, "upload_time": "2019-07-07T06:00:10", "url": "https://files.pythonhosted.org/packages/4e/45/22f756edade969fe9097fcf53c7e071d5fabd07da44adbfcfc585b933a76/ttygif-1.1.551.tar.gz" } ], "1.1.657": [ { "comment_text": "", "digests": { "md5": "51140d7738fb564e229151e4c6f31275", "sha256": "87c6996b704734a46e51e975cfb3cdfd031417a742dbf4c29f71b3b4640c5e05" }, "downloads": -1, "filename": "ttygif-1.1.657.tar.gz", "has_sig": false, "md5_digest": "51140d7738fb564e229151e4c6f31275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1539632, "upload_time": "2019-07-08T00:33:55", "url": "https://files.pythonhosted.org/packages/b4/4d/56f43a2666ca283754338dc3c189ecc5e2c8504b37005ad37adb89b09468/ttygif-1.1.657.tar.gz" } ], "1.1.660": [ { "comment_text": "", "digests": { "md5": "8e775eb42e1635280a0f3bb30e6b5ad6", "sha256": "0d5a25e448f3fd6e527103b5a572aeb776192fb3fb5d5a8298b8afdfeb25af2a" }, "downloads": -1, "filename": "ttygif-1.1.660.tar.gz", "has_sig": false, "md5_digest": "8e775eb42e1635280a0f3bb30e6b5ad6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1697392, "upload_time": "2019-07-08T00:48:57", "url": "https://files.pythonhosted.org/packages/c8/c8/1b9ddc022af4994ff734fbc597a7a63c0d5911ad904d8e74015dc62acc75/ttygif-1.1.660.tar.gz" } ], "1.2.109": [ { "comment_text": "", "digests": { "md5": "2e9f226ca4d3a4e7e03c5aada640ed3f", "sha256": "c0bcdfb7f251921b5170b926a62eacf8f03aeaa64a246620859ebc8cb4109884" }, "downloads": -1, "filename": "ttygif-1.2.109.tar.gz", "has_sig": false, "md5_digest": "2e9f226ca4d3a4e7e03c5aada640ed3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1527290, "upload_time": "2019-07-19T15:42:57", "url": "https://files.pythonhosted.org/packages/a1/55/b884717a2d3c3c6cad4c3c1418bd30bb04d1d6800e2e8f75d159821d16b0/ttygif-1.2.109.tar.gz" } ], "1.2.111": [ { "comment_text": "", "digests": { "md5": "e505a92f6b97ebf0f9c519ee7e3c9984", "sha256": "64e26145de94703af6a9ba9674ff6e3eb9c2c0855db2cd99d98d5fb4396f6891" }, "downloads": -1, "filename": "ttygif-1.2.111.tar.gz", "has_sig": false, "md5_digest": "e505a92f6b97ebf0f9c519ee7e3c9984", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1528019, "upload_time": "2019-07-19T16:10:33", "url": "https://files.pythonhosted.org/packages/18/96/1d7b6384da7879db1bd4bb3496dd00a7bd408f9a4ac2c94f23f0b9800b23/ttygif-1.2.111.tar.gz" } ], "1.2.113": [ { "comment_text": "", "digests": { "md5": "9e6b213e2eec41a26fa78d0804132a45", "sha256": "dbdc43f19638351672feff5f78fd3567bd8efcf34aa2a23177dbe5266fdabc29" }, "downloads": -1, "filename": "ttygif-1.2.113.tar.gz", "has_sig": false, "md5_digest": "9e6b213e2eec41a26fa78d0804132a45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1528025, "upload_time": "2019-07-19T16:31:50", "url": "https://files.pythonhosted.org/packages/8a/f2/2a99a189bc0e74f73d561b515b8e90055eb512aa09f2b3cc0a5fec6349c0/ttygif-1.2.113.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9e6b213e2eec41a26fa78d0804132a45", "sha256": "dbdc43f19638351672feff5f78fd3567bd8efcf34aa2a23177dbe5266fdabc29" }, "downloads": -1, "filename": "ttygif-1.2.113.tar.gz", "has_sig": false, "md5_digest": "9e6b213e2eec41a26fa78d0804132a45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1528025, "upload_time": "2019-07-19T16:31:50", "url": "https://files.pythonhosted.org/packages/8a/f2/2a99a189bc0e74f73d561b515b8e90055eb512aa09f2b3cc0a5fec6349c0/ttygif-1.2.113.tar.gz" } ] }