• 151.917 films
  • 8.711 series
  • 26.233 seizoenen
  • 580.380 acteurs
  • 330.478 gebruikers
  • 8.608.914 stemmen
Avatar
 

MovieMeter API / webservice

zoeken in:
avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

MovieMeter is al enig tijd het doel van diverse scriptjes, scrapers, import mogelijkheden en andere programmaatjes die informatie van MovieMeter ophalen, interpreteren en op een andere plek tonen. Denk dan aan dvd-collectie software, media center applicaties en usenet/torrent sites. Dit is helemaal niet erg, in tegendeel. Zolang mensen de server niet krom trekken vind ik het eerlijk gezegd wel een eer dat mensen deze site zien als "de" Nederlandse bron voor filminformatie, en als er netjes aan bronvermelding wordt gedaan (wat vaak het geval is) is het ook nog eens gratis reclame.

Ik vind het helaas wel een beetje pijnlijk hoe deze scriptjes te werk (moeten) gaan. Voor een paar bytes aan informatie moet een vrij zware pagina van de site opgehaald worden, en vervolgens moet er aan de hand van de opgehaalde HTML geraden worden waar welke informatie te vinden is. Als ik ergens een keer een stukje HTML aanpas zullen er gelijk diverse scripts op hun muil gaan.

Vandaar dat ik een begin heb gemaakt met een heuze MovieMeter API, in de vorm van een XML-RPC webservice. De technische details en precieze API kun je in de Wiki vinden: API - MovieMeterWiki . Het idee is in ieder geval dat je een klein stukje XML naar de server kunt sturen vanuit een andere website of applicatie, en vervolgens een klein stukje XML terugkrijgt van MovieMeter waar netjes in staat wat je zoekt. Op deze manier kun je in eerste instantie zoekresultaten en filmdetails ophalen en later bioscoop, videotheek en tv-lijsten raadplegen. Misschien kan er over een tijdje misschien zelfs wel ingelogd en gestemd worden via de API, waardoor het voor andere mensen in theorie mogelijk wordt om bv. een MovieMeter Windows Mobile applicatie te schrijven. Het is in ieder geval naar model van Last.fm waar je ook met elke willekeurige applicatie mee kunt inloggen en scrobblen enz, alleen natuurlijk een stuk minder ambitieus.

Concreet komt het er op neer dat ik graag wil dat alle eerder genoemde scrapers en scriptjes gebruik gaan maken van deze nieuwe API. Voordeel: makkelijker programmeren voor de schrijvers van deze scriptjes, en minder zware belasting voor de server. Ik zal binnenkort het gebruik van de API gaan proberen te "promoten" door de huidige scriptjes te breken dmv wat wijzigingen in de HTML.


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

Goed werk! Ik zag toevallig de melding in me gegenereerde plaatjes verschijnen. En zal deze week me script ombouwen, ben benieuwd hoe het werkt.


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

Ik ook laat vooral weten als je vragen hebt of als het niet naar wens werkt


avatar van Chris001

Chris001

  • 1 berichten
  • 0 stemmen

Hallo Jordy,

ik heb zojuist jouw bericht ontvangen op binaries4all en beantwoord, maar ik zet het hier ook maar even neer.

Momenteel ben ik druk bezig met andere programma's die meer voorkeur hebben, waardoor ik geen tijd heb om MovieMeter Grabber te herschrijven. Ik begrijp dat hele pagina's downloaden voor een beetje informatie onnodig bandbreedte kost en zal daarom geen updates meer uitbrengen van het programma nadat je HTML aanpassingen gedaan hebt. Indien ik een andere keer meer tijd en zin heb zal ik overstappen op de API

Met vriendelijke groet,

Chris


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

duidelijk, thanks!


avatar van Zavo

Zavo

  • 6392 berichten
  • 1616 stemmen

Geweldig Jordy, dat je dit aan het maken bent!


