2009-04-07 4 views
8

Ich versuche programmatisch Miniaturansichten einer großen Anzahl von Webseiten zu erstellen, die auf meiner eigenen Ruby/Rails-basierten Website gehostet werden.Wie mache ich Screenshots von Webseiten mit Ruby und einem Unix-Server?

Ich mag einen Stand-alone-Bit von Rubin kodieren können, die etwa wie folgt aussieht:

require 'awesome-screenshot-maker' 

items.each do |id| 
    url = "http://foo.com/bar/#{id}" 
    shooter = AwesomeScreenshotMaker.new(0.2) # thumbnails are 20% of original 
    shooter.capture(url, "/images/thumbnail-#{id}.png") 
end 

Ich brauche die awesome-Screenshot-Maker-Bibliothek (und ihre Abhängigkeiten) sein, ziemlich einfach zu Bauen Sie auf Linux, Solaris und Mac OS X auf. Idealerweise wird es mit einem einzigen "Gem Install" -Befehl installiert.

Ich habe den Nachmittag damit verbracht, verschiedene Optionen zu erkunden, einschließlich Moz snap shooter, webkit2png und rbwebkitgtk. Sie sind alle im richtigen Bereich, aber keiner scheint auf allen drei Plattformen zu funktionieren.

RMagick sieht aus wie eine mögliche Option, wenn ich PDFs aus meiner Rails-App (anstelle von Webseiten) ausgeben möchte, aber das scheint mir Hacky. Es ist auch sehr mühsam, RMagic und imagemagick unter Mac OS X zu betreiben.

Gibt es eine solche Bibliothek, die einfach auf drei Plattformen eingerichtet werden kann?

+0

Diese Frage wurde mindestens 3-mal in der Vergangenheit gefragt. Bitte beachten Sie die Antworten zu # 125951, # 686858 und # 713938. –

+1

Diese Antworten beziehen sich alle auf Python-, PHP- oder Befehlszeilenanwendungen. Ich habe diese Optionen bereits untersucht und bin sehr daran interessiert, eine solide Rubinlösung zu finden. – Lee

Antwort

1

Es ist ein Rubin-Wrapper für PageGlimpse verfügbar:

http://code.squidchunks.com/pageglimpse/

die Nutzungsbedingungen Zustand leider, dass „Sie dürfen kein automatisiertes System verwenden oder starten, einschließlich und ohne Einschränkung,‚Offline-Leser‘, "Spinnen" usw., um vom Service bereitgestellte Daten zu erfassen. "

1

verwendet Sie den Edelstein gastly verwenden können.

Gastly.capture('http://google.com', 'output.png')

+0

das funktioniert für mich – draw

Verwandte Themen