kuruoujou / XBMal

XBMal - the XBMC MAL Plugin. Update your MyAnimeList based on your XBMC Library!
GNU General Public License v3.0
10 stars 4 forks source link

Script Failed when trying to add entries to list - size limit? #4

Closed wolfgame closed 10 years ago

wolfgame commented 11 years ago

When I launch XBMAL from the add-ons menu, I'm presented with the usual list of shows. Normally, I see shows with "No MAL Listing Found", then I click on them, adjust the search if necessary, and the associate the show entry with the MAL entry. However, with the new shows this season, I'm seeing "Error retrieving information from MAL", and when I click on them, I'm returned to the plugin list and receive a Script Failed notice.

What steps should I be taking, and this might be a bit silly, but is there an upper limit to the number of shows that XBMAL can parse or that MAL will return on a query?

Thanks

kuruoujou commented 11 years ago

There isn't an upper limit that XBMAL can parse in theory. I have around 200 shows in my library and haven't hit it, at least. MAL does have a limit to how many it will return in a query, I believe, but that number is fairly large, and since it only really matters when you go into the actual show (each show does its own query, which is why the initial search takes so long), it shouldn't be a big issue.

The problem you're seeing is a bit more sinister, and I've been seeing it too, I just haven't been able to start working on it yet. It seems that every time XBMAL runs now, it's having issues connecting to the MAL api. This affects basically everything it does, too, so there really isn't a workaround as of now.

I am aware of the issue and I will begin looking into it as soon as I can, because it's bugging me too. I've noticed the issue may start at different times for different people, but this may just be a side-effect of the api.

kuruoujou commented 11 years ago

Update time!

It seems that the unofficial MAL Api (mal-api.com) is sending back a 502 Bad Gateway HTTP Code whenever a search request is sent to it. Indeed, this is breaking all applications that rely on that API, as I'm seeing similar issues (force-closes) whenever I try to search with Atarahii! for Android. I've seen this before, and it's why I added the "Could not connect to MAL" response error, though I have been considering dropping most of XBMAL's output anyway and making it a completely silent program, but that's neither here nor there.

In the meantime, there is little I can do to directly solve this issue. I am now looking into alternatives, such as hosting my own copy of the API exclusively for XBMAL, or perhaps modifying XBMAL to use the official API, though I believe I may lose some functionality if I do that. For end users, basically the only real thing to do is wait until the mal-api is fixed, or until I release a new update.

As a side note, I believe Atarashii updates shows differently then I do, as it does not crash when I update how many episodes I have seen of something. I may attempt to get into contact with it's developer to see if I can't salvage at least some of XBMAL's functionality.

tl;dr: working on it as much as I can, but the main issue seems to be with the API.

MasterCATZ commented 11 years ago

O maybe it was a bad time for me to try using this Plugin again

kuruoujou commented 10 years ago

New update!

Looks like the issue was myanimelist.net blocking the api I was using, to help alleviate the issue they were having with a DDoS. They are now requiring unique identifiers for users of the api, and I've contacted the point person about getting an identifier. It should only be a few more days before I have an id and an update drops.

Again, sorry about all of this. We should be back soon!

M0UL commented 10 years ago

thanks for the reference, i wanst aware of it.

kuruoujou commented 10 years ago

Just so anyone following this is aware, I have yet to receive a response. I don't know why, and I'm going to send another message again soon, just in case my original message got lost in the abyss.

kuruoujou commented 10 years ago

Just another update - I never received a response, but took a look at the original topic again. Looks like they implemented a form instead of using the PM system on mal, so I submitted a request. I'm not actually sure if I need to submit or if the unofficial mal api changed response types when he was set up, but in any case this will hopefully be resolved soon. Only 2 months and counting! heh...

Well, look at is as an early christmas gift, I guess...

kuruoujou commented 10 years ago

Good news / bad news time:

The good news is that I have an API key.

The bad news is that the mal-api.com site is still messed up, so I'm going to clone the unofficial API and set up my own instance of it somewhere. This could take a little while, it looks like I can't just use any old webhost, so I can't just toss it up on my own webhost (Though I am going to try...I might be able to "install" it and then just rip the files out and move them to my web host Nope, definitely needs to be it's own instance. Sigh...). In that case, I'm going to have to find a VPS somewhere to use, because my own personal server wouldn't be able to handle it, rather, the internet connection couldn't.

