Showing posts with label YouTube. Show all posts
Showing posts with label YouTube. Show all posts

Wednesday, April 15, 2009

DTPtv - Part 1 - Using YouTube APIs in Eclipse

Hey there...

So yes, I'm back to talking about DTPtv... (You can see my introduction to the series here.)

YouTube, LLCImage via Wikipedia

Now that we know generally what we want to do, we'll start by focusing on making the YouTube APIs usable in Eclipse and perform a simple test. Easy enough, right?

So the first thing I had to do was grab the YouTube jars from Google. I found those here. I grabbed the latest version of gdata-samples.java. The YouTube/Google APIs also have some dependencies, so I had to go out and grab imap.jar, mailapi.jar, pop3,jar, and smtp.jar. I was able to re-use a plug-in wrapper for javax.activation.jar from Orbit, which I'll talk about in a sec.

With all of the jars downloaded, I just had to create an Eclipse plug-in wrapper so they were available to other plug-ins. To do this is cake... Right-click in the Package Explorer, select New->Project, and in the list of Wizards select "Plug-in from existing JAR archives". Select your external jars (it will copy them into the plug-in wrapper). I named mine "com.google.gdata.youtube" and unchecked the "Unzip the JAR archives into the project" so it kept the jars as jars, not source code. Click Finish and watch the magic happen.

When it's done, I had to do one last thing to add a dependency. The Google APIs still depend on the javax.activation.jar...

Do you remember I mentioned the Orbit project? Well, you can read more about it here, but the idea is that it provides a repository for a number of third-party projects/resources that are shared across Eclipse. These have already gone through the IP process and are approved for our use. (Note however that even if a library is approved by the Foundation for use by all projects, project teams must still fill out a Contribution Questionnaire and notify the Foundation of their intentions to use a library). And there are quite a few of them. If you look at the latest build (from back in August 2008), you'll see 83 different packages available.

In this case, I just want javax.activation, so I locate it in the list, download it, and drop it in my Eclipse environment. Once the workbench picks it up, I can add it as a dependency in the MANIFEST.MF file for my wrapper plug-in.

Cool. So that pretty much wraps up my jar wrapper plug-in. Not too tough there.

So now what? Now that we have this plug-in, we can write a quick little application to do something with it.

I've gone ahead and created a simple class that does a very basic YouTube search...
package org.eclipse.datatools.sample.utube.sandbox;

import java.io.IOException;
import java.net.URL;

import com.google.gdata.client.youtube.YouTubeQuery;
import com.google.gdata.client.youtube.YouTubeService;
import com.google.gdata.data.youtube.VideoFeed;
import com.google.gdata.util.ServiceException;

public class UTubeUtils {

public static String TR_FEED_URL = "http://gdata.youtube.com/feeds/api/standardfeeds/top_rated";//$NON-NLS-1$

/**
* Return a list of video entries back to the calling method
*/
public static VideoFeed getResults(String author, String title) throws IOException, ServiceException
{
YouTubeService myService = new YouTubeService(
"", //$NON-NLS-1$
""); //$NON-NLS-1$

String VIDEO_FEED = TR_FEED_URL;
YouTubeQuery query = new YouTubeQuery(new URL(VIDEO_FEED));

//set the author
if( (author != null) && author.length() > 0)
{
query.setAuthor(author);
}
//set the actual query string
if((title != null) && title.length() > 0)
{
query.setFullTextQuery(title);
}

//choose most viewed as the ordering
query.setOrderBy(YouTubeQuery.OrderBy.VIEW_COUNT);

//get the video feed
VideoFeed feed = myService.query(query,VideoFeed.class);
return feed;
}
}

So all that this really does is get a list of the top rated videos currently at YouTube. Pretty straightforward.

You'll notice a couple of things about the code. You have to have a developer key (your own ID as a developer or one for a particular company) and a client ID (seems you can have many of these). This basically lets the Google & YouTube APIs know that you're legitimately asking for data and aren't some rogue hacker trying to cause trouble. You can get these two items here. Once you have them, you can just create new constants for them and just use the constants.

So if you swap your developer key and client ID into the above code, it should do a quick search. But how should we test it?

I like creating new plug-in projects with example menu actions. To do this is pretty easy... Right-click in the Package Explorer, select New->Project, and in the list of Wizards select "Plug-in Project". Name it and set the plug-in ID and other info, and on the "Templates" page in the wizard, select "Plug-in with a popup menu." By default it keys off an IFile, so you can get to it from the Navigator or Project Navigator in the workbench.

It goes off and creates the basic code and you can then use your new utility class pretty easily by changing the run() method in the action class to look something like this:

    public void run(IAction action) {
try {
VideoFeed feed = UTubeUtils.getResults(null, null);
if (feed != null) {
if (feed.getEntries() != null && feed.getEntries().size() > 0) {
System.out.println("Found some videos...");
Iterator<VideoEntry> iter = feed.getEntries().listIterator();
while (iter.hasNext()) {
VideoEntry entry = iter.next();
System.out.println("Video Entry: " + entry.getTitle().getPlainText());
}
}
// clean up
feed = null;
}
} catch (ServiceException se) {
se.printStackTrace();
} catch (IOException ie) {
ie.printStackTrace();
}
}

