• 1
  • 74
  • 75
  • 76(current)
  • 77
  • 78
  • 102
[RELEASE] NetfliXBMC - Unofficial Netflix Add-on (Win/OSX/Linux) - Thread 2
(2015-08-28, 07:21)corona Wrote:
(2015-08-27, 09:38)hstegeman Wrote: An other option:
http://www.moreflicks.com/
The option all countries would be interresting, but it's also posible to select one country.

I did also look at.
http://www.yidio.com/
I did make an account, but I was not able to activate my Netflix account to yidio.
I think the problem is country related, I did also try their android app, but I see this item isn't available in your country.
By making use of aptoide, I am was able to download/install the android app, it's working but I can't select the Netherlands.
To make use of this app does only work for me incombination with a vpn connection like hola.

Other interresting sites:
http://nld.istreamguide.com/?
http://usa.istreamguide.com/?
And other languages.
or the beta version:
http://beta.istreamguide.com/

Thanks for doing some decent legwork :-)

I certainly appreciate that yidio's lack of internationalization on netflix is a real limitation. moreflicks appears a much better option in this regard, it supports a few services and various countries for netflix.
They don't have a particularly great api jumping out at me, rather their ajax work is to spit out blobs of jquery wrapped html to inject into the page, eg:

http://www.moreflicks.com/search?ccat=mo...=&scroll=3

It certainly could be used though to build an addon.

istreamguide.com looks like a gem as far as netflix is concerned.
It was easy to find it's nice json api: https://jsonformatter.curiousconcept.com...ge=1&per=3

I didn't know the meaning of "like a gem", well google is my friend.
I also like istreamguide.com, but I would even like the beta site more, if it was working fine, well it doesn't.

Test new movies in the netherlands
http://nld.istreamguide.com/new_movies
http://beta.istreamguide.com/search?page...regions=10

The beta site is giving false information.
In my opinion the best solution would be that xbmc could make use of the Blockless or VPN option, everybody with a netflix account could make use of netflix worldwide.
http://help.blockless.com/
If that was possible xbmc/kodi would have a plus. I wouldn't make use of my netflix smart tv app anymore. With hola this is also possible, but not on an easy way, by example you can't cast from your htpc to your chromecast making use of hola with a wifi connection.
Reply
@hstegeman Without going too off topic, how do you find Playon browser as an alternative to Netflixbmc? I need something with a high WAF (Wife Acceptance Factor) and having it all in Kodi without changes from Netflix breaking the add ons is important.
Reply
Maybe the way to make this work in a manner acceptable to Netflix is by building an API enabled website as a proxy for this add-on. That way the private api key could be kept private. The kodi netflixbmc add-on would simply continue to scrape html, but from the unchanging proxy site instead. Of course, maintaining such a site (pretty high metadata request volume once it caught on) would require a subscription based business model for ongoing funding.

If you think about it, netflix probably discontinued the public API for this reason. The proxy website would have to be subscription based to fund infrastructure and netflix api usage fees.
Reply
(2015-08-29, 13:58)UsefulG Wrote: @hstegeman Without going too off topic, how do you find Playon browser as an alternative to Netflixbmc? I need something with a high WAF (Wife Acceptance Factor) and having it all in Kodi without changes from Netflix breaking the add ons is important.
The problem with playon is that the maximum quality is 480p, that's not enough for me.
You can try 720p, but in my situation xbmc is buffering every few seconds.
But for 480p playon does have a working solution.
I did report this problem at playon, there seams to be no solution.
In a time that 4k will be the standard in the future, 480p is not enough, most piracy websites can deliver 480p.
Reply
(2015-08-29, 16:55)hstegeman Wrote:
(2015-08-29, 13:58)UsefulG Wrote: @hstegeman Without going too off topic, how do you find Playon browser as an alternative to Netflixbmc? I need something with a high WAF (Wife Acceptance Factor) and having it all in Kodi without changes from Netflix breaking the add ons is important.
The problem with playon is that the maximum quality is 480p, that's not enough for me.
You can try 720p, but in my situation xbmc is buffering every few seconds.
But for 480p playon does have a working solution.
I did report this problem at playon, there seams to be no solution.
In a time that 4k will be the standard in the future, 480p is not enough, most piracy websites can deliver 480p.


Yuck! That is not acceptable in this day and age, I won't be going down that route then.

It does frustrate me that it is easier to steal content than it is to watch it legally in the way you would like.

