After having improved the movie showtimes support and updated the UI so it aligns better with the Swipe UX, this Saturday I submitted Butaca to the Ovi Store. Yesterday (yes, that quickly!) I got a notification that it had been accepted. I'm really satisfied with this release: I use the application myself a lot, and it's great to be able to check which movies are playing on the cinemas and later review their details and the crew's.
I've uploaded a screencast to Youtube, displaying how the application works, and -as usual- screenshots are available at my Flickr gallery. You can also review the release details at the project page (where you'll be able to file bugs or get support as well).
If you wonder what's to come next, here's some insight:
- Check for extras after and during the credits (now that I have an API available for that)
- Offline mode / better data caching
- Embed trailer playback in the application
- UI improvements
Download Butaca for free from the Ovi Store!
Right now, probably all of you know IMDb. The Internet Movie Database is "the place" you'd go to look up a movie or check the filmography of an actor, writer or director. Some of you will also be familiar with IMDb Android and iOS applications, which allow you to check out that very same information on your mobile device, providing the means to settle any arguments (who directed The Terminator? And Aliens?). However, IMDb doesn't provide a free API: it provides a big ZIP file that you can download and parse to get that info. Then... -if you don't want to get a commercial license for the API- what are your chances as an Open Source developer willing to get the same functionality?
TMDb was started in the fall of 2008 as a side project in order to help serve high resolution posters and fan art for the popular XBMC project. What started as just a simple single page linked with some zip files has morphed into one of the most active user built movie databases on the entire Internet.
themoviedb.org is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with our powerful API, also used by the world's most popular media centers.
And indeed it is a powerful API. Butaca uses it to provide you with all the movie information you could need . At this moment, Butaca implements almost all the API exposed by TheMovieDb, so you can search and get information from people and movies and navigate through genres: the only thing you need is an Internet connection. Besides, Butaca allows you to mark the content as favorite so you'd keep it in your home screen as a shortcut.
Other available feature in Butaca is movie showtimes. Right now, I couldn't find any world-wide open showtimes API: looks like there are some local ones, which could serve in some countries (or areas inside some countries) but most of these APIs need to be licensed. So what's the solution at the moment? When the user wants to check what's on the theaters around him, the browser is open pointing to Google Movies. The browser is used also, if you want to check if there are shows for a particular movie. In the future (unless I find some good API), instead of opening the browser, a WebView will be used.
So if at this point you're still interested, please check out the project. You'll find plenty of screenshots there, and instructions on how to add the OBS repository (
deb http://repo.pub.meego.com/home:/spenap/Harmattan/ ./) to your device so you can install Butaca and start using it. And then, start filing bugs
This time, some screenshots before heading to bed.
You can check out the full set of screenshots at Picasa, the code at Gitorious, and -only for the braves!- a Debian package. Thanks a lot to Tuomas Siipola, who sent me the placeholder icons for persons and movies, and to Felipe Erias, who is guiding me on the UI design.
EDIT: Also uploaded the screenshots to Flickr, with descriptions in each view.
Three weeks ago, the N9 was announced. Little can be added to what's been written: it's a great achievement, but also a bitter one. Still, I really think that great things can be done on this platform, and that's why I applied to the N950 Devkit Program.
My initial idea was to port Maevies from Fremantle to Harmattan, keeping the same architecture. In the week or so that went between the N9 announcement and the filtering of the candidates for the devkit program, I resumed the development on the client side, bringing the ability to save and load favorite movies, as well as other minor UI fixes, and also updated the D-Bus service so that it would compile on HARMATTAN target.
When I knew I was selected for the program, I started using PySide (specifically Harmattan Python) to quickly get a working UI which could connect to the D-Bus service... but it turned out that I didn't need it, thanks to the powerful way to deal with XML models inside QML. Today I've uploaded "Butaca" application to gitorious. Still a draft of what I expect it to be, it lets the user search and browse through movies, and get detailed information about them. I also created an entry at the MeeGo Wiki at User:Spenap/Butaca.
- Query results are freed once they're no longer needed
- The service quits when the user closes the client
- There's a proper About window (taken from Joaquim Rocha's SeriesFinale)
- Maemo packages (Maevies, butaca-server) in extras-devel work fine (previous version for butaca-server lacked the butaca-service file, even if the autobuilder log said it was OK)
The nice news is that Maevies already had users! I haven't promoted this app neither in talk.maemo.org nor in Identica's Maemo group, but several Maemo-related blogs and forums were listing it. It's funny because, as butaca-server's previous version didn't work, those users were happy just with python-webkit pointing to Google Movies . I hope they enjoy the new features they'll find.
Some quick notes (the list of things which would deserve a full blog entry for themselves just keeps growing...)
- My manager (I don't like how "boss" sounds) retired last week. Although he visited us a couple of days more to spend some time with us, things will be, at least, different. We'll surely miss him.
- I started working with Grilo at Igalia, as the practicum work for the Free Software Master. I've been assigned a challenging task: improve the bindings infrastructure. Currently I'm getting familiar with the project, reading the doc and playing with the examples: it looks really interesting!
- Yesterday I received permissions to upload to extras-devel, so... maevies & butaca-server are available now! Of course, all said warnings about extras-devel still apply. In my case, it's about memory consumption: the backend doesn't free the objects exposed via DBus, so you have to kill it to get that done. It's a small footprint and all that, but it's not nice and of course not the way I want it: having it uploaded to extras will get me motivated to fix it (Sure, there will be other issues as well, and I'll set up the bugtracker as soon as possible)
- I've started with the slides for the JaMp talk at GUADEC-ES. There's still time left, but with these things, you never know...
Maevies was born twice. The first one, around the end of October, had a limited lifespan. The second one, a couple of months ago, was much more promising. As I've just told, I'm following the same architectural approach we have for Jamp, the Free Software Master's project. I was progressing fairly well, and feeling close to what I'd call a 0.1 release, I wanted to provide Debian packages. I started packaging the backend: another blog entry could be great to explain how I solved the issues I found, but these two commits should be pretty self-explanatory. The first one provides the Debian package infrastructure, so the binary is created. The second one does the necessary magic to get the service file in the appropriate directory. My sources for this were Vagalume project and this DBus tutorial.
However, I didn't know what to do with the Python part. Ship it together? Separately? How? From what I've seen, Python apps often use distutils for distribution and installation: creating a setup.py for the python part of maevies wasn't hard: with a simple file like this one, all the Python code could be distributed. But I still had to put it in a package... so I decided to stop losing time and do the following:
- Maevies' backend and frontend will be separated from now on. That makes building Debian packages really easy, and later, will be better for i18n support.
- Move from Maemo's garage to gitorious. In one of the latests IRC meetings, they talked about shutting down the garage and start providing a migration path. The sooner I do it, the better.
Both the split up and the move to gitorious have an additional benefit: the backend, being perfectly suited for any modern GNU / Linux distro, is now separated and in a more visible site, with the project being called Butaca, and the backend butaca-server. Maevies' UI is what will keep the "Maevies" name, being fully developed in PyGTK, and focusing on Maemo. (A Gnome desktop client should follow soon)
Something really nice about this move is that I'll preserve the git history. Thanks to this Stack Overflow link, nothing will be lost: it explains how to split (or detach as they say) a directory, with its history, from the whole project.
Quick update on maevies status:
- Movie posters are fetched from Internet
- Google movies page is shown when 'now on theaters' is clicked
- It is possible to search for stingers and extras after / during the credits on WATC (What's after the credits)
- WATC wiki is shown when a WATC result is clicked
Pictures from this update have been uploaded to maevies' picasa gallery. I'm also working on a debian package: I'll keep you updated
Back in October, a friend and I started a project targeting Maemo. We had been thinking about programming for maemo for a lot of time (but for Diablo devices), and Fremantle's new UI, so appealing, almost got us buying a N900 (we ended up buying a HTC Tattoo, but that's another story).
At that moment, I was going to the cinema maybe twice a month, and as some of my friends have the (sometimes annoying) habit of waiting after the credits to see if the movie has extra scenes or something, I thought it would be nice if I had an app in my phone which could tell me if it was worth waiting. A nice brainstorm started, and we added showtimes and other movie info to the app, so Maevies -from movies + maemo- was born. After that, it was "just" a matter of researching which web services could provide that info.
We got the backend "working" rather soon. We started using librest and synchronous calls, so the user would be blocked until we got a response from the web services. We wanted to have a basic backend functionality, and quickly focus on the UI but... we stopped there. We met a couple of times to get started with the UI, but didn't get too far.
About a month ago I announced that we were starting the development module in the master and that, after having enjoyed an introduction to python, I was quite convinced to port Maevies to Python. Then, I commented in the same post that I wouldn't port it, but mimic the architecture we're using for the master app: C with GObject for the model, and Python at the view, connected using DBus. Soon I had all the old maevies backend adapted to use GObject, all the librest references removed and replaced with libsoup's, and a basic prototype with PyMaemo, with a fake behaviour like the one I would expect from the actual app.
Today, I can announce a "functional" pre-alpha version of Maevies. I've created a page for it at this blog, and linked it from the maemo garage's one, have taken some screenshots, and pushed the last commits (yeah, I also migrated from subversion to git, now that I'm feeling really comfortable with it).
So what's going on with maevies?
- About the backend: A movie can be searched in themoviedb.org -getting its basic info- and whatsafterthecredits.com -getting the information about extra scenes. There is also a module which parses Google Movies html, not using GObject yet, but some changes in their API seem to have broken its support.
- About the user interface: The user can query for a movie using themoviedb service, retrieve a list of results, and display the basic info for the selected movie. (The DBus service must be brought up manually, as I didn't create the .service file to allow DBus doing it). Besides the screenshots below which should give the general idea, there's this screencast. It has, however, a lot of flickering: it's been recorded with the app running under Xephyr, using Istanbul. If you know a better way to record a screencast, please drop me a comment
And what are the next steps?
- Not all the TMDb retrieved data is exported via DBus, nor displayed later on the UI, so that would be a point.
- It would be nice to display the movie images, also.
- Bringing the whatsafterthecredits info to the UI would finally add the initially desired functionallity