avatar van Ronny!

Ronny!

  • 4 berichten
  • 0 stemmen

Jordy, als eerste wil ik even zeggen dat dit een top site is!

Nadat ik diverse programma's heb gebruikt om mijn eigen film collectie in een database te zetten, maar dit steeds niet helemaal naar mijn wens was, ben ik maar een php script gaan schrijven.

Het kost inderdaad veel tijd om een beetje informatie op te halen van moviemeter. Daarom vind ik het super dat je dit aan het maken bent!

Ik heb hier nog nooit mee gewerkt, maar zal me er zeker in gaan verdiepen!


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

Heb inmiddels wat werkend. Alleen bij zoeken naar titels met "the" erin krijg ik dit niet als eerste resultaat.

B.v. het eerste resultaat met zoeken naar "the rocker" geef me "trucker" terug. Alleen door specifiek te zoeken op "rocker, the" krijg ik de "the rocker" als eerste resultaat. Aangezien mijn systeem met een "best guess" werkt lijkt het me wel praktisch als het zoek systeem hier rekening mee houdt. Hoewel je dat misschien zelf anders ziet. Ik moet zeggen het werkt wel lekker snel. Dus nogmaals bedankt.


avatar van Onderhond

Onderhond

  • 86791 berichten
  • 11206 stemmen

Goed dat MM ook op dit vlak wat meegaat met z'n tijd Zou eigenlijk zelf wat meer van programmeren moeten kennen om er echt wat mee te doen, maar toffe toevoeging.


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

Voor de geintresseerden:

http://guidob.synnergy.net/mm/mm.php?search=rocknrolla

Via search= kun je zoeken. Overigens zal dit niet lang online staan.

Voorbeeld:

http://guidob.synnergy.net/mm/the%20rocker.jpg


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

het probleem met lidwoorden (bv "the rocker") is opgelost


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

Ik krijg bij het zoeken naar "de scheepsjongens van bontekoe" de error "Invalid return payload: enable debugging to examine incoming payload (XML error: Invalid character at line 25, column 792)".

En bij "an american crime" krijg ik als eerste american crime terug.

Bij het zoeken op guns krijg ik de film uit 1990 als eerste terug, maar dat zal ik wel zelf moeten sorteren?


avatar van MaZZie

MaZZie

  • 1 berichten
  • 46 stemmen

het zou mooi zijn als het ook mogelijk is om de lijst "mijn films" over te halen naar mijn website.

Ik ben er wel lang uit geweest met PHP.

Het resultaat van $results wordt als array weergegeven. Hoe krijg ik deze nu gesplitst?

