Skip to content

Fails to upload with "list index out of range" in line _timestamp.values[1] of exif.py #140

@Talkless

Description

@Talkless

exiftool dump of picture in quesiton:

---- ExifTool ----
ExifTool Version Number         : 12.76
---- System ----
File Name                       : image20240303_101153395_fixed.jpg
Directory                       : .
File Size                       : 1882 kB
File Modification Date/Time     : 2024:03:10 19:37:01+02:00
File Access Date/Time           : 2024:03:10 19:37:01+02:00
File Inode Change Date/Time     : 2024:03:10 20:21:52+02:00
File Permissions                : -rw-rw-r--
---- File ----
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
Exif Byte Order                 : Big-endian (Motorola, MM)
Image Width                     : 4096
Image Height                    : 2304
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
---- JFIF ----
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
---- IFD0 ----
Image Description               : 
Make                            : Volla
Camera Model Name               : Volla Phone X
Orientation                     : Horizontal (normal)
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Software                        : MediaTek Camera Application
Modify Date                     : 2024:03:03 08:11:53
Y Cb Cr Positioning             : Co-sited
---- ExifIFD ----
Exposure Time                   : 1/33
F Number                        : 2.0
Exposure Program                : Not Defined
ISO                             : 162
Exif Version                    : 0220
Date/Time Original              : 2024:03:03 10:11:53
Create Date                     : 2024:03:03 10:11:53
Components Configuration        : Y, Cb, Cr, -
Exposure Compensation           : 0
Metering Mode                   : Center-weighted average
Light Source                    : Other
Flash                           : No Flash
Focal Length                    : 3.5 mm
Sub Sec Time                    : 2
Sub Sec Time Original           : 2
Sub Sec Time Digitized          : 2
Flashpix Version                : 0100
Color Space                     : sRGB
Exif Image Width                : 4096
Exif Image Height               : 2304
Exposure Mode                   : Auto
White Balance                   : Auto
Digital Zoom Ratio              : 1
Focal Length In 35mm Format     : 20 mm
Scene Capture Type              : Standard
---- InteropIFD ----
Interoperability Index          : R98 - DCF basic file (sRGB)
---- GPS ----
GPS Version ID                  : 2.2.0.0
GPS Latitude Ref                : North
GPS Latitude                    : 55 deg 49' 30.41"
GPS Longitude Ref               : East
GPS Longitude                   : 23 deg 4' 50.38"
GPS Altitude Ref                : Above Sea Level
GPS Altitude                    : 148 m
GPS Time Stamp                  : 346409:07:30
GPS Processing Method           : GPS
GPS Date Stamp                  : 
---- IFD1 ----
Compression                     : JPEG (old-style)
Orientation                     : Horizontal (normal)
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Y Cb Cr Positioning             : Co-sited
Thumbnail Offset                : 1075
Thumbnail Length                : 27630
Thumbnail Image                 : (Binary data 27630 bytes, use -b option to extract)
---- Composite ----
Aperture                        : 2.0
Image Size                      : 4096x2304
Megapixels                      : 9.4
Scale Factor To 35 mm Equivalent: 5.7
Shutter Speed                   : 1/33
Create Date                     : 2024:03:03 10:11:53.2
Date/Time Original              : 2024:03:03 10:11:53.2
Modify Date                     : 2024:03:03 08:11:53.2
GPS Altitude                    : 148 m Above Sea Level
GPS Date/Time                   :  346409:07:30Z
GPS Latitude                    : 55 deg 49' 30.41" N
GPS Longitude                   : 23 deg 4' 50.38" E
Circle Of Confusion             : 0.005 mm
Field Of View                   : 84.0 deg
Focal Length                    : 3.5 mm (35 mm equivalent: 20.0 mm)
GPS Position                    : 55 deg 49' 30.41" N, 23 deg 4' 50.38" E
Hyperfocal Distance             : 1.17 m
Light Value                     : 6.4

I use this wrapper script for performing uploads:

#!/usr/bin/bash

set -eu

