uNoGS Forum
    • Categories
    • Search
    • unogs
    • Register
    • Login
    ad

    Part 2: A simple script to pull information

    Netflix API Details
    netflix api
    8
    44
    95.3k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • adminA
      admin
      last edited by admin

      At a very basic level the first thing you need to do is authenticate with your Netflix account, once this is done you can use a combination of the Netflix generated cookie data (will show you how to get this shortly) and the pathEvaluator url

      https://www.netflix.com/api/shakti/0feb190f/pathEvaluator?withSize=true&materialize=true&model=harris
      

      to interact with the API. There are a variety of ways you can pull the cookie information you need. As the cookie data lasts for weeks, I have just been grabbing it from the response headers. To do this, inspect the Netflix web-page as we did in Part 1, click on the pathEvaluator url, click on 'Headers' and under Request Headers copy the cookie data all in one block. (That is the block of data directly after Cookie: <this data>).

      0_1501687671553_1487511068610-cookie.jpeg

      Armed with the pathEvaluator url and our cookie we can now use this information to pull data with our script.

      The basic script I am using for this tutorial is written in python, but the simple tenants hold true for whatever scripting language you choose.

      I am assuming that you have python installed so that is not going to be relevant to this tutorial.

      Without further ado here is the script:

      #!/usr/bin/python
      import requests
      import json;
      
      cookie='<insert your cookie details here>';
      
      headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',
      'Cookie':cookie,
      'Accept':'application/json, text/javascript, */*',
      'Accept-Language':'en-GB,en;q=0.5',
      'Accept-Encoding':'gzip, deflate, br',
      'Content-Type':'application/json',
      'DNT':'1',
      'Referer':'https://www.netflix.com'}
      
      genres='0,"to":1'
      rmax='5'
      base='[["newarrivals",{"from":'+genres+'},{"from":0,"to":'+rmax+'},["title","availability"]],["newarrivals",{"from":'+genres+'},{"from":0,"to":'+rmax+'},"boxarts","_342x192","jpg"]]';
      data='{"paths":'+base+'}'
      
      #use the pathEvaluator from your session here
      url='https://www.netflix.com/api/shakti/blah/pathEvaluator?withSize=true&materialize=true&model=harris';
      
      response=requests.post(url,data=data,headers=headers)
      
      rjson=response.json()
      
      videos=rjson['value']['videos']
      for vid in videos:
          if vid.isnumeric():
              vo=videos[vid]
              title=vo['title']
              boxart=vo['boxarts']['_342x192']['jpg']['url']
              isplayable=vo['availability']['isPlayable']
              retjson='{"netflixid":"'+str(vid)+'","title":"'+str(title)+'","playable":'+str(isplayable)+',"boxart":"'+str(boxart)+'"}';
              print retjson
      
      
      

      This script could be a lot more concise but I wanted to make it as simple as possible so its clear exactly what it is doing. If there are any questions or suggestions please reply to this thread.

      good luck!
      -admin

      1 Reply Last reply Reply Quote 0
      • ?
        Guest
        last edited by

        Thanks for this, it was very helpful. Just a couple of questions.

        How do you get all the available boxart/image sizes for a title/id (or, if you can't poll them, what are the standard sizes/names)?

        What is less "intrusive", doing individual API calls for different titles or combining multiple ID's/titles in as fewer API calls as possible (for example, requesting availability info for a dozen titles from the database)?

        1 Reply Last reply Reply Quote 0
        • adminA
          admin
          last edited by

          If you are getting lots of details on a title, episodes etc I would query 1 title at a time as the response times get poorer as you stack titles.

          In regard to the boxart, there is no way that I can work out on how to 'dump' all the different formats. What I have is pieced together over months of trial and error.

          Depending on how well these posts are received, I may do an additional appendix of different queries including boxart/image details.

          stay tuned

          -admin

          1 Reply Last reply Reply Quote 0
          • ?
            Guest
            last edited by

            What's the method for the 166x233 boxart? That's the only one I actually need, but it's used on by their windows app so I can't inspect it in Chrome.

            H 1 Reply Last reply Reply Quote 0
            • H
              hunterdaver @Guest
              last edited by

              Also I would gladly knew the answer to this question

              F 1 Reply Last reply Reply Quote 0
              • F
                FrankieD @hunterdaver
                last edited by

                @hunterdaver
                One of the ways I've found is to use the Windows 8.1 Store app API at

                https://api-global.netflix.com/win/2.20/get?method=get&path=URLENCODED_PATH&format=json&progressive=true&languages=en-US
                

                Requesting the path ["shows","80133311","browse"] will return:

                {
                	"path": ["shows",
                	"80133311",
                	"browse"],
                	"value": {
                		"title": "Riverdale",
                		"box": "http://art-2.nflximg.net/64e83/a6af224ff11187c2cbfb82d996864b68f4864e83.jpg"
                	}
                }
                
                H ? 2 Replies Last reply Reply Quote 0
                • ?
                  Guest
                  last edited by

                  @admin said in Part 2: A simple script to pull information:

                  lot more concise but I wanted to ma

                  I would like to pull just the titles /subtitle/he for example.
                  i'd like to pull all title in that case

                  how can it be done?

                  1 Reply Last reply Reply Quote 0
                  • H
                    hunterdaver @FrankieD
                    last edited by

                    @FrankieD Thank you very much for your help :) I have another question on how to download information on the availability of subtitles and languages? I can see this information appears in the source page. Is there a way to download the information from the API?

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      FrankieD @hunterdaver
                      last edited by

                      @hunterdaver Subtitle and language info is available on the standard browser API described in the first post. The API call when you open a single item looks something like this:

                      [["videos",80097003,["availability","synopsis","queue","episodeCount","info","maturity","runtime","seasonCount","releaseYear","userRating","numSeasonsLabel","bookmarkPosition","watched"]]
                      

                      Add "subtitles" and "audio" to the this list. It used to be there until a few days (weeks?) ago, but for some reason they removed the language info and availability from the detailed info page.

                      1 Reply Last reply Reply Quote 2
                      • ?
                        Guest
                        last edited by

                        @admin said in Part 2: A simple script to pull information:

                        boxart=vo['boxarts']['_342x192']['jpg']['url']

                        Hello!

                        Can you please reveal me how to get that poster image 284x398
                        https://art-s.nflximg.net/b6c55/c2df424e262059a97932661a43e4c105decb6c55.jpg

                        I couldnt find it, great work anyway. Thanks in advance!

                        Best regards

                        F 1 Reply Last reply Reply Quote 0
                        • F
                          FrankieD @Guest
                          last edited by

                          said in Part 2: A simple script to pull information:

                          Can you please reveal me how to get that poster image 284x398
                          https://art-s.nflximg.net/b6c55/c2df424e262059a97932661a43e4c105decb6c55.jpg

                          Use the Windows 10 store app API, e.g.

                          httpx://api-global.netflix.com/win/uwa/X.XX?falcor_server=0.1.0&materialize=true&winx_lang=en-GB&method=get&path=PATH
                          

                          Using the path: ["series","NID",["summary"]] will give you large and small boxshots and vertical posters. You'll want the vertical/large.

                          1 Reply Last reply Reply Quote 0
                          • ?
                            Guest
                            last edited by

                            Thanks for the reply. Unfortunately im getting HTTP ERROR 403.

                            I am trying to get with curl as get request
                            https://api-global.netflix.com/win/uwa/2.20?falcor_server=0.1.0&materialize=true&winx_lang=en-GB&method=get&path=%5b%22shows%22%2c%2280133311%22%2c%22browse%22%5d

                            Was trying to add headers with data from chrome request... but with no success. Any idea, what i am doing wrong?

                            Thanks in advance

                            F 1 Reply Last reply Reply Quote 0
                            • F
                              FrankieD @Guest
                              last edited by FrankieD

                              Well, for one, the API path seems weird to me, can't make out if its the Win8.1 API (version 2.20 or higher) or the Win10 API (6.20 or higher).
                              However, 403 means you're not authorising properly. Perhaps they patched the system so that the same cookie will not work across different APIs. My advice for you would be to grab the cookies from the Windows 10 app and try those.

                              1 Reply Last reply Reply Quote 0
                              • ?
                                Guest
                                last edited by

                                What would be the best way to simply check if a particular title is available? Use the pathEvaluator to do a search query?

                                adminA 1 Reply Last reply Reply Quote 0
                                • adminA
                                  admin @Guest
                                  last edited by

                                  https://unogs.com

                                  ? 1 Reply Last reply Reply Quote 0
                                  • ?
                                    Guest @admin
                                    last edited by

                                    @admin Yes thank you :) I mean pulling the information directly from Netflix like in the script you posted.

                                    adminA 1 Reply Last reply Reply Quote 0
                                    • adminA
                                      admin @Guest
                                      last edited by

                                      The following JSON should do it:
                                      $search='your search string'
                                      $min='start of your search count, 0 typically'
                                      $max='max results'
                                      $at='your auth code discussed previously (may not be necessary)'

                                      {"paths":[["search","$search",{"from":$min,"to":$max},["availability"]],["search","$search",{"from":$min,"to":$max},"boxarts","_342x192","webp"]],"authURL":"$at"}
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • ?
                                        Guest
                                        last edited by

                                        Thank you! I included "titles" as well (after "$search") and it worked for me. The auth code wasn't necessary.

                                        1 Reply Last reply Reply Quote 0
                                        • ?
                                          Guest
                                          last edited by

                                          How do you get the information about WHEN titles will become available or expire?

                                          adminA 1 Reply Last reply Reply Quote 0
                                          • adminA
                                            admin @Guest
                                            last edited by

                                            availabilityEndDateNear

                                            ["subtitles","audio","availability","availabilityEndDateNear"]
                                            

                                            Now easy way to get when new titles are available that I know of...

                                            S 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post