So, this is probably still a little ways to being fixed. I'm terribly sorry about all of this. I hope to get it back in action soon, I know as soon as it comes back my own list is going to be hit with a ton of updates, since this is the primary way I interact with MAL...

kuruoujou commented 10 years ago

I don't know if anyone is still following this or if I'm just typing these out for my own convenience, but here's where things stand:

I managed to clone the unofficial api into a test VM and get it running, but it's only responding with blank strings, basically, it's acting the same way the mal-api.com instance is acting. This basically leaves me with one of two options:

1) Try to fix the ruby and figure out why it's not working, and make it work. Downside to this is I don't know ruby, upside to this is I'm now the only reason xbmal would stop working, except for mal itself.

2) Recode xbmal to use the official api, dropping any plans for expansion with the unofficial api. Downside to this is it would be a fairly hefty rewrite, replacing most of the existing mal code (going from json output to xml output). Upside is that I can clean it up a bit and make some things a bit happier...but this would likely involve resetting everybody's configuration. Again.

The "hidden" third option is I talk to the developer of atarashii, since he seems to have gotten an instance up and running somewhere, but he seems to have modified it significantly.

Of course, this is all after I figure out why my API key isn't working. It's literally the only thing in the user agent and I'm still getting rejected when I try to hit the site using curl. I think I need to PM someone or post on the forums about this. Sigh...

wolfgame commented 10 years ago

I’ve been following, just unable to contribute, so figured the best thing to do was report the bug and shut the hell up.

From: Spencer Julian [mailto:notifications@github.com] Sent: Saturday, December 21, 2013 7:53 PM To: kuruoujou/XBMal Cc: Bill Burcalow Subject: Re: [XBMal] Script Failed when trying to add entries to list - size limit? (#4)

I don't know if anyone is still following this or if I'm just typing these out for my own convenience, but here's where things stand:

I managed to clone the unofficial api into a test VM and get it running, but it's only responding with blank strings, basically, it's acting the same way the mal-api.com instance is acting. This basically leaves me with one of two options:

1) Try to fix the ruby and figure out why it's not working, and make it work. Downside to this is I don't know ruby, upside to this is I'm now the only reason xbmal would stop working, except for mal itself.

2) Recode xbmal to use the official api, dropping any plans for expansion with the unofficial api. Downside to this is it would be a fairly hefty rewrite, replacing most of the existing mal code (going from json output to xml output). Upside is that I can clean it up a bit and make some things a bit happier...but this would likely involve resetting everybody's configuration. Again.

The "hidden" third option is I talk to the developer of atarashii, since he seems to have gotten an instance up and running somewhere, but he seems to have modified it significantly.

Of course, this is all after I figure out why my API key isn't working. It's literally the only thing in the user agent and I'm still getting rejected when I try to hit the site using curl. I think I need to PM someone or post on the forums about this. Sigh...

— Reply to this email directly or view it on GitHubhttps://github.com/kuruoujou/XBMal/issues/4#issuecomment-31076185.

kuruoujou commented 10 years ago

Ah, that's great to know! Thanks.

ressu commented 10 years ago

I'm listening in as well. Ruby is right up my alley and I've been trying to find the time to check out a copy of mal-api and see what the steps are to get it up and running. But I haven't been able to get to it yet.

kuruoujou commented 10 years ago

Also great to hear! So, it took a bit for me to figure out how to get running, because it has very little documentation other than "Here's what you need to install". This is the github repository for the API, and it's written using Ruby on Rack, as far as I can tell, so if you have rack installed, running rackup config.ru in it's root directory should bring it up on port 9292. From there, I have no idea, but hopefully that will get you started, if you didn't know all of that already.

Let me know if you find out anything, I'll keep poking at it from my end in the meantime. And don't worry about taking a while - it's not like this ticket hasn't been open for 2 months already -_-;

Thanks!

ressu commented 10 years ago

Yup, it's a basic Sinatra app. I just booted it up and I'm getting some scrape errors. Which look like they are caused by invalid user-agent. I'll dig a bit deeper, there are certain bits and pieces left out from the configuration apparently, but nothing too difficult to figure out (so far)

