- Home
- Filmforum
- De Site - Algemeen
- MovieMeter API / webservice
MovieMeter API / webservice
Jordy
-
- 22567 messages
- 2952 votes
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.
guidob
-
- 10 messages
- 3 votes
Goed werk! Ik zag toevallig de melding in me gegenereerde plaatjes verschijnen. En zal deze week me script ombouwen, ben benieuwd hoe het werkt.
Jordy
-
- 22567 messages
- 2952 votes
Ik ook
laat vooral weten als je vragen hebt of als het niet naar wens werkt
Chris001
-
- 1 messages
- 0 votes
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
Zavo
-
- 6392 messages
- 1616 votes
Geweldig Jordy, dat je dit aan het maken bent! 
Ronny!
-
- 4 messages
- 0 votes
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!
guidob
-
- 10 messages
- 3 votes
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.
Onderhond
-
- 87592 messages
- 12834 votes
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.
guidob
-
- 10 messages
- 3 votes
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:
Jordy
-
- 22567 messages
- 2952 votes
het probleem met lidwoorden (bv "the rocker") is opgelost
guidob
-
- 10 messages
- 3 votes
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?
MaZZie
-
- 1 messages
- 46 votes
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.
guidob
-
- 10 messages
- 3 votes
$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")));
Mark101
-
- 13 messages
- 5 votes
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.
Jordy
-
- 22567 messages
- 2952 votes
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
Mark101
-
- 13 messages
- 5 votes
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?
Mark101
-
- 13 messages
- 5 votes
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.
Jordy
-
- 22567 messages
- 2952 votes
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.
guidob
-
- 10 messages
- 3 votes
De error krijg je niet bij het zoeken maar bij film.retrieveDetails.
Mark101
-
- 13 messages
- 5 votes
@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
guidob
-
- 10 messages
- 3 votes
Zoeken op "de scheepsjongens van bontekoe" werkt inmiddels merk ik.
Mark101
-
- 13 messages
- 5 votes
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
Jordy
-
- 22567 messages
- 2952 votes
Sommige plotomschrijvingen bevatten leestekens die niet goed naar XML omgezet worden. Ik zal het binnenkort gaan uitzoeken, bedankt voor de voorbeelden.
Jordy
-
- 22567 messages
- 2952 votes
als er nog steeds films zijn waar de details niet van opgehaald kunnen worden hoor ik graag een voorbeeld
Mark101
-
- 13 messages
- 5 votes
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
ericp
-
- 3 messages
- 0 votes
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
ericp
-
- 3 messages
- 0 votes
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 .
LoaderCoder
-
- 10 messages
- 0 votes
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.
