Typecast the 'bit_rate' and 'channels' values into floats before attempting to convert them to ints

Otherwise we end up in a situation where audio3[0].get("bit_rate", 0)
returns the string `"192000.000000"`, which cannot be converted into an
int.

Example:

```
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> int("192000.000000")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '192000.000000'
>>> int(float("192000.000000"))
192000
```

Relevant log entry:
```
[10:50:57] [DEBUG]::TRANSCODER: ******* Specified bit rate is: 192000.000000
Traceback (most recent call last):
  File "/opt/nzbtomedia/nzbToSickBeard.py", line 254, in <module>
    result = nzbToMedia.main(sys.argv, section)
  File "/opt/nzbtomedia/nzbToMedia.py", line 726, in main
    download_id='')
  File "/opt/nzbtomedia/nzbToMedia.py", line 615, in process
    download_id, inputCategory, failureLink)
  File "/opt/nzbtomedia/core/autoProcess/autoProcessTV.py", line 162, in processEpisode
    result, newDirName = transcoder.Transcode_directory(dirName)
  File "/opt/nzbtomedia/core/transcoder/transcoder.py", line 708, in Transcode_directory
    command = buildCommands(file, newDir, movieName, bitbucket)
  File "/opt/nzbtomedia/core/transcoder/transcoder.py", line 278, in buildCommands
    bitrate = int(audio1[0].get("bit_rate", 0)) / 1000
ValueError: invalid literal for int() with base 10: '192000.000000'
Exception TypeError: "'NoneType' object is not callable" in <bound method PosixProcess.__del__ of <core.nzbToMediaUtil.PosixProcess object at 0x7ffa6a37e590>> ignored
```
This commit is contained in:
Marvin Pinto 2016-10-03 10:47:35 -04:00
parent cb0de3ca98
commit 2c8b2fc8cf

View file

@ -268,20 +268,20 @@ def buildCommands(file, newDir, movieName, bitbucket):
if audio2: # right language and codec...
map_cmd.extend(['-map', '0:{index}'.format(index=audio2[0]["index"])])
a_mapped.extend([audio2[0]["index"]])
bitrate = int(audio2[0].get("bit_rate", 0)) / 1000
channels = int(audio2[0].get("channels", 0))
bitrate = int(float(audio2[0].get("bit_rate", 0))) / 1000
channels = int(float(audio2[0].get("channels", 0)))
audio_cmd.extend(['-c:a:{0}'.format(used_audio), 'copy'])
elif audio1: # right language wrong codec.
map_cmd.extend(['-map', '0:{index}'.format(index=audio1[0]["index"])])
a_mapped.extend([audio1[0]["index"]])
bitrate = int(audio1[0].get("bit_rate", 0)) / 1000
channels = int(audio1[0].get("channels", 0))
bitrate = int(float(audio1[0].get("bit_rate", 0))) / 1000
channels = int(float(audio1[0].get("channels", 0)))
audio_cmd.extend(['-c:a:{0}'.format(used_audio), core.ACODEC if core.ACODEC else 'copy'])
elif audio3: # just pick the default audio track
map_cmd.extend(['-map', '0:{index}'.format(index=audio3[0]["index"])])
a_mapped.extend([audio3[0]["index"]])
bitrate = int(audio3[0].get("bit_rate", 0)) / 1000
channels = int(audio3[0].get("channels", 0))
bitrate = int(float(audio3[0].get("bit_rate", 0))) / 1000
channels = int(float(audio3[0].get("channels", 0)))
audio_cmd.extend(['-c:a:{0}'.format(used_audio), core.ACODEC if core.ACODEC else 'copy'])
if core.ACHANNELS and channels and channels > core.ACHANNELS:
@ -305,14 +305,14 @@ def buildCommands(file, newDir, movieName, bitbucket):
if audio4: # right language and codec.
map_cmd.extend(['-map', '0:{index}'.format(index=audio4[0]["index"])])
a_mapped.extend([audio4[0]["index"]])
bitrate = int(audio4[0].get("bit_rate", 0)) / 1000
channels = int(audio4[0].get("channels", 0))
bitrate = int(float(audio4[0].get("bit_rate", 0))) / 1000
channels = int(float(audio4[0].get("channels", 0)))
audio_cmd2.extend(['-c:a:{0}'.format(used_audio), 'copy'])
elif audio1: # right language wrong codec.
map_cmd.extend(['-map', '0:{index}'.format(index=audio1[0]["index"])])
a_mapped.extend([audio1[0]["index"]])
bitrate = int(audio1[0].get("bit_rate", 0)) / 1000
channels = int(audio1[0].get("channels", 0))
bitrate = int(float(audio1[0].get("bit_rate", 0))) / 1000
channels = int(float(audio1[0].get("channels", 0)))
if core.ACODEC2:
audio_cmd2.extend(['-c:a:{0}'.format(used_audio), core.ACODEC2])
else:
@ -320,8 +320,8 @@ def buildCommands(file, newDir, movieName, bitbucket):
elif audio3: # just pick the default audio track
map_cmd.extend(['-map', '0:{index}'.format(index=audio3[0]["index"])])
a_mapped.extend([audio3[0]["index"]])
bitrate = int(audio3[0].get("bit_rate", 0)) / 1000
channels = int(audio3[0].get("channels", 0))
bitrate = int(float(audio3[0].get("bit_rate", 0))) / 1000
channels = int(float(audio3[0].get("channels", 0)))
if core.ACODEC2:
audio_cmd2.extend(['-c:a:{0}'.format(used_audio), core.ACODEC2])
else:
@ -350,8 +350,8 @@ def buildCommands(file, newDir, movieName, bitbucket):
used_audio += 1
map_cmd.extend(['-map', '0:{index}'.format(index=audio["index"])])
audio_cmd3 = []
bitrate = int(audio.get("bit_rate", 0)) / 1000
channels = int(audio.get("channels", 0))
bitrate = int(float(audio.get("bit_rate", 0))) / 1000
channels = int(float(audio.get("channels", 0)))
if audio["codec_name"] in core.ACODEC3_ALLOW:
audio_cmd3.extend(['-c:a:{0}'.format(used_audio), 'copy'])
else: