truedread / pymsl

Python library for interacting with the Netflix MSL API
GNU General Public License v3.0
77 stars 27 forks source link

Weird behavior related to profiles #8

Open kidburglar opened 3 years ago

kidburglar commented 3 years ago

Hello, it looks that profiles have a weird behavior.

I'm still doing my test on episode 1 of Girl From Nowhere

The default in the README are not the same that in https://github.com/truedread/pymsl/blob/master/pymsl/client.py#L26

...     profiles=LIST_OF_PROFILES, # default is ['playready-h264mpl30-dash', 'playready-h264mpl31-dash', 'playready-h264mpl40-dash', 'heaac-2-dash', 'simplesdh', 'nflx-cmisc', 'BIF240', 'BIF320']

But what is weird are the result when I add the VP9 profiles it looks like the others are removed, is that expected?

Without VP9 profiles

client = pymsl.MslClient(user_auth_data, profiles=[
  'playready-h264mpl30-dash',
  'playready-h264mpl31-dash',
  'playready-h264mpl40-dash',
  'heaac-2-dash',
  'simplesdh',
  'nflx-cmisc',
  'BIF240',
  'BIF320'])

a = client.load_manifest(80241859)

for i, j in enumerate(a['result']['video_tracks'][0]['streams']):
  print('VIDEO: {} - PROFILE {} - BITRATE {} - RESOLUTION {}:{}'.format(
        i, j['content_profile'], j['bitrate'], str(j['crop_w']), str(j['crop_h']))
  )
VIDEO: 0 - PROFILE playready-h264mpl30-dash - BITRATE 140 - RESOLUTION 320:240
VIDEO: 1 - PROFILE playready-h264mpl30-dash - BITRATE 180 - RESOLUTION 384:288
VIDEO: 2 - PROFILE playready-h264mpl30-dash - BITRATE 270 - RESOLUTION 512:384
VIDEO: 3 - PROFILE playready-h264mpl30-dash - BITRATE 380 - RESOLUTION 512:384
VIDEO: 4 - PROFILE playready-h264mpl30-dash - BITRATE 560 - RESOLUTION 720:480
VIDEO: 5 - PROFILE playready-h264mpl30-dash - BITRATE 830 - RESOLUTION 720:480
VIDEO: 6 - PROFILE playready-h264mpl31-dash - BITRATE 1210 - RESOLUTION 1280:720
VIDEO: 7 - PROFILE playready-h264mpl40-dash - BITRATE 1540 - RESOLUTION 1920:1080
VIDEO: 8 - PROFILE playready-h264mpl40-dash - BITRATE 2260 - RESOLUTION 1920:1080
VIDEO: 9 - PROFILE playready-h264mpl40-dash - BITRATE 3320 - RESOLUTION 1920:1080

With VP9 profiles

client = pymsl.MslClient(user_auth_data, profiles=[
  'playready-h264mpl30-dash',
  'playready-h264mpl31-dash',
  'playready-h264mpl40-dash',
  'vp9-profile0-L30-dash-cenc',
  'vp9-profile0-L31-dash-cenc',
  'vp9-profile0-L40-dash-cenc',
  'heaac-2-dash',
  'simplesdh',
  'nflx-cmisc',
  'BIF240',
  'BIF320'])

a = client.load_manifest(80241859)

for i, j in enumerate(a['result']['video_tracks'][0]['streams']):
  print('VIDEO: {} - PROFILE {} - BITRATE {} - RESOLUTION {}:{}'.format(
        i, j['content_profile'], j['bitrate'], str(j['crop_w']), str(j['crop_h']))
  )
VIDEO: 0 - PROFILE vp9-profile0-L30-dash-cenc - BITRATE 104 - RESOLUTION 768:432
VIDEO: 1 - PROFILE vp9-profile0-L30-dash-cenc - BITRATE 164 - RESOLUTION 960:540
VIDEO: 2 - PROFILE vp9-profile0-L30-dash-cenc - BITRATE 263 - RESOLUTION 960:540
VIDEO: 3 - PROFILE vp9-profile0-L31-dash-cenc - BITRATE 425 - RESOLUTION 1280:720
VIDEO: 4 - PROFILE vp9-profile0-L40-dash-cenc - BITRATE 800 - RESOLUTION 1920:1080

Thanks for your help.