kuruoujou commented 10 years ago

Do you have an API key to mess with? If not, you can sign up for one pretty easily here

If you don't plan to make an app with this, you can use the key for xbmal, just send me an email and I'll send it to you.

ressu commented 10 years ago

I requested a new key for it. I'll have to see if I can host this somewhere. At the moment all my hosts that could host this are suffering for major lack of resources. As soon as I see if this thing is actually runnable, I'll figure out where to go from there.

ressu commented 10 years ago

Looking at the output of my instance and the instance at mal-api.com, the output of the site has changed and something is breaking because of that. I'll take a better look later on if I can work around this.

kuruoujou commented 10 years ago

So, I know if you don't have the key in it responds with incapsula output (and I discovered if you mess with the API too much from curl, it will force normal browser connections through incapsula as well), but that's all I've been able to gather. Since I can't get past incapsula even with curl, I've asked on the mal forum, but last I checked no one has responded.

ressu commented 10 years ago

Yup, you are right. I just got my API key and now it appears to work properly. Lets see if I can manage to get some proper answers from the API.

ressu commented 10 years ago

OK, I now have a locally working mal-api. The original source didn't need any real modifications, just the user-agent and dalli configuration.

kuruoujou commented 10 years ago

Really? That's strange, I wonder what I'm doing wrong, because I'm still getting blank replies from my local copy of the API. What was the dalli configuration that you needed?

ressu commented 10 years ago

This is what I did:

First, install memcached on the host (or somewhere else, as long as its available from the host it's fine). Clone the repository and install ruby (I happen to have 2.0.0-p353, but any >= 1.9 version should do). Install the bundler gem and do the following:

cp config/dalli.yml.example config/dalli.yml
# Edit the file if your memecache is in an unusual location
bundle install
USER_AGENT="your useragent" bundle exec rackup

For me, that brought up a working copy.

kuruoujou commented 10 years ago

Hmm...maybe I was messing up the execution of the server. I was setting the user agent in the shell (export USER_AGENT="blah") and then just running rackup, not using bundle exec.

I can't get to the machine with my test vm right now, but I should be able to give it a shot on Sunday. Thanks.

ressu commented 10 years ago

export and the format I use to set the USER_AGENT variable are canonical in the eyes of the application, so that's not the problem. Leaving out bundle exec, on the other hand, can cause unpredictable problems. But then again, it requires some quite rare conditions to make those errors non-obvious.

So I'm guessing that you had a mistake in either dalli configuration or in memcached.

kuruoujou commented 10 years ago

Hmm...no luck. I'm still getting a blank result when I do anime/search?q=kill%20la%20kill, or something similar. Also, the only response I've gotten on my thread at mal is to make sure that my user agent matches exactly what was provided, which it does. I'm not quite sure, but since I can't even get the official api to work with curl, I'm leaning toward the issue being with the user agent string I was provided. I can't rule out that I'm doing something wrong, but I'm not sure what else to try.

ressu commented 10 years ago

Hmm.. search apparently returns nothing if the key is wrong. Try something like anime/1 and you should see a backtrace. (Oh, and I had no idea that Cowboy Bebob was the first anime there =)

kuruoujou commented 10 years ago

Haha. It's interesting to see what various IDs get sometimes. I just gave it a shot, though, and got a backtrace - the original exception being "undefined method `[]' for nil:NilClass.". I've added it below if you're curious, but my guess is it's still the incapsula output.

I kept part of my user_agent string (but not the identifiable part) just to make sure I'm actually doing this correctly.

$ USER_AGENT="api-team-[hash]" bundle exec rackup
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:9292, CTRL+C to stop
MyAnimeList::UnknownError - Error scraping anime with ID=1. Original exception: undefined method `[]' for nil:NilClass.:
    /home/kuroshi/Projects/myanimelist-api/my_anime_list/anime.rb:37:in `rescue in scrape_anime'
    /home/kuroshi/Projects/myanimelist-api/my_anime_list/anime.rb:17:in `scrape_anime'
    /home/kuroshi/Projects/myanimelist-api/app.rb:129:in `block in <class:App>'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:1293:in `call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:1293:in `block in compile!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:860:in `[]'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:860:in `block (3 levels) in route!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:876:in `route_eval'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:860:in `block (2 levels) in route!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:897:in `block in process_route'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:895:in `catch'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:895:in `process_route'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:859:in `block in route!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:858:in `each'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:858:in `route!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:963:in `block in dispatch!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `block in invoke'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `catch'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `invoke'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:960:in `dispatch!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:794:in `block in call!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `block in invoke'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `catch'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:946:in `invoke'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:794:in `call!'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:780:in `call'
    /var/lib/gems/1.9.1/gems/rack-cors-0.2.7/lib/rack/cors.rb:51:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/xss_header.rb:27:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/base.rb:48:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/base.rb:48:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/path_traversal.rb:16:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/base.rb:48:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/base.rb:48:in `call'
    /var/lib/gems/1.9.1/gems/rack-protection-1.3.2/lib/rack/protection/xss_header.rb:27:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/session/abstract/id.rb:225:in `context'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/session/abstract/id.rb:220:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/nulllogger.rb:9:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/head.rb:11:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/methodoverride.rb:21:in `call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/showexceptions.rb:21:in `call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:124:in `call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:1417:in `block in call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:1499:in `synchronize'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:1417:in `call'
    /var/lib/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
    /var/lib/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
    /var/lib/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
    /var/lib/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
    /var/lib/gems/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/lint.rb:49:in `_call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/lint.rb:37:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/showexceptions.rb:24:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in `call'
    /var/lib/gems/1.9.1/gems/sinatra-1.3.4/lib/sinatra/base.rb:161:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/chunked.rb:43:in `call'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/content_length.rb:14:in `call'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/connection.rb:81:in `block in pre_process'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/connection.rb:79:in `catch'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/connection.rb:79:in `pre_process'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/connection.rb:54:in `process'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/connection.rb:39:in `receive_data'
    /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run_machine'
    /var/lib/gems/1.9.1/gems/eventmachine-1.0.0/lib/eventmachine.rb:187:in `run'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/backends/base.rb:63:in `start'
    /var/lib/gems/1.9.1/gems/thin-1.5.0/lib/thin/server.rb:159:in `start'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/handler/thin.rb:16:in `run'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:141:in `start'
    /var/lib/gems/1.9.1/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>'
    /usr/local/bin/rackup:23:in `load'
    /usr/local/bin/rackup:23:in `<main>'
cache: [GET /anime/1] miss
127.0.0.1 - - [31/Dec/2013 18:42:07] "GET /anime/1 HTTP/1.1" 500 198910 0.4655
cache: [GET /__sinatra__/500.png] miss, ignore, store
127.0.0.1 - - [31/Dec/2013 18:42:07] "GET /__sinatra__/500.png HTTP/1.1" 200 31056 0.0851
cache: [GET /favicon.ico] miss, ignore, store
127.0.0.1 - - [31/Dec/2013 18:42:07] "GET /favicon.ico HTTP/1.1" 200 1150 0.0146
ressu commented 10 years ago

Yup, that's the same error I got with an invalid user agent. Can you get responses from the MAL site with curl and the user agent?

curl -A api-team-hash http://myanimelist.net/anime/1
kuruoujou commented 10 years ago

Looks like I'm still just getting incapsula:

$ curl -A api-team-[hash] http://myanimelist.net/anime/1
<html>
<head>
<META NAME="robots" CONTENT="noindex,nofollow">
<script>
(function(){function getSessionCookies(){cookieArray=new Array();var cName=/^\s?incap_ses_/;var c=document.cookie.split(";");for(var i=0;i<c.length;i++){key=c[i].substr(0,c[i].indexOf("="));value=c[i].substr(c[i].indexOf("=")+1,c[i].length);if(cName.test(key)){cookieArray[cookieArray.length]=value}}return cookieArray}function setIncapCookie(vArray){try{cookies=getSessionCookies();digests=new Array(cookies.length);for(var i=0;i<cookies.length;i++){digests[i]=simpleDigest((vArray)+cookies[i])}res=vArray+",digest="+(digests.join())}catch(e){res=vArray+",digest="+(encodeURIComponent(e.toString()))}createCookie("___utmvc",res,20)}function simpleDigest(mystr){var res=0;for(var i=0;i<mystr.length;i++){res+=mystr.charCodeAt(i)}return res}function createCookie(name,value,seconds){if(seconds){var date=new Date();date.setTime(date.getTime()+(seconds*1000));var expires="; expires="+date.toGMTString()}else{var expires=""}document.cookie=name+"="+value+expires+"; path=/"}function test(o){var res="";var vArray=new Array();for(test in o){switch(o[test]){case"exists":try{vArray[vArray.length]=encodeURIComponent(test+"="+typeof(eval(test)))}catch(e){vArray[vArray.length]=encodeURIComponent(test+"="+e)}break;case"value":try{vArray[vArray.length]=encodeURIComponent(test+"="+eval(test).toString())}catch(e){vArray[vArray.length]=encodeURIComponent(test+"="+e)}break;case"plugins":try{p=navigator.plugins;pres="";for(a in p){pres+=(p[a]["description"]+" ").substring(0,20)}vArray[vArray.length]=encodeURIComponent("plugins="+pres)}catch(e){vArray[vArray.length]=encodeURIComponent("plugins="+e)}break;case"plugin":try{a=navigator.plugins;for(i in a){f=a[i]["filename"].split(".");if(f.length==2){vArray[vArray.length]=encodeURIComponent("plugin="+f[1]);break}}}catch(e){vArray[vArray.length]=encodeURIComponent("plugin="+e)}break}}vArray=vArray.join();return vArray}var o={navigator:"exists","navigator.vendor":"value",opera:"exists",ActiveXObject:"exists","navigator.appName":"value",platform:"plugin",webkitURL:"exists","navigator.plugins.length==0":"value"};try{setIncapCookie(test(o));document.createElement("img").src="/_Incapsula_Resource?SWKMTFSR=1&e="+Math.random()}catch(e){img=document.createElement("img");img.src="/_Incapsula_Resource?SWKMTFSR=1&e="+e}})();
</script>
<script>
(function() { 
var z="";var b="7472797B766172207868723B76617220743D6E6577204461746528292E67657454696D6528293B766172207374617475733D227374617274223B7661722074696D696E673D6E65772041727261792833293B77696E646F772E6F6E756E6C6F61643D66756E6374696F6E28297B74696D696E675B325D3D22723A222B286E6577204461746528292E67657454696D6528292D74293B646F63756D656E742E637265617465456C656D656E742822696D6722292E7372633D222F5F496E63617073756C615F5265736F757263653F4553324C555243543D363726743D373826643D222B656E636F6465555249436F6D706F6E656E74287374617475732B222028222B74696D696E672E6A6F696E28292B222922297D3B69662877696E646F772E584D4C4874747052657175657374297B7868723D6E657720584D4C48747470526571756573747D656C73657B7868723D6E657720416374697665584F626A65637428224D6963726F736F66742E584D4C4854545022297D7868722E6F6E726561647973746174656368616E67653D66756E6374696F6E28297B737769746368287868722E72656164795374617465297B6361736520303A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2072657175657374206E6F7420696E697469616C697A656420223B627265616B3B6361736520313A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2073657276657220636F6E6E656374696F6E2065737461626C6973686564223B627265616B3B6361736520323A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2072657175657374207265636569766564223B627265616B3B6361736520333A7374617475733D6E6577204461746528292E67657454696D6528292D742B223A2070726F63657373696E672072657175657374223B627265616B3B6361736520343A7374617475733D22636F6D706C657465223B74696D696E675B315D3D22633A222B286E6577204461746528292E67657454696D6528292D74293B6966287868722E7374617475733D3D323030297B706172656E742E6C6F636174696F6E2E72656C6F616428297D627265616B7D7D3B74696D696E675B305D3D22733A222B286E6577204461746528292E67657454696D6528292D74293B7868722E6F70656E2822474554222C222F5F496E63617073756C615F5265736F757263653F535748414E45444C3D343637363530323335393235383833303138352C31353839383230363939313334323336363430312C363434353932373433303933303930373438302C373739383036222C66616C7365293B7868722E73656E64286E756C6C297D63617463682863297B7374617475732B3D6E6577204461746528292E67657454696D6528292D742B2220696E6361705F6578633A20222B633B646F63756D656E742E637265617465456C656D656E742822696D6722292E7372633D222F5F496E63617073756C615F5265736F757263653F4553324C555243543D363726743D373826643D222B656E636F6465555249436F6D706F6E656E74287374617475732B222028222B74696D696E672E6A6F696E28292B222922297D3B";for (var i=0;i<b.length;i+=2){z=z+parseInt(b.substring(i, i+2), 16)+",";}z = z.substring(0,z.length-1); eval(eval('String.fromCharCode('+z+')'));})();
</script></head>
<body>
<iframe style="display:none;visibility:hidden;" src="http://my.incapsula.com/public/ga/jsTest.html" id="gaIframe"></iframe>
</body></html>

I just resubmitted my application, since all signs seem to point to a bad api key. Hopefully the next one I get solves the issue.

kuruoujou commented 10 years ago

Good news, my key was removed and readded, and it seems to have worked. This weekend I should be able to work on it a bit. I think I'm going to just try to replace the current myanimelist library in resources with an updated one that talks with the official api instead of the unofficial api, mostly because it'll be cheaper then standing up something somewhere to be hit by people.

So, thanks for helping me come to that conclusion - I wouldn't have felt confident enough in it, otherwise.

kuruoujou commented 10 years ago

Ok, so, it looks like I am going to need to stand up an instance of the unofficial api. I use two bits from it - watched_episodes and watched_status - to determine how to update the list. In fact, with the official mal api, I can only set user data, I can't actually access any of it, which seems to be a fairly huge limitation.

I will go ahead and set up a vps somewhere and update xbmal to point to it. I'll keep this issue updated with my current status. If you have any recommendations for VPS's, feel free to let me know.

kuruoujou commented 10 years ago

Well, the good news is, I've made the fix, it works great (I updated 27 shows! Man that's been broken a while...), but I can't get the fix in the repository. Rather, the fix is in the repository, but when I try to list the repository on my install, it's an empty list. I don't understand.

If you can get my repository to list, great! Let me know on the issues page for the repository, here. I'll be working on it and will hopefully get it fixed tonight - which means that anyone who installed via my repo should be getting the update next time your install of xbmc refreshes it's list.

If you use superrepo, I have no idea when it'll update. I only mention that because I took a look and apparently a bunch of people have installed it through there.

If you manually keep it up to date through git, this repo is up to date, and you can git pull the update and restart xbmc, and it should work.

Even though the repository is still broken, this issue is fixed. So, after a long 3 months, and a sincere apology by me for taking so long, I shall close this issue.

kuruoujou commented 10 years ago

Bah - it was a damn typo. It's fixed. However, in attempting to find a fix, I did change it's name to script.service.xbmal, to match XBMC's "preferred" naming scheme (I thought it might have had an effect - it didn't.) As a result, the settings directory has moved - move your ~/.xbmc/userdata/addons_data/script.xbmal directory (C:\Users\<username>\AppData\Roaming\XBMC\userdata\addons_data\script.xbmal in Windows, I think, no idea for mac) to ~/.xbmc/userdata/addons_data/script.service.xbmal, (C:\Users\<username>\AppData\Roaming\XBMC\userdata\addons_data\script.service.xbmal for Windows), and your user information and xbmc->mal database will be retained.

Sorry about that. However, everyone should be receiving the update to the working version shortly.

ressu commented 10 years ago

Awesome! At least in my case, the timeline of the update isn't really that big of a deal. Xbmal is a convenience feature, even if it is a rather useful one. Knowing how much work has been done to make everything work again, it's all on the plus side :)

kuruoujou commented 10 years ago

Glad to hear it - It is definitely a convenience, but it did get annoying (to me at least) to see "could not connect to mal" all the time. Now I get to see how many shows have been updated! Whoo!

...and since I'm running the mal api on my own server now, I can see how many unique connections I get. I thought that maybe 30-50 people were actively using this, but when I was looking around for fixes I found super repo and apparently they've got about 1300 downloads for it. So that's exciting. I don't know how long it takes for them to scrape the update, though. Now I can see how many of those are actually active...and update my api request accordingly.