I'll keep using the add-on with the restrictions (no my list etc) but if it stops working completely I'll go to the Metro App or use Chrome Launcher for the website. Boo!
Reply
can someone give me a super simple rundown on how to get netflix running on openelec? searched the thread but couldn't find a simple answer.
Reply
There is a thread with exactly that howto on the openelec forum.
If I have helped you or increased your knowledge, click the 'thumbs up' button to give thanks :) (People with less than 20 posts won't see the "thumbs up" button.)
Reply
I managed to get the plugin working again - such that 'TV Shows/All Shows' now works again.

The problem seems to be that Netflix have changed the data returned for the URL 'http://www.netflix.com/browse/genre/83' which is what is used in the plugin.

The regular expression I have added to the code will find the tv show IDs within the updated Netflix data but also returns some entries that are not TV shows. I filtered these by checking that they are above 10000000 - not the best idea I guess but it seems to work.

Anyway - again I have no idea how to get this update into the plugin so hopefully someone else will know how to do that. If you apply this diff to the default.py file it should work again:

Code:
266a267,268
>             if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
>             if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
269,271c271,275
<                 pDialog.update(i*100/len(match), translation(30142)+"...")
<                 listVideo(videoID, "", "", False, False, type)
<                 i+=1
---
>                 if int(videoID)>10000000:
>                     pDialog.update(i*100/len(match), translation(30142)+"...")
>                     listVideo(videoID, "", "", False, False, type)
>                     i+=1

As everybody else said - it would be much easier if Netflix provided a published API...
Reply
(2015-08-31, 11:18)rjwilkins Wrote: I managed to get the plugin working again - such that 'TV Shows/All Shows' now works again.

The problem seems to be that Netflix have changed the data returned for the URL 'http://www.netflix.com/browse/genre/83' which is what is used in the plugin.

The regular expression I have added to the code will find the tv show IDs within the updated Netflix data but also returns some entries that are not TV shows. I filtered these by checking that they are above 10000000 - not the best idea I guess but it seems to work.

Anyway - again I have no idea how to get this update into the plugin so hopefully someone else will know how to do that. If you apply this diff to the default.py file it should work again:

Code:
266a267,268
>             if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
>             if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
269,271c271,275
<                 pDialog.update(i*100/len(match), translation(30142)+"...")
<                 listVideo(videoID, "", "", False, False, type)
<                 i+=1
---
>                 if int(videoID)>10000000:
>                     pDialog.update(i*100/len(match), translation(30142)+"...")
>                     listVideo(videoID, "", "", False, False, type)
>                     i+=1

As everybody else said - it would be much easier if Netflix provided a published API...

Can you post your default.py? I want to make sure I make the correct changes. Thanks!
Reply
(2015-09-01, 01:18)ryantrip Wrote:
(2015-08-31, 11:18)rjwilkins Wrote: I managed to get the plugin working again - such that 'TV Shows/All Shows' now works again.

The problem seems to be that Netflix have changed the data returned for the URL 'http://www.netflix.com/browse/genre/83' which is what is used in the plugin.

The regular expression I have added to the code will find the tv show IDs within the updated Netflix data but also returns some entries that are not TV shows. I filtered these by checking that they are above 10000000 - not the best idea I guess but it seems to work.

Anyway - again I have no idea how to get this update into the plugin so hopefully someone else will know how to do that. If you apply this diff to the default.py file it should work again:

Code:
266a267,268
>             if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
>             if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
269,271c271,275
<                 pDialog.update(i*100/len(match), translation(30142)+"...")
<                 listVideo(videoID, "", "", False, False, type)
<                 i+=1
---
>                 if int(videoID)>10000000:
>                     pDialog.update(i*100/len(match), translation(30142)+"...")
>                     listVideo(videoID, "", "", False, False, type)
>                     i+=1

As everybody else said - it would be much easier if Netflix provided a published API...

Can you post your default.py? I want to make sure I make the correct changes. Thanks!

rjwilkins, Yes, just post your default.py, so we can test your solution. From your post I can't see what you did change.
> and < all over the place. The published code did just become a mess.
Reply
hmmm... not working for me. Also duplicating entries in My LIst (which is due to the second videoid test). Here's the actual code including unchanged lines around this change:
Code:
--code block follows:
            #if not match: match = re.compile('<a href="http://dvd.netflix.com/WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            #if not match: match = re.compile('<a class="playHover" href=".+?WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content)
            if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            i = 1
            for videoID in match:
                if not runAsWidget:
                    pDialog.update(i*100/len(match), translation(30142)+"...")
                listVideo(videoID, "", "", False, False, type)
                i+=1
                if int(videoID)>10000000:
                   pDialog.update(i*100/len(match), translation(30142)+"...")
                   listVideo(videoID, "", "", False, False, type)
                   i+=1
            match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url)
--end of code block

to remove duplicates, it should look like this:
Code:
--code block follows:
            #if not match: match = re.compile('<a href="http://dvd.netflix.com/WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            #if not match: match = re.compile('<a class="playHover" href=".+?WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content)
            if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            i = 1
            for videoID in match:
                if int(videoID)>10000000:
                    if not runAsWidget:
                        pDialog.update(i*100/len(match), translation(30142)+"...")
                    listVideo(videoID, "", "", False, False, type)
                i+=1
            match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url)
--end of code block
Reply
(2015-09-04, 01:56)Sleuth255 Wrote: hmmm... not working for me. Also duplicating entries in My LIst (which is due to the second videoid test). Here's the actual code including unchanged lines around this change:
Code:
--code block follows:
            #if not match: match = re.compile('<a href="http://dvd.netflix.com/WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            #if not match: match = re.compile('<a class="playHover" href=".+?WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content)
            if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            i = 1
            for videoID in match:
                if not runAsWidget:
                    pDialog.update(i*100/len(match), translation(30142)+"...")
                listVideo(videoID, "", "", False, False, type)
                i+=1
                if int(videoID)>10000000:
                   pDialog.update(i*100/len(match), translation(30142)+"...")
                   listVideo(videoID, "", "", False, False, type)
                   i+=1
            match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url)
--end of code block

to remove duplicates, it should look like this:
Code:
--code block follows:
            #if not match: match = re.compile('<a href="http://dvd.netflix.com/WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            #if not match: match = re.compile('<a class="playHover" href=".+?WiPlayer\?movieid=(.+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content)
            if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content)
            if not match: match = re.compile('"summary":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            if not match: match = re.compile('"boxarts":.*?"id":([0-9]+)', re.DOTALL).findall(content)
            i = 1
            for videoID in match:
                if int(videoID)>10000000:
                    if not runAsWidget:
                        pDialog.update(i*100/len(match), translation(30142)+"...")
                    listVideo(videoID, "", "", False, False, type)
                i+=1
            match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url)
--end of code block

Sorry a little confused... does what you submitted in this post fix the plugin? What does it do? (does it only fix duplicates?)
Reply
Sorry, I was trying to respond to requests for what the code in Ryantrip's post really looked like. He actually posted a diff (change control file) that could be applied to default.py. The first code example shows what the impacted code in default.py looks like when one does this. Essentially, he's adding two additional regex scans to the HTML and adding another test to limit the results to only valid Movie/TV entries. When I tested it I found two problems:
  • It didn't fix the all TV shows issue for me
  • My List showed duplicate entries for every show

My second code example fixed the duplicate entry issue, but All TV Shows is still broken on USA Netflix. However, in other countries this might not be the case. If you want to test his regex changes, use the second code example. Sorry for the confusion!
Reply
(2015-09-04, 15:19)Sleuth255 Wrote: Sorry, I was trying to respond to requests for what the code in Ryantrip's post really looked like. He actually posted a diff (change control file) that could be applied to default.py. The first code example shows what the impacted code in default.py looks like when one does this. Essentially, he's adding two additional regex scans to the HTML and adding another test to limit the results to only valid Movie/TV entries. When I tested it I found two problems:
  • It didn't fix the all TV shows issue for me
  • My List showed duplicate entries for every show

My second code example fixed the duplicate entry issue, but All TV Shows is still broken on USA Netflix. However, in other countries this might not be the case. If you want to test his regex changes, use the second code example. Sorry for the confusion!
The website did change the source, it's working for no one.
No one wants to change py source because of website changes.
The problem is that the add-on can't make use of an api, if making use of an api was possible you wouldn't have to scrape daily changing websites.
My idea was scraping a website which can make use a private api, such a websites are interesting because they don't get changed.
Reply
agreed and I'd try it but regex gives me a headache. Also, the most useful feature "My List" isn't available on other websites tmk.
Reply
  • 1
  • 74
  • 75
  • 76(current)
  • 77
  • 78
  • 102

Logout Mark Read Team Forum Stats Members Help
[RELEASE] NetfliXBMC - Unofficial Netflix Add-on (Win/OSX/Linux) - Thread 217