When you run the workbench and right-click on your action in the Navigator, you should see something like this in your development workbench console view...

Success! We have a plug-in wrapper for our YouTube jars and their dependencies. And we've verified that we can use those APIs in an Eclipse environment.

Next we have to figure out how to hook up YouTube to DTP and show a video in the workbench. And after that we can fine tune our look and feel to make it easier for our users.

Maybe this was a bit longer to write up than I'd thought originally, but this part of the process only took me about half a day when I was creating this code the first time.

Questions? Comments? Drop me a note here and I'll be happy to get back to you.

Next time I'll write about hooking up YouTube and DTP and how I used the built-in Eclipse web browser UI component to show videos.

--Fitz


Reblog this post [with Zemanta]

Thursday, April 9, 2009

I Want My DTPtv...

Hi again...

So one of my presentations at EclipseCon 2009 was "DTPtv and Other Wacky Ideas."

Was this truly a wacky idea? Probably. Who would have thought to merge Eclipse, YouTube, and DTP in one go?

My goal was two-fold... First, I wanted to show that DTP can be used for something more than just databases. Far too often we're pidgeonholed as a provider of database tools. And though we do that, we do much more as well. Second, I wanted to do something out of the usual box, and YouTube is pretty dang far out of the box...

Basically I focused on three different things...
  1. Make the YouTube APIs accessible and test them.
  2. Create a YouTube Search connection profile in DTP so you could create and manage multiple searches in a variety of ways.
  3. Create a viewer that would allow a user to take advantage of YouTube searches on the fly and see the results within the Eclipse IDE or in an RCP application.
Now why would you want to do this you might ask? Good question.

Image representing YouTube as depicted in Crun...Image via CrunchBase

Let's say you write Eclipse RCP applications for a company with a healthy education department. They want to help out beginning users by recording tutorials and putting them up on YouTube. Not only will it help your users, but it works as a bit of helpful marketing for your sales staff. And now that they're doing this, they want a way to be able to take advantage of these YouTube videos right inside the application.

Maybe this isn't so far fetched after all?

In the next series of blog posts, I'll focus on the three steps I took to get this all working. I demoed working code at the conference and will clean it up a little, zip it up, and have it available on a file sharing site soon. I hope to also contribute it back to the Examples project at Eclipse, as it crosses project boundaries.

As always, please feel free to ask questions or make comments as I go through the process. Many of you will find this old hat, but I'm hoping someone can take advantage of the information. :)

Thanks!
--Fitz

Reblog this post [with Zemanta]

Thursday, March 19, 2009

DTP at EclipseCon 2009

Hey there!

Yes, it's almost that time again... EclipseCon 2009 starts with a bang on Monday. Can you believe it? It's already here!!

I head out to the (hopefully sunny) state of California on Sunday morning early for a boatload of meetings that afternoon and then DTP has a tutorial bright and early Monday morning at 8am.

But I thought I'd fill everyone in on what's cool in the world of DTP at EclipseCon this year...

We have our tutorial obviously -- "Using and Extending Eclipse Data Tools (DTP)" on Monday morning at 8am. If you're planning on attending, please check out the list of pre-requisites. We'll start with the DTP tooling, talk about DTP APIs, and then go a bit into how to extend the ODA and SQL editor for your own particular uses. Linda Chan (Actuate), Brian Payton (IBM), and myself will be presenting.

We also have a couple of long talks...
And a number of short talks that will be collected into one curated session hosted by yours truly...
So it's not forgotten, we also have a Birds of a Feather session on Monday night. If you want to come and chat, ask questions, and see what's going on in the world of DTP please drop by!
And if you're going to attend the Eclipse Community Spotlight panel at the end of the conference, you'll get to see a bunch of us talking about what's going on in the world of Eclipse.

So be sure to check us out while you're at EclipseCon! I hope to see you there!

--Fitz
Reblog this post [with Zemanta]

Friday, December 19, 2008

Data Tools at EclipseCon 2009

Hey all!

Yes, the holidays are almost upon us... But even better than that, EclipseCon 2009 is just around the corner! (Ok, maybe not RIGHT around the corner, but three months will zip by in no time.)

This year in the Data Tools track we have a tutorial coming up and bunch of cool talks from a number of different directions.

Though I'm helping with the tutorial this year and moderating a block of short talks, I also am talking about how to use DTP to connect to something other than a database. After all, not all data is in databases!

My long talk this year will show how DTP and the Data Source Explorer can be used for searching and viewing YouTube videos in Eclipse. How do these two worlds meet? Come to my talk and find out!

Besides that, I get to moderate a set of three cool short talks. These bright folks will talk about how DTP is being used in RCP as a database developer's type of tool, what's going on with the SQL Query Builder in Galileo, and how DTP is being used in cool ways by a commercial application.

So be sure to check out some of our talks this year! In another post, I'll talk some about what to expect from our tutorial and some of the other cool talks going on at EC2009 that I'm excited about!

Register today and don't forget to reserve a room at the hotel (it fills up fast!)!

Happy Holidays to all!
--Fitz

Reblog this post [with Zemanta]