Google Hacks 2Nd Edition [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Google Hacks 2Nd Edition [Electronic resources] - نسخه متنی

Tara Calishain

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید







Hack 48. Build a Custom Date Range Search Form

Search only Google pages indexed today,
yesterday, the last 7 days, or last 30 days .

Google has a date-based search [Hack #16]
but uses Julian dates.

Most people
can't convert Gregorian to

Julian in their heads. But with a
conversion formula and a little Perl scripting, you can have a Google
search form that offers to let users search Google pages indexed
today, yesterday, the last 7 days, or the last 30 days.


2.30.1. The Form


The frontend to the script is a simple HTML form:

<form action="http://path/to/cgi-bin/goofresh.cgi"
method="get">
Search for:<br />
<input type="text" name="query" size="30" />
<p />
Search for pages indexed how many days back?<br />
<select name="days_back">
<option value="0">Today</option>
<option value="1">Yesterday</option>
<option value="7">Last 7 Days</option>
<option value="30">Last 30 Days</option>
</select>
<p />
<input type="submit" value="Search">
</form>

The form prompts for two user inputs. The first is a Google query,
complete with support for special syntax ["Special
Syntax" in Chapter 1] and
syntax mixing ["Mixing Syntaxes" in
Chapter 1]; after all, we'll
just be passing your query along to Google itself. The second input,
a pull-down list, prompts for how many days' worth
of search the form should perform.


2.30.2. The Code


Note that this script just does a couple of date translations in Perl
and redirects the browser to Google, altered query in tow.
It's just a regular query as far as Google is
concerned, so it doesn't require a
developer's API key.


This hack requires an additional module,
Time::JulianDay , and won't run
without it (http://search.cpan.org/search?query=Time%3A%3AJulianDay).

#!/usr/local/bin/perl
# goofresh.cgi
# Searches for recently indexed files on Google.
# Usage: goofresh.cgi is called as a CGI with form input,
# redirecting the browser to Google, altered query in tow.
use CGI qw/:standard/;
use Time::JulianDay;
# Build a URL-escaped query.
(my $query = param('query')) =~ s#(\W)#sprintf("%%%02x", ord($1))#ge;
# How many days back?
my $days_back = int param('days_back') || 0;
# What's the current Julian date?
my $julian_date = int local_julian_day(time);
# Redirect the browser to Google with query in tow.
print redirect(
'http://www.google.com/search?num=100' .
"&q=$query" .
"+daterange%3A" . ($julian_date - $days_back) . "-$julian_date"
);


2.30.3. Running the Hack


Point your browser at the location of the form you just created.
Enter a query, choose how many days to go back, and click the Search
button. You'll be sent on to Google with the
appropriate daterange: restriction in tow.


2.30.4. Hacking the Hack


If you don't like the date ranges hardcoded into the
form, make up your own and adjust the form accordingly:

<form action="http://path/to/cgi-bin /goofresh.cgi"
method="get">
Search for:<br />
<input type="text" name="query" size="30" />
<p />
Search for pages indexed how many days back?<br />
<select name="days_back">
<option value="0">Today</option>
<option value="30">Around 1 Month</option>
<option value="60">Around 2 Months</option>
<option value="90">Around 3 Months</option>
<option value="365">1 Year</option>
</select>
<p />
<input type="submit" value="Search">
</form>

Or simply let the user specify how many days to go back in a text
field:

<form action="http:// path/to/cgi-bin
/goofresh.cgi"
method="get">
Search for:<br />
<input type="text" name="query" size="30" />
<p />
Search for pages indexed how many days back?<br />
<input type="text" name="days_back" size="4"
maxlength="4" />
<p />
<input type="submit" value="Search">
</form>


/ 209