2020-02-01 23:30:32 +01:00
|
|
|
#!/usr/bin/perl -w
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2017-03-05 22:33:31 +01:00
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
2007-05-20 22:44:44 +02:00
|
|
|
# quick and dirty by :pragma
|
|
|
|
|
|
|
|
use LWP::Simple;
|
|
|
|
|
|
|
|
my ($defint, $phrase, $text, $entry, $entries, $i);
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($#ARGV < 0) {
|
|
|
|
print "What phrase would you like to define?\n";
|
|
|
|
die;
|
2007-05-20 22:44:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
$phrase = join("%20", @ARGV);
|
|
|
|
|
|
|
|
$entry = 1;
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($phrase =~ m/([0-9]+)%20(.*)/) {
|
|
|
|
$entry = $1;
|
|
|
|
$phrase = $2;
|
2007-05-20 22:44:44 +02:00
|
|
|
}
|
|
|
|
|
2010-03-22 08:33:44 +01:00
|
|
|
$text = get("http://dictionary.reference.com/browse/$phrase");
|
2007-05-20 22:44:44 +02:00
|
|
|
|
|
|
|
$phrase =~ s/\%20/ /g;
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($text =~ m/no dictionary results/i) {
|
|
|
|
print "No entry found for '$phrase'. ";
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($text =~ m/Did you mean <a class.*?>(.*?)<\/a>/g) {
|
|
|
|
print "Did you mean '$1'? Alternate suggestions: ";
|
2019-06-26 18:34:19 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
$i = 90;
|
|
|
|
$comma = "";
|
|
|
|
while ($text =~ m/<div id="spellSuggestWrapper"><li .*?><a href=.*?>(.*?)<\/a>/g && $i > 0) {
|
|
|
|
print "$comma$1";
|
|
|
|
$i--;
|
|
|
|
$comma = ", ";
|
|
|
|
}
|
2007-05-20 22:44:44 +02:00
|
|
|
}
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
# if ($text =~ m/Encyclopedia suggestions:/g)
|
|
|
|
# {
|
|
|
|
# print "Suggestions: ";
|
|
|
|
#
|
|
|
|
# $i = 30;
|
|
|
|
# while ($text =~ m/<a href=".*?\/search\?r=13&q=.*?>(.*?)<\/a>/g
|
|
|
|
# && $i > 0)
|
|
|
|
# {
|
|
|
|
# print "$1, ";
|
|
|
|
# $i--;
|
|
|
|
# }
|
|
|
|
# }
|
|
|
|
|
|
|
|
print "\n";
|
|
|
|
exit 0;
|
2007-05-20 22:44:44 +02:00
|
|
|
}
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($text =~ m/- (.*?) dictionary result/g) { $entries = $1; }
|
|
|
|
|
2019-05-28 18:19:42 +02:00
|
|
|
$entries = 1 if (not defined $entries);
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
if ($entry > $entries) {
|
|
|
|
print "No entry found for $phrase.\n";
|
|
|
|
exit 0;
|
2007-05-20 22:44:44 +02:00
|
|
|
}
|
|
|
|
|
2009-12-09 02:08:12 +01:00
|
|
|
print "$phrase: ";
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2009-12-09 02:08:12 +01:00
|
|
|
$i = $entry;
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2009-12-09 02:08:12 +01:00
|
|
|
$defint = "";
|
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
my $quote = chr(226) . chr(128) . chr(156);
|
2009-12-09 02:08:12 +01:00
|
|
|
my $quote2 = chr(226) . chr(128) . chr(157);
|
2020-02-15 23:38:32 +01:00
|
|
|
my $dash = chr(226) . chr(128) . chr(147);
|
|
|
|
|
|
|
|
while ($i <= $entries) {
|
|
|
|
if ($text =~ m/<td>(.*?)<\/td>/gs) { $defint = $1; }
|
|
|
|
|
|
|
|
# and now for some fugly beautifying regexps...
|
|
|
|
|
|
|
|
$defint =~ s/$quote/"/g;
|
|
|
|
$defint =~ s/$quote2/"/g;
|
|
|
|
$defint =~ s/$dash/-/g;
|
|
|
|
$defint =~ s/<b>Pronun.*?<BR>//gsi;
|
|
|
|
$defint =~ s/<.*?>//gsi;
|
|
|
|
$defint =~ s/\ \;/ /gi;
|
|
|
|
$defint =~ s/\&.*?\;//g;
|
|
|
|
$defint =~ s/\r\n//gs;
|
|
|
|
$defint =~ s/\( P \)//gs;
|
|
|
|
$defint =~ s/\s+/ /gs;
|
|
|
|
|
|
|
|
if ($defint =~ /interfaceflash/) {
|
|
|
|
$i++;
|
|
|
|
next;
|
|
|
|
}
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
$i++ and next if $defint eq " ";
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
print "$i) $defint ";
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2020-02-15 23:38:32 +01:00
|
|
|
$i++;
|
2009-12-09 02:08:12 +01:00
|
|
|
}
|
2007-05-20 22:44:44 +02:00
|
|
|
|
2009-12-09 02:08:12 +01:00
|
|
|
print "\n";
|