NAME
Data::Tranco - An interface to the Tranco domain list.
VERSION
version 0.003
SYNOPSIS
use
Data::Tranco;
# get a random domain from the list
(
$domain
,
$rank
) = Data::Tranco->random_domain;
# get a random domain from .org
(
$domain
,
$rank
) = Data::Tranco->random_domain(
"org"
);
# get the highest ranking domain
(
$domain
,
$rank
) = Data::Tranco->top_domain;
# get the highest ranking domain in .co.uk
(
$domain
,
$rank
) = Data::Tranco->top_domain(
"co.uk"
);
# get a sample of 50 domains
@domains
= Data::Tranco->sample(50);
# get a sample of 50 domains in .org
@domains
= Data::Tranco->top_domains(50,
"org"
);
# get all 1,000,000 domains
@all
= Data::Tranco->all;
# get all domains in .org
@all
= Data::Tranco->all(
"org"
);
# get the top 50 domains in .jp
@domains
= Data::Tranco->top_domains(50,
"jp"
);
# get the ranking of perl.org
$rank
= Data::Tranco->rank(
"perl.org"
);
DESCRIPTION
Data::Tranco
provides an interface to the Tranco list of popular domain names.
METHODS
RANDOM DOMAIN
(
$domain
,
$rank
) = Data::Tranco->random_domain(
$suffix
);
Returns a randomly-selected domain from the list, along with its ranking. If $suffix
is specified, then only a domain that ends with that suffix will be returned.
TOP DOMAIN
(
$domain
,
$rank
) = Data::Tranco->top_domain(
$suffix
);
Returns the highest-ranking domain from the list, along with its ranking. If $suffix
is specified, then the highest-ranking domain that ends with that suffix will be returned.
SAMPLE
@domains
= Data::Tranco->sample(
$count
,
$suffix
);
Returns an array containing $count
randomly-selected domains. If $suffix
is specified, only domains ending with that suffix will be returned.
TOP N DOMAINS
@domains
= Net::Tranco->top_domains(
$count
,
$suffix
);
Returns an array of the highest ranking $count
domains. If $suffix
is specified, only domains ending with that suffix will be returned. The number of entries in the array may be less than $count
if the TLD is small and/or $count
is high.
ALL DOMAINS
@domains
= Net::Tranco->all(
$suffix
);
Returns an array of all domains. If $suffix
is specified, only domains ending with that suffix will be returned, otherwise, you'll get all 1M domains!
DOMAIN RANK
$rank
= Net::Tranco->rank(
$domain
);
Returns the ranking of the domain $domain
or undef
if the domain isn't present in the list.
DATABASE HANDLE
$db
= Data::Tranco->get_db;
Returns a DBI object so you can perform your own queries. The database contains a single table called `domains`, which has the `id` and `domain` columns containing the ranking and domain name, respectively.
IMPLEMENTATION
The Tranco list is published as a zip-compressed CSV file. By default, Data::Tranco
will automatically download that file, extract the CSV file, and write it to an SQLite database if (a) the file doesn't exist yet or (b) it's more than a day old.
If you want to control this behaviour, you can use the following:
$Data::Tranco::TTL
This is how old the local file can be (in seconds) before it is updated. It is 86400 seconds by default.
$Data::Tranco::STATIC
If you set this value to 1
then Data::Tranco
will not update the database, even if it doesn't exist, in which case, all the methods above will fail.
Data::Tranco->update_db
This will cause Data::Tranco
to update its database. If it fails it will croak()
, so calls to this method should be wrapped in an `eval`.
AUTHOR
Gavin Brown <gavin.brown@icann.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by Internet Corporation for Assigned Names and Numbers (ICANN).
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.