search results:array(4) { [0]=> array(6) { ["filmId"]=> string(4) "1252"

als ik nu b.v. alleen het filmId op me site wil weergeven.


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

$film[0]["filmId"] gebruiken...

Dit kun je b.v. weer in een nieuwe message gebruiken om de film details binnen te halen:

$message = new xmlrpcmsg("film.retrieveDetails", array(new xmlrpcval($session_key, "string"), new xmlrpcval($film[0]["filmId"], "int")));


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

Jordy, klasse actie zo'n web service.

Ook ik ben zo'n scraper en heb mijn eigen Windows app ontwikkeld in C#.NET om mijn films te archiveren. Ik heb de interface van jouw web service geimplementeerd en het werkt allemaal zeer goed, mijn complimenten.

Tot nu toe gebruik ik de volgende interfaces:

api.registerClient

api.startSession

film.retrieveScore

film.retrieveDetails

Op mijn todo lijstje staan:

film.search

director.retrieveFilms

evt. voor de toekomst film.top, film.tip, film.bioscoop, film.videotheek

Ik heb toch de volgende vragen/verzoeken:

- is het uberhaupt nodig om api.closeSession te gebruiken? Dit doe ik nu niet maar alles loopt op rolletjes.

- mijn app scrapt ook de grafieken van stemhistorie en stemverdeling. Is het mogelijk om deze grafieken op te nemen in film.retrieveDetails zoals nu gebeurd met "thumbnail"?

Ik heb mijn credits van 100 sessies voor vandaag alweer verbruikt dus morgen gaan we weer verder met debuggen/testen. Greetings.


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

api.closeSession is inderdaad niet per se nodig

Ik vind persoonlijk stemgrafieken e.d. niet zo heel erg interessant voor een api als deze, maar ik zal er nog eens over nadenken


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

Vraagje over meerdere uitgaande RPC's tegelijkertijd.

In mijn programma kan ik lijsten opvragen van b.v. bioscoop 2009, videotheek 2009, topnoteringen, etc. Per lijst wordt in mijn prog een thread gemaakt die parallel de web service gaat raadplegen voor film informatie.

Wanneer een request uitstaat waarvan de response nog niet binnen is, dan kan het voorkomen dat een andere thread een andere request uitvoert. Echter, het kan dus zijn dat de session key op dat moment niet meer valide is omdat er reeds 50 requests zijn uitgevoerd op die session key. Er wordt dan een nieuwe session key aangevraagd terwijl een response nog niet binnen is van een request gedaan op de vorige session key.

Mijn vragen:

1) Kan de web service hiermee overweg, zou ik nog steeds een valide response moeten krijgen van een uitstaande request die aangevraagd is op een 'oude' session key?

2) Of moet ik alle responses binnen laten komen voordat ik een nieuwe session key aanvraag?

3) Of sterker nog, kan ik maar één request tegelijkertijd uitvoeren?

M.a.w. is de web service threadsafe en sessionsafe?


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

Ter bevestiging van een eerdere melding van guidob:

[guidob]

Ik krijg bij het zoeken naar "de scheepsjongens van bontekoe" de error "Invalid return payload: enable debugging to examine incoming payload (XML error: Invalid character at line 25, column 792)".

Ook ik krijg een invalide XML terug bij het opvragen van deze titel.


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

Vreemd, ik krijg (vanuit PHP) geen foutmelding bij die zoekopdracht

De webservice verwerkt de inkomende calls op volgorde van binnenkomen, je kunt er meerdere tegelijk doen maar als jouw eerste request als laatste binnenkomt bij de server, dan zal deze (bij overschrijven van de limiet) niet uitgevoerd worden.


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

De error krijg je niet bij het zoeken maar bij film.retrieveDetails.


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

@Jordy:

Ok, duidelijk. Aangezien de client en server niet weten wat voor hobbels een request onderweg tegenkomt, kan het inderdaad dus voorkomen dat een eerste request (met een verlopen session key) als laatste binnenkomt met als resultaat dat het request niet wordt uitgevoerd. Ik begrijp dat dit is lastig te verkomen is. Gemakshalve laat ik nu mijn app één request tegelijkertijd uitvoeren.

@Jordy, @Guidob:

Ik krijg deze fout (response is invalid XML) bij zowel film.retrieveDetails als bij film.search bij film 43336 (De scheepsjongens van Bontekoe). Bij het opvragen in mijn app van alle bioscoop releases van jaargang 2009, krijg ik > 200 goede responses. De response bij de volgende films (film.retrieveDetails + film.retrieveScore) gaan echter telkens fout. Zouden jullie dit kunnen bevestigen dan wel ontkennen in jullie app? Bvd.

Film ID: 52048

Film ID: 49083

Film ID: 52316

Film ID: 53381

Film ID: 51988

Film ID: 55918

Film ID: 51791

Film ID: 49833

Film ID: 42552

Film ID: 49330

Film ID: 55917

Film ID: 52003

Film ID: 54085

Film ID: 46740


avatar van guidob

guidob

  • 10 berichten
  • 3 stemmen

Zoeken op "de scheepsjongens van bontekoe" werkt inmiddels merk ik.


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

