{ "info": { "author": "Tony Young", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Video", "Topic :: Software Development :: Libraries", "Topic :: Text Processing :: Markup" ], "description": "# python-ass\n\nA library for parsing and manipulating Advanced SubStation Alpha subtitle\nfiles.\n\n## Documents\n\n**test.ass**\n\n [Script Info]\n ScriptType: v4.00+\n\n [V4+ Styles]\n Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\n Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1\n\n [Events]\n Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,hello!\n\nYou can parse the file:\n\n >>> import ass\n >>> with open(\"test.ass\", \"r\") as f:\n ... doc = ass.parse(f)\n ...\n\nAccess some of its styles:\n\n >>> doc.styles\n []\n >>> doc.styles[0].fontname\n 'Arial'\n >>> doc.styles[0].primary_color # \"color\", not \"colour\"\n Color(r=0xff, g=0xff, b=0xff, a=0x00)\n\nOr its event lines:\n\n >>> doc.events\n []\n >>> doc.events[0].text\n 'hello!'\n\nYou can dump them back out into ASS format, too:\n\n >>> doc.events[0].dump()\n '0,0:00:00.00,0:00:05.00,Default,,0,0,0,,hello!'\n\nOr maybe the whole file:\n\n >>> with open(\"out.ass\", \"w\") as f:\n ... doc.dump_file(f)\n ...\n\n\n## Tags\n\nFor parsing ASS tags, you may want to consider `ass-tag-parser`:\nhttps://pypi.org/project/ass-tag-parser/\n\n\n## Rendering\n\npython-ass can use libass for rendering.\n\nFirst you need to allocate a libass context:\n\n >>> ctx = ass.renderer.Context()\n\nThen you need to convert the `ass.document.Document` to a `ass.renderer.Track`:\n\n >>> t = ctx.make_track()\n >>> t.populate(doc)\n\nThen make a renderer to render the track:\n\n >>> r = ctx.make_renderer()\n >>> r.set_fonts(fontconfig_config=\"/usr/local/etc/fonts/fonts.conf\")\n >>> r.set_all_sizes((1280, 720))\n\nYou can render a frame at a given time:\n\n >>> imgs = r.render_frame(t, timedelta(0))\n\nExample using PIL to render to a bitmap:\n\n >>> im_out = Image.new(\"RGB\", (1280, 720))\n >>> im_data = im_out.load()\n >>> for img in imgs:\n ... r, g, b, a = img.rgba\n ... for y in range(img.h):\n ... for x in range(img.w):\n ... a_src = img[x, y] * (256 - a) // 256\n ... r_dst, g_dst, b_dst = im_data[x + img.dst_x, y + img.dst_y]\n ... r_out = ((r * a_src) + (r_dst * (256 - a_src))) // 256\n ... g_out = ((g * a_src) + (g_dst * (256 - a_src))) // 256\n ... b_out = ((b * a_src) + (b_dst * (256 - a_src))) // 256\n ... im_data[x + img.dst_x, y + img.dst_y] = (r_out, g_out, b_out)\n ...\n >>> im_out.show()\n\n### Sample Rendering (from `renderer_test.py`)\n\n![Test rendering](test.png)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/chireiden/python-ass", "keywords": "ass subtitle substation alpha", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "ass", "package_url": "https://pypi.org/project/ass/", "platform": "", "project_url": "https://pypi.org/project/ass/", "project_urls": { "Homepage": "http://github.com/chireiden/python-ass" }, "release_url": "https://pypi.org/project/ass/0.4.4/", "requires_dist": [ "setuptools" ], "requires_python": "", "summary": "A library for parsing and manipulating Advanced SubStation Alpha subtitle files.", "version": "0.4.4" }, "last_serial": 4742403, "releases": { "0.4.3": [], "0.4.4": [ { "comment_text": "", "digests": { "md5": "284981308d2e6cee5e1b2a006c000116", "sha256": "bf420da2b15754b18a7d05324daabd151c2722c43fbcbb0dd675ff7ccc34fe98" }, "downloads": -1, "filename": "ass-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "284981308d2e6cee5e1b2a006c000116", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11835, "upload_time": "2019-01-26T00:28:47", "url": "https://files.pythonhosted.org/packages/4d/c1/211e6d5568643643e40918be8bc3e4948934ee75a83222008cf652adac94/ass-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c80cbc03bd836d6c0cacbe200e1f0d7a", "sha256": "1a24e3b0877a850ea41e195e05d50cde8f7be428b9d71046226bd9cccb8e67d4" }, "downloads": -1, "filename": "ass-0.4.4.tar.gz", "has_sig": false, "md5_digest": "c80cbc03bd836d6c0cacbe200e1f0d7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12445, "upload_time": "2019-01-26T00:28:48", "url": "https://files.pythonhosted.org/packages/dd/86/11dc4eea3f08ea1e4ec08ab86b01f0b30b50de27355d15d421ccde2b5897/ass-0.4.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "284981308d2e6cee5e1b2a006c000116", "sha256": "bf420da2b15754b18a7d05324daabd151c2722c43fbcbb0dd675ff7ccc34fe98" }, "downloads": -1, "filename": "ass-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "284981308d2e6cee5e1b2a006c000116", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11835, "upload_time": "2019-01-26T00:28:47", "url": "https://files.pythonhosted.org/packages/4d/c1/211e6d5568643643e40918be8bc3e4948934ee75a83222008cf652adac94/ass-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c80cbc03bd836d6c0cacbe200e1f0d7a", "sha256": "1a24e3b0877a850ea41e195e05d50cde8f7be428b9d71046226bd9cccb8e67d4" }, "downloads": -1, "filename": "ass-0.4.4.tar.gz", "has_sig": false, "md5_digest": "c80cbc03bd836d6c0cacbe200e1f0d7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12445, "upload_time": "2019-01-26T00:28:48", "url": "https://files.pythonhosted.org/packages/dd/86/11dc4eea3f08ea1e4ec08ab86b01f0b30b50de27355d15d421ccde2b5897/ass-0.4.4.tar.gz" } ] }