pgsrip icon indicating copy to clipboard operation
pgsrip copied to clipboard

Trying to rip from mkv quickly raises ValueError: 0 is not a valid ObjectSequenceType

Open PythonCoderAS opened this issue 8 months ago • 2 comments

Trying to rip lang:en PGS causes this error:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/pgsrip/core.py", line 69, in rip_pgs
    srt = PgsToSrtRipper(p, options).rip(lambda t: rules.apply(t, '')[0])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/ripper.py", line 128, in __init__
    max_height = max([item.height for item in self.pgs.items]) // 2
                                              ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/media.py", line 161, in items
    self._items = self.decode(data, self.media_path)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/media.py", line 184, in decode
    return PgsSubtitleItem.create_items(media_path, display_sets)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/media.py", line 45, in create_items
    candidates.append(PgsSubtitleItem(index, media_path, current_sets))
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/media.py", line 32, in __init__
    self.image = PgsSubtitleItem.generate_image(display_sets)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/media.py", line 72, in generate_image
    img_data += ods.img_data
                ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/pgs.py", line 360, in img_data
    if self.sequence_type == ObjectSequenceType.LAST:
       ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pgsrip/pgs.py", line 341, in sequence_type
    return ObjectSequenceType(self.data[3])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/enum.py", line 714, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/enum.py", line 1137, in __new__
    raise ve_exc
ValueError: 0 is not a valid ObjectSequenceType

The preceding debug logs:

/usr/local/lib/python3.11/site-packages/click/core.py:1193: UserWarning: The parameter -a is used more than once. Remove its duplicate as parameters should be unique.
  parser = self.make_parser(ctx)
/usr/local/lib/python3.11/site-packages/click/core.py:1186: UserWarning: The parameter -a is used more than once. Remove its duplicate as parameters should be unique.
  self.parse_args(ctx, args)
INFO:pgsrip:Tesseract version: 5.5.1
INFO:pgsrip:Tesseract data: /usr/src/tessdata
DEBUG:pgsrip.mkv:Filtering out track 2:ja in /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 3:zh in /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 4:zh in /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 5:ko in /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv
DEBUG:pgsrip.media_path:/in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv is using temporary folder /tmp/ブルーアーカイブ The Animation VOL.4_t01.mkv8tjynjuj.pgsrip
DEBUG:pgsrip.media:Skipping /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.mkv [6:en] since /in/ブルーアーカイブ The Animation VOL.4/ブルーアーカイブ The Animation VOL.4_t01.en.srt already exists
DEBUG:pgsrip.mkv:Filtering out track 2:ja in /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 3:zh in /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 4:zh in /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 5:ko in /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv
DEBUG:pgsrip.media_path:/in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv is using temporary folder /tmp/ブルーアーカイブ The Animation VOL.3_t00.mkvnhezvil1.pgsrip
DEBUG:pgsrip.mkv:Selecting track 6:en in /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 2:ja in /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 3:zh in /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 4:zh in /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv
DEBUG:pgsrip.mkv:Filtering out track 5:ko in /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv
DEBUG:pgsrip.media_path:/in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv is using temporary folder /tmp/ブルーアーカイブ The Animation VOL.2_t01.mkvf5pcyp38.pgsrip
DEBUG:pgsrip.media:Skipping /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.mkv [6:en] since /in/ブルーアーカイブ The Animation VOL.2/ブルーアーカイブ The Animation VOL.2_t01.en.srt already exists
DEBUG:pgsrip.mkv:Filtering out track 2:ja in /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 3:zh in /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 4:zh in /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv
DEBUG:pgsrip.mkv:Filtering out track 5:ko in /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv
DEBUG:pgsrip.media_path:/in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv is using temporary folder /tmp/ブルーアーカイブ The Animation VOL.1_t00.mkvdh35ryhb.pgsrip
DEBUG:pgsrip.media:Skipping /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.mkv [6:en] since /in/ブルーアーカイブ The Animation VOL.1/ブルーアーカイブ The Animation VOL.1_t00.en.srt already exists
1 PGS subtitle collected from 7 files
INFO:pgsrip.media:Decoding /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.en.mkv
DEBUG:pgsrip.media:Removing temporary files in /tmp/ブルーアーカイブ The Animation VOL.3_t00.mkvnhezvil1.pgsrip
WARNING:pgsrip.core:Error while trying to rip /in/ブルーアーカイブ The Animation VOL.3/ブルーアーカイブ The Animation VOL.3_t00.en.mkv: <ValueError> [0 is not a valid ObjectSequenceType]

PythonCoderAS avatar Jun 15 '25 19:06 PythonCoderAS

you need to provide a sample file so I'm able to reproduce it and fix it (you can extract a sup file from the mkv)

ratoaq2 avatar Jul 26 '25 10:07 ratoaq2

I have the same error, slightly different output:

% pgsrip --keep-temp-files --debug up/sub7.sup
INFO:pgsrip:Tesseract version: 5.5.1
INFO:pgsrip:Tesseract data: None
DEBUG:pgsrip.media_path:up/sub7.sup is using temporary folder /run/user/1000/sub7.supl4fi9q9g.pgsrip
1 PGS subtitle collected from 1 file
INFO:pgsrip.media:Decoding up/sub7.sup
INFO:pgsrip.media:Keeping temporary files in /run/user/1000/sub7.supl4fi9q9g.pgsrip
WARNING:pgsrip.core:Error while trying to rip up/sub7.sup: <ValueError> [0 is not a valid ObjectSequenceType]
Traceback (most recent call last):
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/core.py", line 69, in rip_pgs
    srt = PgsToSrtRipper(p, options).rip(lambda t: rules.apply(t, '')[0])
          ~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/ripper.py", line 128, in __init__
    max_height = max([item.height for item in self.pgs.items]) // 2
                                              ^^^^^^^^^^^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/media.py", line 161, in items
    self._items = self.decode(data, self.media_path)
                  ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/media.py", line 182, in decode
    self.dump_display_sets(display_sets)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/media.py", line 189, in dump_display_sets
    f.write(f'{new_line.join([str(ds) for ds in display_sets])}')
                              ~~~^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/pgs.py", line 449, in __str__
    strings.append(f'\t{s}')
                       ^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/pgs.py", line 206, in __str__
    for k, v in self.to_json().items():
                ~~~~~~~~~~~~^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/pgs.py", line 192, in to_json
    k: to_value(getattr(self, v)) for k, v in attributes.items() if getattr(self, v) is not None
                                                                    ~~~~~~~^^^^^^^^^
  File "/home/temp/pyenv/lib/python3.13/site-packages/pgsrip/pgs.py", line 341, in sequence_type
    return ObjectSequenceType(self.data[3])
  File "/usr/lib/python3.13/enum.py", line 726, in __call__
    return cls.__new__(cls, value)
           ~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/lib/python3.13/enum.py", line 1203, in __new__
    raise ve_exc
ValueError: 0 is not a valid ObjectSequenceType
0 PGS subtitle ripped from 1 file

Input file is large (145M): https://drive.google.com/file/d/18ULDV6M9J9K8WbWbQZ6FN_6Z-W3tcRHy/view?usp=sharing

It might not be relevant, but I suspect the images don't contain text. I think it's images of early storyboards for the movie that get overlaid when you watch with the director's commentary. I was hoping to extract the images and confirm.

hhmitchell avatar Nov 07 '25 20:11 hhmitchell