Skip to content

Commit 95455bc

Browse files
authored
Parse Bitrate value as integer not string
1 parent f9360bd commit 95455bc

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

m3u8/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,7 @@ def dumps(self, last_segment, timespec="milliseconds", infspec="auto"):
671671
output.append("#EXT-X-BYTERANGE:%s\n" % self.byterange)
672672

673673
if self.bitrate:
674-
output.append("#EXT-X-BITRATE:%s\n" % self.bitrate)
674+
output.append("#EXT-X-BITRATE:%d\n" % self.bitrate)
675675

676676
if self.gap_tag:
677677
output.append("#EXT-X-GAP\n")

m3u8/parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,10 +439,10 @@ def _parse_variant_playlist(line, data, state, **kwargs):
439439
state["expect_playlist"] = False
440440

441441

442-
def _parse_bitrate(line, state, **kwargs):
442+
def _parse_bitrate(state, **kwargs):
443443
if "segment" not in state:
444444
state["segment"] = {}
445-
state["segment"]["bitrate"] = line.replace(protocol.ext_x_bitrate + ":", "")
445+
state["segment"]["bitrate"] = _parse_simple_parameter(cast_to=int, **kwargs)
446446

447447

448448
def _parse_byterange(line, state, **kwargs):

tests/test_model.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,6 +1704,13 @@ def test_low_latency_output():
17041704
assert actual == expected
17051705

17061706

1707+
def test_bitrate_settable_as_int():
1708+
obj = m3u8.loads(playlists.BITRATE_PLAYLIST)
1709+
obj.segments[0].bitrate = 9876
1710+
1711+
assert "#EXT-X-BITRATE:9876" in obj.dumps().strip()
1712+
1713+
17071714
# custom asserts
17081715

17091716

tests/test_parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -856,8 +856,8 @@ def test_delta_playlist_daterange_skipping():
856856

857857
def test_bitrate():
858858
data = m3u8.parse(playlists.BITRATE_PLAYLIST)
859-
assert data["segments"][0]["bitrate"] == "1674"
860-
assert data["segments"][1]["bitrate"] == "1625"
859+
assert data["segments"][0]["bitrate"] == 1674
860+
assert data["segments"][1]["bitrate"] == 1625
861861

862862

863863
def test_content_steering():

0 commit comments

Comments
 (0)