Juist! Met zowel film.search als film.retrieveDetails kan ik nu de gevraagde informatie ophalen m.b.t. De Scheepsjongens van Bontekoe.

Ook het ophalen van film informatie van releases die in 2009 in de bioscoop verschijnen gaat een stuk beter. Onderstaande films leveren echter telkens nog een invalide XML als response op.

Film ID: 53381

Film ID: 51791

Film ID: 49330

Film ID: 52003

Film ID: 54085


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

Sommige plotomschrijvingen bevatten leestekens die niet goed naar XML omgezet worden. Ik zal het binnenkort gaan uitzoeken, bedankt voor de voorbeelden.


avatar van Jordy

Jordy

  • 22563 berichten
  • 2952 stemmen

als er nog steeds films zijn waar de details niet van opgehaald kunnen worden hoor ik graag een voorbeeld


avatar van Mark101

Mark101

  • 13 berichten
  • 5 stemmen

Ik heb deze keer wat uitgebreider getest en het ziet er bijna vlekkeloos uit. Ik heb alle titels opgevraagd van Bioscoop 2009, Videotheek 2009, Top250, Alternatieve top 100, Top recent, Tip250 en mijn eigen collectie. In totaal zijn dit ruim 1200 verschillende titels. Slechts 13 titels (=~1%) leveren, in mijn app althans, een invalide XML als response op. Ik heb deze testrun tweemaal uitgevoerd met exact hetzelfde resultaat.

Per titel roep ik 2 queries aan, namelijk film.retrieveDetails en film.retrieveScore. De ongewenste response wordt dus veroorzaakt bij één van de 2 genoemde queries (ik kan helaas niet zeggen welke want dat wordt in mijn app niet gelogd).

De 13 films die een invalide XML als response opleveren zijn:

Film ID: 56206

Film ID: 49330

Film ID: 56223

Film ID: 46682

Film ID: 18690

Film ID: 44803

Film ID: 54512

Film ID: 14834

Film ID: 30518

Film ID: 5732

Film ID: 6355

Film ID: 45071

Film ID: 1359


avatar van ericp

ericp

  • 3 berichten
  • 0 stemmen

Geweldig dat moviemeter nu met api`s gaat werken ik zie dat er al een aantal mensen zijn die een lopend script hebben ik zelf ben geen programmeur maar wel film liefhebber is er een mogelijk dat iemand zijn script wilt delen zodat ook andere van deze service kunnen genieten.?

filmliefhebber ericp



avatar van ericp

ericp

  • 3 berichten
  • 0 stemmen

guidob bedankt voor je snelle reactie dit is volgens mijn beperkte programmeer kennis een php code weet jij misschien ook hoe kan ik hier een java code van kan maken .


avatar van LoaderCoder

LoaderCoder

  • 10 berichten
  • 0 stemmen

Ik heb nog een flim gevonden waar ik een invalide xml op krijg.

Zullen de leestekens zijn.

The Killer Next Door, Film ID :36128

Een ander probleem gevonden.

Bled , Film ID : 55770, geeft bij de film details op de durations struct een enkele boolean waarde terug, in plaats van duration en description. (Ik heb de XML nog als je hem wilt hebben)..

Jordy : Bedankt voor het maken van de Api.. dit werkt een stuk beter dan al het andere gepruts.

Bezig in C# om de API werkend te maken...

Groeten, LoaderCoder.

Gast

  • berichten
  • stemmen

Let op: In verband met copyright is het op MovieMeter.nl niet toegestaan om de inhoud van externe websites over te nemen, ook niet met bronvermelding. Je mag natuurlijk wel een link naar een externe pagina plaatsen, samen met je eigen beschrijving of eventueel de eerste alinea van de tekst. Je krijgt deze waarschuwing omdat het er op lijkt dat je een lange tekst hebt geplakt in je bericht.

* denotes required fields.