kutlus
kutlus

Reputation: 361

Can't solve TypeError: '>' not supported between instances of 'NoneType' and 'int'

I have a long list of audio files, and some of them are longer than an hour. I am using Jupyter notebook, Python 3.6 and TinyTag library to get a duration of audio. My code below goes over the files and if a file is longer than an hour, it splits the file into one-hour long pieces, and a leftover piece less than an hour, and copies the pieces as fname_1,fname_2, etc.

The code was working for the previous datasets I tried, but this time after running for a while, I get the error below. I don't know where this is coming from and how to fix it, I have already read the similarly-titled questions but their contents were different.

# fpaths is the list of filepaths
for i in range(0,len(fpaths)):
    fpath=fpaths[i]
    fname=os.path.basename(fpath)
    fname0=os.path.splitext(fname)[0] #name without extension
    tag = TinyTag.get(fname)
    if tag.duration > 3600:
        cmd2 = "ffmpeg -i %s -f segment -segment_time 3600 -c copy %s" %(fpath, fname0) + "_%d.wav"
        os.system(cmd2)
        os.remove(fpath)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-79d0ceebf75d> in <module>()
      7     fname0=os.path.splitext(fname)[0]
      8     tag = TinyTag.get(fname)
----> 9     if tag.duration > 3600:
     10         cmd2 = "ffmpeg -i %s -f segment -segment_time 3600 -c copy %s" %(fpath, fname0) + "_%d.wav"
     11         os.system(cmd2)

TypeError: '>' not supported between instances of 'NoneType' and 'int'

Upvotes: 0

Views: 661

Answers (1)

salparadise
salparadise

Reputation: 5805

Seems like some of those results have a duration set to None

Perhaps change it to:

if tag.duration and tag.duration > 3600:
    .....

Upvotes: 2

Related Questions