{"library":"pysrt","title":"SubRip Subtitle Parser and Writer","description":"pysrt is a Python library for parsing, modifying, and composing SubRip (.srt) subtitle files. It allows developers to read SRT files, manipulate subtitle text and timing, and save changes. The current version is 1.1.2. The library appears to have a slow release cadence, with the last release being seven years ago and minimal recent development activity on its GitHub repository.","language":"python","status":"maintenance","last_verified":"Sat May 16","install":{"commands":["pip install pysrt"],"cli":null},"imports":["import pysrt","pysrt.open('file.srt')"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pysrt\nimport os\n\n# Create a dummy SRT file for demonstration\ndummy_srt_content = '''1\n00:00:00,500 --> 00:00:02,500\nHello world!\n\n2\n00:00:03,000 --> 00:00:05,000\nThis is a test subtitle.'''\n\nfile_path = 'example.srt'\nwith open(file_path, 'w', encoding='utf-8') as f:\n    f.write(dummy_srt_content)\n\n# Parse the SRT file\ntry:\n    subs = pysrt.open(file_path)\n    print(f\"Loaded {len(subs)} subtitles.\")\n\n    # Access and modify a subtitle item\n    first_sub = subs[0]\n    print(f\"Original first subtitle: {first_sub.text}\")\n    first_sub.text = \"Modified first subtitle!\"\n    print(f\"Modified first subtitle: {first_sub.text}\")\n\n    # Shift all subtitles by 1 second forward\n    subs.shift(seconds=1)\n    print(f\"First subtitle start time after shift: {first_sub.start}\")\n\n    # Save the modified subtitles to a new file\n    output_file_path = 'example_modified.srt'\n    subs.save(output_file_path, encoding='utf-8')\n    print(f\"Modified subtitles saved to {output_file_path}\")\n\n    # Clean up dummy files\n    os.remove(file_path)\n    os.remove(output_file_path)\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to open an SRT file, access and modify individual subtitle items, shift the timings of all subtitles, and save the changes to a new file. It includes a basic example of creating a dummy SRT file and then cleaning it up.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.1.2","pypi_latest":"1.1.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.6,"avg_import_s":0.01,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"20.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"22M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":0.6,"disk_size":"22.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.02,"mem_mb":0.6,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"14M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"12.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"14M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"20.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pysrt","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"21M"}]}}