Kaplooey Blog! - Monday, March 16, 2009
mom stuff, geek stuff, writing stuff, weightloss stuff, and more
 
# Monday, March 16, 2009

<geek alert>

Hi, I’m Leah and I’m a bookaholic.

In my quest to tame my addiction, I’m working on a little app to keep track of what I have and what I want. Kind of like Library Thing without any of the social stuff. And not necessarily a browser based system.

So, I’ve got a WPF client that will go out and touch four (so far) different web services to get the xml about a particular book – based on isbn or isbn13.

Getting the Data

There are some other choices out there, but I concentrated on the main ones, as far as information is concerned. In alphabetical order: Amazon, ISBNdb, Library Thing, and Library of Congress. Here’s how to get the XML from each service.

(note – blog jet is not the best at formatting the xml, and this is my first time at a serious tech post, so pretend all is properly indented until I get it cleaned up)

Amazon

First, get a key. Then make your url like this:

http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&SubscriptionId=YOURKEYHERE&Operation=ItemLookup&ResponseGroup=Medium&ItemId=0441172695

Then, here’s what your xml looks like:

<?xml version="1.0" ?> 
- <ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
- <OperationRequest>
- <HTTPHeaders>
  <Header Name="UserAgent" Value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
" />
  </HTTPHeaders>
  <RequestId>38eed815-71e3-420b-902f-ade8746fb3ca</RequestId>
- <Arguments>
  <Argument Name="Operation" Value="ItemLookup" />
  <Argument Name="Service" Value="AWSECommerceService" />
  <Argument Name="ItemId" Value="0441172695" />
  <Argument Name="ResponseGroup" Value="Medium" />
  <Argument Name="SubscriptionId" Value="YOURKEYHERE" />
  </Arguments>
  <RequestProcessingTime>0.0165120000000000</RequestProcessingTime>
  </OperationRequest>
- <Items>
- <Request>
  <IsValid>True</IsValid>
- <ItemLookupRequest>
  <Condition>New</Condition>
  <DeliveryMethod>Ship</DeliveryMethod>
  <IdType>ASIN</IdType>
  <MerchantId>Amazon</MerchantId>
  <OfferPage>1</OfferPage>
  <ItemId>0441172695</ItemId>
  <ResponseGroup>Medium</ResponseGroup>
  <ReviewPage>1</ReviewPage>
  </ItemLookupRequest>
  </Request>
- <Item>
  <ASIN>0441172695</ASIN>
  <DetailPageURL>http://www.amazon.com/Dune-Messiah-Chronicles-Book/dp/0441172695_
%3FSubscriptionId%3YOURKEYHERE%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26_
creative%3D165953%26creativeASIN%3D0441172695</DetailPageURL>
  <SalesRank>8349</SalesRank>
- <SmallImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL._SL75_.gif</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">45</Width>
  </SmallImage>
- <MediumImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL._SL160_.gif</URL>
  <Height Units="pixels">160</Height>
  <Width Units="pixels">95</Width>
  </MediumImage>
- <LargeImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL.gif</URL>
  <Height Units="pixels">475</Height>
  <Width Units="pixels">283</Width>
  </LargeImage>
- <ImageSets>
- <ImageSet Category="primary">
- <SwatchImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL._SL30_.gif</URL>
  <Height Units="pixels">30</Height>
  <Width Units="pixels">18</Width>
  </SwatchImage>
- <SmallImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL._SL75_.gif</URL>
  <Height Units="pixels">75</Height>
  <Width Units="pixels">45</Width>
  </SmallImage>
- <MediumImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL._SL160_.gif</URL>
  <Height Units="pixels">160</Height>
  <Width Units="pixels">95</Width>
  </MediumImage>
- <LargeImage>
  <URL>http://ecx.images-amazon.com/images/I/712XDW1BRHL.gif</URL>
  <Height Units="pixels">475</Height>
  <Width Units="pixels">283</Width>
  </LargeImage>
  </ImageSet>
  </ImageSets>
- <ItemAttributes>
  <Author>Frank Herbert</Author>
  <Binding>Paperback</Binding>
  <DeweyDecimalNumber>813.54</DeweyDecimalNumber>
  <EAN>9780441172696</EAN>
  <ISBN>0441172695</ISBN>
  <Label>Ace</Label>
- <Languages>
- <Language>
  <Name>English</Name>
  <Type>Original Language</Type>
  </Language>
- <Language>
  <Name>English</Name>
  <Type>Unknown</Type>
  </Language>
- <Language>
  <Name>English</Name>
  <Type>Published</Type>
  </Language>
  </Languages>
