i76 webdesign, Sittard

10 maart 2010

Weblog Rubrieken

i76 webdesign, Sittard

Ruby

RubyWeb.nl

donderdag, 31 juli, 2008

Na een paar uur programmeren en content schrijven is gisteren RubyWeb gelanceerd, een Nederlandstalige nieuws en community website voor Ruby (en Rails) enthousiastelingen.

De website is een kopie van de engelse variant RubyFlow, maar het is de bedoeling de site uit te breiden zodat er meer met de Nederlandse Ruby community gedaan wordt. RubyWeb is tevens open source! Development is te volgen op Github

Geschreven door: Tom-Eric

Het downloaden van video’s via KeepVid met ruby

vrijdag, 12 oktober, 2007

Voor sites zoals gitaar.nu, is het handig als je een backup van de geëmbedde video’s die je toevoegt hebt. Het zou natuurlijk zomaar kunnen dat er door YouTube in één keer alle video’s van een gebruiker verwijderd worden, waar misschien net die paar video’s bij zaten die jij op je site had staan. Met je eigen backup kan je deze dan later weer toevoegen.

Om deze video’s te downloaden, moet je natuurlijk eerst weten waar de video staat. Elke provider doet dit weer anders, dus dit zelf programmeren zou veel tijd kosten. De site KeepVid, genereert download links van een heleboel video sites, waaronder YouTube, Google Video en Metacafe. Met behulp van Hpricot heb je zoiets redelijk snel gerealiseerd. Hieronder een voorbeeld:

def keepvid_uri(movie_url)
  # Eerst parsen we het formulier op keepvid om erachter te komen waar we
  # naar moeten posten
  uri = URI(Hpricot(URI('http://keepvid.com/').read).at('form')['action'])

  # Open een HTTP connectie
  Net::HTTP.start(uri.host, uri.port) do |http|
    # doe een POST request met de goede argumenten
    doc = Hpricot(http.post(uri.path, "url=#{movie_url}&site=aa").body)

    # Vind het anchor (a) element met de download link en return hem
    anchor = (doc/:a).find{ |a| a.to_s =~ /Download Link/ and
                                a.next_node.to_s =~ /flv/ }

    return URI(anchor['href']) if anchor
  end
end

Alhoewel bovenstaande oplossing prima werkt, is het natuurlijk afhankelijk van de HTML die KeepVid aanlevert. Aangezien dit bij bijvoorbeeld een redesign kan veranderen, zou ik dit soort dingen liever via een API doen. Helaas heb ik deze nog niet kunnen vinden op het web.

Geschreven door: Tom-Eric

i76 webdesign, Sittard
Tel 046 4007004
Fax 046 4009640
E-mail