Top Banner
Remixing web data for your hacks the easy way YQL – the can opener of the web
73

Remixing web data for your hacks the easy way

Jan 12, 2016

Download

Documents

Abril

Remixing web data for your hacks the easy way. YQL – the can opener of the web. Hacking together systems in 24 hours is a lot of fun. But you want to spend that time thinking about the interface. And not how you get to the right data in the right format. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Remixing web data for your hacks the easy way

Remixing web data for your hacks the easy wayYQL – the can opener of the web

Page 2: Remixing web data for your hacks the easy way

Hacking together systems in 24 hours is a lot of fun.

Page 3: Remixing web data for your hacks the easy way

But you want to spend that time thinking about the interface.

Page 4: Remixing web data for your hacks the easy way

And not how you get to the right data in the right format.

Page 5: Remixing web data for your hacks the easy way

The web is full of juicy and long lasting data.

http://www.flickr.com/photos/clspeace/162336973/

Page 6: Remixing web data for your hacks the easy way

And there is a lot of it around.

http://www.flickr.com/photos/tudor/2981410947/

Page 7: Remixing web data for your hacks the easy way

However, our attempts to get to it can be clumsy.

http://www.flickr.com/photos/lumachrome/2140368742/

Page 8: Remixing web data for your hacks the easy way

What we need is an easy way to get to that data.

http://www.flickr.com/photos/careytilden/115435226/

Page 9: Remixing web data for your hacks the easy way

We had a way to do that for quite a while now.

Page 10: Remixing web data for your hacks the easy way

http://pipes.yahoo.com/

Page 11: Remixing web data for your hacks the easy way

Pipes, however is high end technology…

http://www.flickr.com/photos/axio/2346342672/

Page 12: Remixing web data for your hacks the easy way

We’re developers, not interface users.

http://www.flickr.com/photos/codepo8/2278641937/

Page 13: Remixing web data for your hacks the easy way

So for a long time people asked Yahoo for a command line version of pipes.

Can we have one?

Page 14: Remixing web data for your hacks the easy way

Yes, we can!

Page 15: Remixing web data for your hacks the easy way

The Yahoo Query Language, or short YQL is a unified interface language to the web.

http://developer.yahoo.com/yql/

Page 16: Remixing web data for your hacks the easy way

Using YQL, accessing the web and its services becomes as easy as SQL:

select {what} from {service} where {condition}

Page 17: Remixing web data for your hacks the easy way

Say you want kittens in your hack (who doesn’t?)

select * from flickr.photos.search where text="kitten"

Page 18: Remixing web data for your hacks the easy way

Say you want kittens in your hack (who doesn’t?)

Page 19: Remixing web data for your hacks the easy way

Say you only want 5 kittens

select * from flickr.photos.search where text="kitten" limit 5

Page 20: Remixing web data for your hacks the easy way

Say you only want 5 kittens

Page 21: Remixing web data for your hacks the easy way

Nice, but where can you get this?

Page 22: Remixing web data for your hacks the easy way

YQL is a REST API in itself, and it has two endpoints.

Page 23: Remixing web data for your hacks the easy way

The public endpoint does not need any authentication.

http://query.yahooapis.com/v1/public/yql?q={query}&format={format}

Page 24: Remixing web data for your hacks the easy way

The private endpoint needs oauth authentication.

http://query.yahooapis.com/v1/yql?q={query}&format={format}

http://developer.yahoo.com/yql/guide/authorization-access.html

Page 25: Remixing web data for your hacks the easy way

Output formats are XML or JSON. JSON also allows for a callback parameter to use the output directly as JSON-P.

Page 26: Remixing web data for your hacks the easy way

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from flickr.photos.search%20where%20text=%22kitten%22limit%205&format=json&callback=meow

Page 27: Remixing web data for your hacks the easy way
Page 28: Remixing web data for your hacks the easy way

You can mix and match several web services using the in() command.

Page 29: Remixing web data for your hacks the easy way

Guess what this does:

select * from flickr.photos.info where photo_id in (select id from flickr.photos.search where woe_id in (select woeid from geo.places where text='london,uk') and license=4)

Page 30: Remixing web data for your hacks the easy way

Find photos in London, UK with a Creative Commons “By” license and give me all the information you have about them.

Page 31: Remixing web data for your hacks the easy way

select * from flickr.photos.info where photo_id in (select id from flickr.photos.search where woe_id in (select woeid from geo.places where text='london,uk') and license=4)

Page 32: Remixing web data for your hacks the easy way

Using a command like this and some out-of-the-box UI elements like Yahoo Maps and the YUI carousel, you can build something *very* quickly.

Page 33: Remixing web data for your hacks the easy way

http://isithackday.com/hacks/cantine/index.php?loc=covent+garden

Page 34: Remixing web data for your hacks the easy way

Instead of selecting all the information you can also limit the results:

select name,url from upcoming.venue where metro_id in (select id from upcoming.metro where search_text="stokey")

Page 35: Remixing web data for your hacks the easy way

select name,url from upcoming.venue where metro_id in (select id from upcoming.metro where search_text="stokey")

Page 36: Remixing web data for your hacks the easy way

The diagnostics part of the returned data shows you what happened and how long it took

Page 37: Remixing web data for your hacks the easy way

Here’s what Yahoo offers you in this format:

flickr.photos.exifflickr.photos.infoflickr.photos.interestingnessflickr.photos.recentflickr.photos.searchflickr.photos.sizesflickr.placesflickr.places.infogeo.placesgeo.places.ancestorsgeo.places.belongtosgeo.places.childrengeo.places.neighborsgeo.places.parentgeo.places.siblingsgeo.placetypesgnip.activity

local.searchmusic.artist.idmusic.artist.popularmusic.artist.searchmusic.artist.similarmusic.release.artistmusic.release.idmusic.release.popularmusic.release.searchmusic.track.idmusic.track.popularmusic.track.searchmusic.video.categorymusic.video.idmusic.video.popularmusic.video.searchmusic.video.similar

mybloglog.community.findmybloglog.membermybloglog.member.contactsmybloglog.member.newwithcontactsmybloglog.member.newwithmemybloglog.members.findmybloglog.stats.findupcoming.categoryupcoming.countryupcoming.eventsupcoming.events.bestinplaceupcoming.groupsupcoming.metroupcoming.stateupcoming.userupcoming.venue

Page 38: Remixing web data for your hacks the easy way

Here’s what Yahoo offers you in this format:

search.imagessearch.newssearch.siteexplorer.inlinkssearch.siteexplorer.pagessearch.spellingsearch.suggestsearch.termextractsearch.websocial.connectionssocial.contactssocial.presencesocial.profilesocial.updatesweather.forecastyahoo.identityyap.setsmallview

search.imagessearch.newssearch.siteexplorer.inlinkssearch.siteexplorer.pagessearch.spellingsearch.suggestsearch.termextractsearch.websocial.connectionssocial.contactssocial.presencesocial.profilesocial.updatesweather.forecastyahoo.identityyap.setsmallview

search.imagessearch.newssearch.siteexplorer.inlinkssearch.siteexplorer.pagessearch.spellingsearch.suggestsearch.termextractsearch.websocial.connectionssocial.contactssocial.presencesocial.profilesocial.updatesweather.forecastyahoo.identityyap.setsmallview

Page 39: Remixing web data for your hacks the easy way

You want even more?

http://www.flickr.com/photos/verylastexcitingmoment/3123597774/

Page 40: Remixing web data for your hacks the easy way

Alright, how about this?

atomcsvfeedhtml

jsonmicroformatsrssxml

Page 41: Remixing web data for your hacks the easy way

Telegraph’s headlines anyone?select * from html where url='http://www.telegraph.co.uk/' and xpath='//h3/a'

Page 42: Remixing web data for your hacks the easy way

Telegraph’s headlines anyone?

Page 43: Remixing web data for your hacks the easy way

You can dynamically create YQL queries to collate several sources…

Page 44: Remixing web data for your hacks the easy way

Then use cURL to pull them off the web with one single http request!

Page 45: Remixing web data for your hacks the easy way

YQL caches and compresses the results for you.

Pretty easy, isn’t it?

Page 46: Remixing web data for your hacks the easy way

Here’s another fun part:Anyone can be part of the YQL interface.

Page 47: Remixing web data for your hacks the easy way

All we need the data provider to do is to create a schema that explains their data structure.

http://developer.yahoo.com/yql/guide/yql-opentables-chapter.html

Page 48: Remixing web data for your hacks the easy way

And people do…amazonbitlydeliciousdopplretsyfriendfeedgithubGreaderguardianimdbiplocationlastfmnestorianetflix

nmmnytopensocialsearchshoppingsocialtwitterupdate.groovyweatherwesabewhitepagesyahooyelpzillow

http://github.com/spullara/yql-tables/tree/master

Page 49: Remixing web data for your hacks the easy way

For example the national maritime museum:

select * from nmm.archive.search where searchterm=‘horatio nelson'

Page 50: Remixing web data for your hacks the easy way

select * from nmm.archive.search where searchterm=‘horatio nelson'

Page 51: Remixing web data for your hacks the easy way

That’s pretty cool – allowing anyone to be part of this interface.

Page 52: Remixing web data for your hacks the easy way

The only shame is that you can’t do all the things in YQL that you can do in Pipes – for example string manipulation.

Page 53: Remixing web data for your hacks the easy way

We wondered how to make this possible.

One thing we didn’t want to sacrifice is the simplicity of the language itself.

Page 54: Remixing web data for your hacks the easy way

So instead of inventing an own language, we decided to piggy-back on one you already know.

Page 55: Remixing web data for your hacks the easy way

YQL execute allows you to embed JavaScript in the open table schema that runs on the YQL server and converts the data for you.

http://developer.yahoo.com/yql/guide/yql-execute-chapter.html

Page 56: Remixing web data for your hacks the easy way

For example you can augment an existing service to do something different.

The following example adds a rank to search results.

http://www.yqlblog.net/samples/searchrank.xml

Page 57: Remixing web data for your hacks the easy way
Page 58: Remixing web data for your hacks the easy way
Page 59: Remixing web data for your hacks the easy way

Stored as XML this can be used in a YQL query:

use 'http://yqlblog.net/samples/searchrank.xml' as searchrank; select * from searchrank where query='pizza' and dispurl like '%pizzahut%'

Page 60: Remixing web data for your hacks the easy way
Page 61: Remixing web data for your hacks the easy way

Anyways, the *easiest* way to start with YQL is to use the console.

http://developer.yahoo.com/yql/console/

Page 62: Remixing web data for your hacks the easy way
Page 63: Remixing web data for your hacks the easy way
Page 64: Remixing web data for your hacks the easy way
Page 65: Remixing web data for your hacks the easy way
Page 66: Remixing web data for your hacks the easy way
Page 67: Remixing web data for your hacks the easy way
Page 68: Remixing web data for your hacks the easy way
Page 69: Remixing web data for your hacks the easy way
Page 70: Remixing web data for your hacks the easy way
Page 71: Remixing web data for your hacks the easy way

Of course, you can also spend half the hack day reading API docs

Page 72: Remixing web data for your hacks the easy way

Check out some code examples on.

http://isithackday.com/hacks/ohd-london

Page 73: Remixing web data for your hacks the easy way

THANKS!

Chris Heilmannhttp://twitter.com/codepo8