- <ListPrice>
  <Amount>799</Amount>
  <CurrencyCode>USD</CurrencyCode>
  <FormattedPrice>$7.99</FormattedPrice>
  </ListPrice>
  <Manufacturer>Ace</Manufacturer>
  <NumberOfItems>1</NumberOfItems>
  <NumberOfPages>336</NumberOfPages>
- <PackageDimensions>
  <Height Units="hundredths-inches">120</Height>
  <Length Units="hundredths-inches">670</Length>
  <Weight Units="hundredths-pounds">35</Weight>
  <Width Units="hundredths-inches">410</Width>
  </PackageDimensions>
  <ProductGroup>Book</ProductGroup>
  <PublicationDate>1987-07-15</PublicationDate>
  <Publisher>Ace</Publisher>
  <Studio>Ace</Studio>
  <Title>Dune Messiah (Dune Chronicles, Book 2)</Title>
  </ItemAttributes>
- <OfferSummary>
- <LowestNewPrice>
  <Amount>1</Amount>
  <CurrencyCode>USD</CurrencyCode>
  <FormattedPrice>$0.01</FormattedPrice>
  </LowestNewPrice>
- <LowestUsedPrice>
  <Amount>1</Amount>
  <CurrencyCode>USD</CurrencyCode>
  <FormattedPrice>$0.01</FormattedPrice>
  </LowestUsedPrice>
- <LowestCollectiblePrice>
  <Amount>1000</Amount>
  <CurrencyCode>USD</CurrencyCode>
  <FormattedPrice>$10.00</FormattedPrice>
  </LowestCollectiblePrice>
  <TotalNew>42</TotalNew>
  <TotalUsed>441</TotalUsed>
  <TotalCollectible>10</TotalCollectible>
  <TotalRefurbished>0</TotalRefurbished>
  </OfferSummary>
- <EditorialReviews>
- <EditorialReview>
  <Source>Product Description</Source>
  <Content>Paul Atreides, genetically bred and trained to become the leader of his planet, is still subject_
to human frailties. The second book of the series.
</Content>
  </EditorialReview>
  </EditorialReviews>
  </Item>
  </Items>
  </ItemLookupResponse>

 

ISBNdb

Get a key. Then make your url like this (for isbn):

http://isbndb.com/api/books.xml?access_key=YOURKEYHERE&index1=isbn&results=details&value1=9780441172695

Here’s what they give back:

<?xml version="1.0" encoding="UTF-8" ?> 
- <ISBNdb server_time="2009-03-16T19:38:39Z">
- <BookList total_results="1" page_size="10" page_number="1" shown_results="1">
<BookData book_id="dune_messiah" isbn="0441172695" isbn13="9780441172696">
  <Title>Dune Messiah</Title>
  <TitleLong>Dune Messiah (Dune Chronicles, Book 2)</TitleLong>
  <AuthorsText>Frank Herbert</AuthorsText>
  <PublisherText publisher_id="ace_charter">ACE Charter</PublisherText>
  <Details change_time="2004-12-24T01:24:17Z" price_time="2009-03-16T16:59:06Z" _
edition_info="Mass Market Paperback; 1994-11-01" language="" _
physical_description_text="4.2"x6.9"x0.9"; 329 pages; 0.3 lb" lcc_number=""
dewey_decimal_normalized="" dewey_decimal="" />
  </BookData>
</BookList>
 </ISBNdb>

 

Library Thing

Another key needed. Make your URL like this:

http://www.librarything.com/services/rest/1.0/?method="librarything.ck.getwork&isbn=0441172695&apikey=YOURKEYHERE

Library Thing’s response:

<?xml version="1.0" encoding="UTF-8" ?> 
- <response stat="ok">
- <ltml xmlns="http://www.librarything.com/" version="1.0">
- <item id="8183" type="work">
  <author id="54" authorcode="herbertfrank">Frank Herbert</author>
  <url>http://www.librarything.com/work/8183</url>
- <commonknowledge>
- <fieldList>
- <field type="13" name="disambiguation" displayName="Disambiguation notice">
- <versionList>
- <version id="848067" archived="0" lang="eng">
  <date timestamp="1230621463">Tue, 30 Dec 2008 02:17:43 -0500</date>
- <person id="501960">
  <name>alexdaw</name>
  <url>http://www.librarything.com/profile/alexdaw</url>
  </person>
- <factList>
  <fact><![CDATA[ A shorter version of this book appeared in Galaxy Magazine for July-September, 1969 ]]></fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="26" name="lastwords" displayName="Last words">
- <versionList>
- <version id="827623" archived="0" lang="eng">
  <date timestamp="1230087264">Tue, 23 Dec 2008 21:54:24 -0500</date>
- <person id="487278">
  <name>Grandeplease</name>
  <url>http://www.librarything.com/profile/Grandeplease</url>
  </person>
- <factList>
  <fact><![CDATA[ She led him back across the qanat into the darkness at the base of the massif and its Place of Safety. ]]></fact>
  <fact><![CDATA[ Epilogue . . . He strides through the long cavern of time, Scattering the fool-self of his dream -The Ghola's Hymn ]]></fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="25" name="firstwords" displayName="First words">
- <versionList>
- <version id="827605" archived="0" lang="eng">
  <date timestamp="1230087106">Tue, 23 Dec 2008 21:51:46 -0500</date>
- <person id="487278">
  <name>Grandeplease</name>
  <url>http://www.librarything.com/profile/Grandeplease</url>
  </person>
- <factList>
  <fact><![CDATA[ Excerpts from the death cell interview with Bronso of IX- Q: What led you to take _
your particular approach to a history of Muad'dib? A: Why should I answer your questions? ]]></fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="2" name="placesmentioned" displayName="Important places">
- <versionList>
- <version id="672922" archived="0" lang="eng">
  <date timestamp="1224171231">Thu, 16 Oct 2008 11:33:51 -0400</date>
- <person id="61056">
  <name>amweb</name>
  <url>http://www.librarything.com/profile/amweb</url>
  </person>
- <factList>
  <fact>Arrakis (Dune)</fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="23" name="series" displayName="Series">
- <versionList>
- <version id="581299" archived="0" lang="eng">
  <date timestamp="1220475254">Wed, 03 Sep 2008 16:54:14 -0400</date>
- <person id="47275">
  <name>PhoenixTerran</name>
  <url>http://www.librarything.com/profile/PhoenixTerran</url>
  </person>
- <factList>
  <fact>Dune (2)</fact>
  <fact>Dune: complete chronology (9)</fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="3" name="characternames" displayName="People/Characters">
- <versionList>
- <version id="289511" archived="0" lang="eng">
  <date timestamp="1205984261">Wed, 19 Mar 2008 23:37:41 -0400</date>
- <person id="138345">
  <name>jmjackson</name>
  <url>http://www.librarything.com/profile/jmjackson</url>
  </person>
- <factList>
  <fact>Paul Atreides</fact>
  <fact>Alia Atreides (St. Alia of the Knife)</fact>
  <fact>Chani</fact>
  <fact>Princess Irulan</fact>
  <fact>Duncan Idaho</fact>
  <fact>Stilgar</fact>
  <fact>Gaius Helen Mohiam</fact>
  <fact>Edric</fact>
  <fact>Scytale</fact>
  <fact>Hayt</fact>
  <fact>Bijaz</fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="21" name="canonicaltitle" displayName="Canonical title">
- <versionList>
- <version id="278019" archived="0" lang="eng">
  <date timestamp="1205206730">Mon, 10 Mar 2008 23:38:50 -0400</date>
- <person id="118708">
  <name>ATimson</name>
  <url>http://www.librarything.com/profile/ATimson</url>
  </person>
- <factList>
  <fact>Dune Messiah</fact>
  </factList>
  </version>
  </versionList>
  </field>
- <field type="16" name="originalpublicationdate" displayName="Original publication date">
- <versionList>
- <version id="96006" archived="0" lang="eng">
  <date timestamp="1194630684">Fri, 09 Nov 2007 12:51:24 -0500</date>
- <person id="303911">
  <name>michaelhehir</name>
  <url>http://www.librarything.com/profile/michaelhehir</url>
  </person>
- <factList>
  <fact>1969</fact>
  </factList>
  </version>
  </versionList>
  </field>
  </fieldList>
  </commonknowledge>
  </item>
  <legal>By using this data you agree to the LibraryThing API terms of service.</legal>
  </ltml>
  </response>

 

Library Of Congress

No key needed (yay!). Your URL like so:

http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=9780441015610&maximumRecords=100&recordSchema=dc

And they give back:

<?xml version="1.0" ?> 
- <zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/">
  <zs:version>1.1</zs:version>
  <zs:numberOfRecords>1</zs:numberOfRecords>
- <zs:records>
- <zs:record>
  <zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSchema>
  <zs:recordPacking>xml</zs:recordPacking>
- <zs:recordData>
- <srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns
="http://purl.org/dc/elements/1.1/"
xsi:schemaLocation="info:srw/schema/1/dc-schema http://www.loc.gov/standards/sru/resources/dc-schema.xsd">
  <title>Dune messiah /</title>
  <creator>Herbert, Frank.</creator>
  <type>text</type>
  <type>Science fiction. gsafd</type>
  <publisher>New York : Ace Books,</publisher>
  <date>2008.</date>
  <language>eng</language>
  <subject>Dune (Imaginary place)--Fiction.</subject>
  <identifier>URN:ISBN:9780441015610</identifier>
  </srw_dc:dc>
  </zs:recordData>
  <zs:recordPosition>1</zs:recordPosition>
  </zs:record>
  </zs:records>
  </zs:searchRetrieveResponse>

 

Conclusion

Library Thing’s api is useless to me in this format. LOC is good, but a little terse. For my purposes, I’ll probably search ISBN db first, then if I can’t find it, look at amazon. Amazon’s info is designed, and licensed, for marketing purposes, so you’re supposed to be linking back to the website for purchases. If this becomes a public app, I may reverse the lookup order.

Feel free to let me know if there are other reliable, and sizeable, databases with web service access out there.

Next up, sometime – building an app in WPF, and LINQ to XML.

</geekalert>

Monday, March 16, 2009 8:02:34 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   geek | websites  | 

I bought Kevin Rudolf’s In The City album – clean version.

Normally, I don’t do this, but this time, I want to be able to share the music with my children (7 and 5.5), and it was nice to be able to purchase the versions that will be played on the radio and not worry about having the cd in the car.

I like that there’s an option if I choose, especially in this instance. So far, I’ve been pretty good at shielding the little gels from cursing. In our house, the “s” words are “stupid” and “shut up.” There’s plenty of time for them to learn profanity and appropriate use thereof.

Monday, March 16, 2009 3:10:32 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   littel gels  | 
# Wednesday, March 11, 2009

After logging in, be sure to visit all the options under Configuration in the Admin Menu Bar above. There are 26 themes to choose from, and you can also create your own.

 

Wednesday, March 11, 2009 7:00:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]   dasBlog  | 
# Monday, March 02, 2009

We finally have some real Snow! And it's still snowing! Of course, the girls are dying to make snow angels.

Monday, March 02, 2009 3:01:45 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   pics | update  | 
# Thursday, February 19, 2009
Hey, it’s here. Not that I update it much. It’s mainly so I can comment on a coupla blogs I follow over there.
Thursday, February 19, 2009 11:26:47 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   update  | 
# Tuesday, February 17, 2009

… You walk into the ladies room after it has just been cleaned, and you think “First!”

… By the time the news headline reaches CNN, you’ve seen three different accounts and read the first hand accounts from either the twitterstream or the blogosphere.

… It’s not surfing, it’s User Interface Trend Analysis.

… Google Skillz – U haz dem.

 

Tuesday, February 17, 2009 9:04:56 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   geek  | 
# Thursday, February 05, 2009

Or Burnout?

Our local county (Fairfax, VA) had a special election on Tuesday to replace the Board of Supervisors Chairman, after he moved up to Congress. I made sure I voted, but my husband didn’t. Just read in the paper that only 16 percent of eligible voters voted in the special election. 16 percent, of one of the wealthiest counties in the nation.

Now, I don’t know if this is a special election thing, or what, but it seems to me that the person in the driving seat of the county would warrant consideration and a vote.

There were four candidates – a Democrat, a Republican, a Green Party candidate, and an Independent. The Democrat won, by a margin of 1 percent (according to the news).

We’ll have the new Chairman of the Board of Supervisors until the end of 2011; there are plenty of local issues that will be impacted by this choice. I have no idea why more people didn’t show up and vote. Signs were all over the place. I don’t watch much live TV, and I flip thru the commercials of what I get to watch, so I don’t know if there were any ads on local stations.

So, were people just not interested in voting again? Or had they had enough and decided to sit this one out? Or was it something else?

Thursday, February 05, 2009 1:52:40 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]    | 
# Wednesday, February 04, 2009

Recorded Here until I get a chance to move them to the sidebar:

Blogs

Links

 

 

 

 

 

Wednesday, February 04, 2009 7:25:46 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   recs | update | websites  | 
# Monday, February 02, 2009
I will be upgrading the site engine and making a few cosmetic changes this week. Hopefully, this effort will spur me on in regularly updating the blog.
Monday, February 02, 2009 7:50:25 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   geek | update  | 
# Saturday, January 24, 2009

5 yr old just finished lesson 3 of 7 of intro to skating for 4-6 yr olds. She moves pretty well on the ice, and seems to be motivated even though she has the occasional spill. We'll be doing skating practice tomorrow.

New gym uniforms for both. We have three gym shirts, and I couldn't find any of them Thursday evening without cleaning rooms. I'm not like Dawn where I venture into the room and 30 minutes later it's clean. No, I make them do it, and yell and nag constantly to make sure they do the work. Anyhoo, $43 dollars later, 2 new gym shirts and one new pair of sweats (without scissor holes). If scissor holes appear, they'll have to either give me the replacement money, or work it off. Harsh, yes, but necessary. I'm such a mean mom. They tell me that several times a week.

Saturday, January 24, 2009 4:15:57 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]   littel gels | update  | 
Copyright © 2012 Leah Hurst 2011. All rights reserved.