readonly SCRIPT_DIR=$(readlink -f $(dirname "${BASH_SOURCE}"))
readonly VENV_DIR=${SCRIPT_DIR}/upload-scripts.git/venv

if [[ ! -d "${VENV_DIR}" ]]
then
    echo "Creating Python venv.."
    python3 -m venv "${VENV_DIR}"
fi

source "${SCRIPT_DIR}/upload-scripts.git/venv/bin/activate"
python3 -m ensurepip
python3 -m pip install --upgrade pip
pip install -r "${SCRIPT_DIR}/upload-scripts.git/requirements.txt"

echo "Uploading photos to Kartaview in "$(pwd)" directory..."
${SCRIPT_DIR}/upload-scripts.git/osc_tools.py upload  --path "$(pwd)"
echo "Done."

And this is result of executing this script:

Looking in links: /tmp/tmpkz0ywy8t
Requirement already satisfied: setuptools in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (68.1.2)
Requirement already satisfied: pip in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (24.0)
Requirement already satisfied: pip in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (24.0)
Requirement already satisfied: requests>=2.20.0 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 1)) (2.31.0)
Requirement already satisfied: ExifRead>=2.3.2 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 2)) (3.0.0)
Requirement already satisfied: tqdm>=4.62.3 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 3)) (4.66.2)
Requirement already satisfied: piexif>=1.1.3 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 4)) (1.1.3)
Requirement already satisfied: pycodestyle>=2.8.0 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 5)) (2.11.1)
Requirement already satisfied: gpxpy>=1.4.2 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 7)) (1.6.2)
Requirement already satisfied: geojson~=2.5.0 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 8)) (2.5.0)
Requirement already satisfied: requests-oauthlib in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 10)) (1.3.1)
Requirement already satisfied: imagesize~=1.3.0 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from -r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 13)) (1.3.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from requests>=2.20.0->-r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 1)) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from requests>=2.20.0->-r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 1)) (3.6)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from requests>=2.20.0->-r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 1)) (2.2.1)
Requirement already satisfied: certifi>=2017.4.17 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from requests>=2.20.0->-r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 1)) (2024.2.2)
Requirement already satisfied: oauthlib>=3.0.0 in /home/vincas/opt/kartaview/upload-scripts.git/venv/lib/python3.11/site-packages (from requests-oauthlib->-r /home/vincas/opt/kartaview/upload-scripts.git/requirements.txt (line 10)) (3.2.2)
Uploading photos to Kartaview in /home/vincas/Darbastalis/TODO dirvonai/medinčius/fixed directory...
Searching for sequences...
Traceback (most recent call last):
  File "/home/vincas/opt/kartaview/upload-scripts.git/osc_tools.py", line 243, in <module>
    main()
  File "/home/vincas/opt/kartaview/upload-scripts.git/osc_tools.py", line 24, in main
    args.func(args)
  File "/home/vincas/opt/kartaview/upload-scripts.git/osc_tools.py", line 95, in upload_command
    sequences = discoverer.discover(path)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/osc_discoverer.py", line 114, in discover
    sequence = self.create_sequence(path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/osc_discoverer.py", line 129, in create_sequence
    (visual_data, data_type) = self.visual_data.discover(path)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/visual_data_discover.py", line 50, in discover
    photo = cls._photo_from_path(os.path.join(path, file_path))
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/visual_data_discover.py", line 81, in _photo_from_path
    exif_parser.next_item_with_class(PhotoMetadata))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/parsers/exif/exif.py", line 47, in next_item_with_class
    return self._photo_item(self.tags)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/parsers/exif/exif.py", line 171, in _photo_item
    gps = self._gps_item(tags_data)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/parsers/exif/exif.py", line 133, in _gps_item
    gps.timestamp = self._gps_timestamp(tags_data)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vincas/opt/kartaview/upload-scripts.git/parsers/exif/exif.py", line 245, in _gps_timestamp
    minutes: Ratio = _timestamp.values[1]
                     ~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range

Mapillary's uploaded accepted this photo successfully.

Maybe it's something to do with Debian Sid's transition to 64bit timestamps..?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions