An Offline Client for Hideki’s Songlist

Hideki’s Songlist Offline is now available from Chrome Webstore.

As much as Hideki’s Songlist Offline started off from my needs (and still serving mostly for that reason…) this offline solution also comes from my desire to have offline access to the Hideki’s Songlist even when there is no Internet connection available.

As Hideki’s Songlist already exposes API to exchange data outside of the system, in the form of text/songlist, this project involved implementing text/songlist parser on the local side.

Actually, both Lookup YouTube for text/songinfo and  Lookup for text/songinfo extensions for Google Chrome have already supported text/songinfo parsing. They essentially take text/song and convert it to queries (and API call, in case of

Hideki’s Songlist Offline takes same premise, however, I have decided to use AngularJS this time. This simplified JSONP parsing.

Once JSONP is loaded from Hideki’s Songlist web system, it is stored into local storage database. This essentially creates replicated copy of songdata library. Currently, when the update button is pressed, it drops whatever you have in current database and reload fresh copy of list from the server. This is ridiculously inefficient, so expansion is planned to deliver only updated information through the API.

Once data is loaded, subsequent loading of the Chrome app will load current contents within the database instead of one on the server, thus realizing offline functionality of Hideki’s Songlist.

I’ve created this project in 3 hours or so, thus still a lot to polish. The code is available from songlist-offline-client on GitHub. If you want to experiment plugging it with your own implementation of text/songinfo, please feel free to do so.

Improvements are planned. Stay tuned!

Hideki’s Song List: 6/21 Feature Update

API Updates:

Introducing Hideki’s Song List

I sing different kind of songs at karaoke, and sometimes it is hard to keep track of what I can sing. I used to keep the list of such song using Google Docs (I guess it is now called Google Drive)

About two weeks I go, I decided to make the new system instead of appending yet another entry into spreadsheet on Google Docs and that’s when Hideki’s Song List is born.

While what I’m trying to accomplish using this system very simple — to display the list of songs, however, I wanted to integrate unique features.

I decided to use PHP with MySQL for its backend. It allows very rapid development. While I am not very fluent in PHP in particular, I am required to maintain quite a bit of existing PHP codes at my day job, this is determined to be good project strengthen my skills in this field as well. (other languages I was looking at was Django and Ruby, however, they are determined to be bit slow, at least in where it is hosted. I can’t afford VPS for such personal project, so I have to resort to shared hosting, which PHP works decently.)

Another area of technology I wanted to experiment was Web Intents ever since Google announced it on their Chromium blog. Web Intents system allows you to implement rich web interaction between different web services. Using this structure, I have decided to integrate feature to look up information about each entry on external services. To accomplish data exchange between these services using Web Intents, I have developed text/songlist JSON format. Currently Web Intents is supported by Google Chrome, and the service need to implemented and added as an extension to Google Chrome, which means I had to develop Google Chrome Extension that can parse JSON format dispatched by Web Intents. YouTube and support is available so far.

While only implementation of text/songlist is Hideki’s Song List as of writing this, but I am more than happy for someone else to take advantage of it. (and those extensions above should start working right away!) As the specification being development stage, you may see some revisions over time, but base shouldn’t change too much. If you are interested being part of finalizing specification, please let me know — with enough people participating, I will probably make Google Groups or something for it.

Hideki’s Song List exposes an API in text/songinfo as well. (this is mainly intended for Android app I want to implement, haven’t gotten around to do it, though.)

So there I have it, the simple yet decently powerful system that keeps track of songs I can sing. There certainly will be more features to come!