Pages

Sunday, May 8, 2011

New news or no news? Why Google music and YouTube Rentals for Android devices are obviously ready to roll

And once again, my dear Google, I've to apologize for all that poking around in your guts.. But I can't do anything about my feelings for you...
Today I discovered something special... small bits of Google Music, buried deep down in the javascript code of the Android Market.. that's right. The Android market and nowhere else...

What does that mean? Basically that you will be able to push-sync the music to your devices... but let's step through every bit of my discoveries together.

The magic lies in the production-compiled javascript found easily inside the website.

here you are :D

Now let's see what we can find if we search for some music terms inside our javascript:


I beautified the code a little, so it is easier to read..

Here we have the first evidence of Google Music purchases:



Ze: "This music can be heard on..."


Nothing special so far, but wait...
Here we have the parts of the Audio-Player that is used for previewing the Audio-Tracks :)


function Ym(a, b, c) {
a = M(a.a, "preview-control", b);
Rb(b, "audio-playing", c);
Rb(b, "audio-idle", !c);
Rb(a, "pause", c);
Rb(a, "play", !c);
}

r.Pi = function() {
var a = M(this.a, "audio-playing");
Ym(this, a, !1);
Xm(this, uc(a, "tr", "track-row"), !1);
};


So, if you thought this was neat, wait for what comes next:
YouTube Movie Rentals on your Android device!

<h1 class="co-dialog-additional-header">', "How to watch your movie", '</h1><div class="co-dialog-additional-content"><table><tr><td style="width: 47%"><div class="chrome-icon goog-inline-block"></div><div class="co-dialog-additional-content-movies goog-inline-block"><div class="co-dialog-additional-content-title">', "On the web", '</div><div class="co-dialog-additional-content-info">', f, '</div></div></td><td><div class="android-icon goog-inline-block"></div><div class="co-dialog-additional-content-movies goog-inline-block"><div class="co-dialog-additional-content-title">', "Verizon Motorola Xoom", '</div><div class="co-dialog-additional-content-info">', "Open the Videos app on your Motorola Xoom.", "</div></div></td></tr></table></div>"), d = d.toString(), fj(c, d || ""));

If I may de-clutter that whole stuff for you:
"How to watch your movie" "On the web", "Verizon Motorola Xoom" "Open the Videos app on your Motorola Xoom."

So, YouTube rentals come to our Android devices real soon! You have to keep in mind that this is the Production-Code of the Android market and not the canary-build! (Yeah, they actually have testing builds of all the webapps too -> Poke around in the Google Voice code and you find the proof for the canary version)
So that means that basically they just have to flip a switch and get going!


function Oc(a, b) {
var c = b || new N;
Kc(Bc(a, {
xe: "movies",
Ze: "This video can be watched on...",
mg: "You are renting...",
lg: !0,
kg: "Rental period",
ig: "Compatible with..."
}), c);
if (!b) return c.toString();
}
function Eg(a) {
return a.a == "YOUTUBE_MOVIE";
}

Here the embed code for the Trailer-Popups:



sa("enableTrailerPopup", function() {
var a = M(Gc.c, "trailer");
if (a) {
var b = a.getAttribute("data-trailerId"), c = a.getAttribute("data-docTitle");
T(Gc.u, a, $, function() {
var a;
a = {
wi: b
};
var f = new N;
Jc({
dg: "https://www.youtube.com/embed/" + O(a.wi) + "?autoplay=1&vq=large&rel=0&autohide=1"
}, f);
a = f.toString();
Vi(Fc.a[4], a || "", c, "trailer-dialog", .98);
});
}
});


Here are some more findings... these Variables define the page-selectors that determine the current visible page:


function Hg(a) {
if (a.indexOf("app-") != 0) if (a.indexOf("album-") == 0) return "MUSIC_ALBUM"; else if (a.indexOf("artist-") == 0) return "MUSIC_ARTIST"; else if (a.indexOf("song-") == 0) return "MUSIC_SONG"; else if (a.indexOf("book-") == 0) return "OCEAN_BOOK"; else if (a.indexOf("movie-") == 0) return "YOUTUBE_MOVIE";
return "ANDROID_APP";
}


And some wording-definitions:


switch (c.Li) {
case "ANDROID_APP":
c.wb ? d.a("Installed") : d.a("Purchased");
break;
case "OCEAN_BOOK":
d.a("Read");
break;
case "MUSIC_ALBUM":
d.a("Listen");
break;
case "MUSIC_TRACK":
d.a("Listen");
break;
case "YOUTUBE_MOVIE":
d.a("Watch");
}

And some status messages:

var Ai = {
ANDROID_APP: "This app will be downloaded to your device shortly.",
MUSIC_ALBUM: "Your album is now ready for you to listen...",
MUSIC_SONG: "Your song is now ready for you to listen...",
OCEAN_BOOK: "Your ebook is now available for you to read.",
REFUND: "Your refund was successfully processed.",
YOUTUBE_MOVIE: "Your movie is now ready to watch..."
}, Bi = {
ANDROID_APP: "Processing the install request...",
MUSIC_ALBUM: "Adding the album to your library...",
MUSIC_SONG: "Adding the song to your library...",
OCEAN_BOOK: "Making the book available to read...",
REFUND: "Processing the refund request...",
YOUTUBE_MOVIE: "Making the movie available to watch..."
}, Ci = {
ANDROID_APP: "Please sign-in to purchase this Android App.",
MUSIC_ALBUM: "Please sign-in to purchase this Album.",
MUSIC_SONG: "Please sign-in to purchase this Song.",
OCEAN_BOOK: "Please sign-in to purchase this Book.",
YOUTUBE_MOVIE: "Please sign-in to purchase this Movie."
}, Di = {
ANDROID_APP: "Please sign-in to install this Android App.",
MUSIC_ALBUM: "Please sign-in to get this Album.",
MUSIC_SONG: "Please sign-in to get this Song.",
OCEAN_BOOK: "Please sign-in to get this Book.",
YOUTUBE_MOVIE: "Please sign-in to get this Movie."
};




For all those who were brave enough to browse all that lame code until here... One of Googles infamous Error messages :D

"Oops, we're temporarily having trouble with your order. Right now our engineers are busy searching the back room for another copy of \"" + (a.f + "\". Once they find it, we'll be back in business. Apologies, and please try again later."




By the way there is in fact a hidden "Post to Buzz" button, but it is obviously not enabled... I don't know why :(



<div class="google-buzz-button-container goog-inline-block"><a title="',"Post to Google Buzz"

And my personal favorite:
'" data-message="CONFIDENTIAL - INTERNAL ONLY! POST USING ONLY YOUR GOOGLE.COM ACCOUNT! '
This string is included in the hidden buzz button! :D

So, what I expect:

The appearance in the production code probably hints that one or more of these features will be revealed at the Google I/O 2011!
Only 2 days left!

No comments:

Post a Comment