iTunesConnect - An iTunesConnect client interface
use WWW::iTunesConnect;
my $itc = WWW::iTunesConnect->new(user=>$user, password=>$password);
my %report = $itc->daily_sales_summary;
"iTunesConnect" provides an interface to
Apple's iTunes Connect website. Daily, Weekly and Monthly summaries, as well
as Finanacial Reports, can be retrieved. Eventually this will become a
complete interface.
A script suitable for use as a nightly cronjob can be found at
<http://github.com/bfoz/itunesconnect-tools>
- $itc = WWW::iTunesConnect->new(user=>$user,
password=>$password);
- Constructs and returns a new
"iTunesConnect" interface object.
Accepts a hash containing the iTunes Connect username and password.
- $itc->user
- Get/Set the iTunes Connect username. NOTE: User and Password must be set
before calling any other methods.
- $itc->password
- Get/Set the iTunes Connect password. NOTE: User and Password must be set
before calling any other methods.
- %report = WWW::iTunesConnect->parse_sales_summary($input,
%options)
- Parse a gzip'd summary file fetched from the Sales/Trend page. Arguments
are the same as the IO::Uncompress::Gunzip constructor, less the output
argument. To parse a file pass a scalar containing the file name as
$input. To parse a string of content, pass a
scalar reference as $input. The
%options hash is passed directly to gunzip.
The returned hash has two elements: header and
data. The header element is a reference to an array of the
column headers in the fetched TSV file. The data element is a
reference to an array of array references, one for each non-header line
in the fetched TSV file.
These methods fetch various bits of information from the iTunes Connect servers.
Everything here uses LWP and is therefore essentially a screen scraper. So, be
careful and try not to load up Apple's servers too much. We don't want them to
make this any more difficult than it already is.
- $itc->login()
- Uses the username and password properties to authenticate to the iTunes
Connect server. This is automatically called as needed by the other fetch
methods if user and password have already been set.
- $itc->daily_sales_summary_dates
- Fetch the list of available dates for Sales/Trend Daily Summary Reports.
This caches the returned results so it can be safely called multiple
times. Note, however, that if the parent script runs for longer than 24
hours the cached results will be invalid.
Dates are sorted in descending order.
- $itc->daily_sales_summary()
- Fetch the most recent Sales/Trends Daily Summary report and return it as a
hash of array references. The returned hash has two elements in addition
to the elements returned by parse_sales_summary: file and
filename. The file element is the raw content of the file
retrieved from iTunes Connect and the filename element is the
filename provided by the Content-Disposition header line.
If a single string argument is given in the form 'MM/DD/YYYY'
that date will be fetched instead (if it's available).
- $itc->fetch_financial_report($month, $region)
- Fetch the raw report content for a given month and region. The month
argument must be of the form 'YYYYMM' and the region argument is the name
of a region as listed on the Financial Reports page of iTunes Connect.
Returns a hash with two keys:
Key Description
-----------------------------------------------------------------------
filename The report filename as listed on the Financial Reports page
content Raw content of the report file
- $itc->financial_report_list()
- Fetch the list of available Financial Reports. This caches the returned
results and can be safely called multiple times.
- $itc->financial_report()
- Fetch the most recent Financial Report and return it as a hash. The keys
of the returned hash are of the form 'YYYYMM', each of which is a hash
containing one entry for each region included in that month's report. Each
of the region entries is a yet another hash with six elements:
Key Description
---------------------------------------------
currency Currency code
data Reference to array of report rows
file Raw content of the retrieved file
filename Retrieved file name
header Header row
total Sum of all rows in data
If a single string argument is given in the form 'YYYYMM',
that month's report will be fetched instead (if it's available).
- $itc->monthly_free_summary_dates
- Fetch the list of available months for Sales/Trend Monthly Summary
Reports. This caches the returned results so it can be safely called
multiple times.
Months are returned as an array of hash references in
descending order. Each hash contains the keys From and To,
indicating the start and end dates of each report.
- $itc->monthly_free_summary( %options )
- Fetch the most recent Sales/Trends Monthly Summary report and return it as
a hash of array references. The returned hash has two elements in addition
to the elements returned by parse_sales_summary: file and
filename. The file element is the raw content of the file
retrieved from iTunes Connect and the filename element is the
filename provided by the Content-Disposition header line.
If both From and To options are passed, and both
are of the form 'MM/DD/YYYY', the monthly summary matching the two dates
will be fetched instead (if it's available). The hashes returned by
monthly_free_summary_dates() are suitable for passing to this
method.
- $itc->weekly_sales_summary_dates
- Fetch the list of available dates for Sales/Trend Weekly Summary Reports.
This caches the returned results so it can be safely called multiple
times.
Dates are sorted in descending order.
- $itc->weekly_sales_summary()
- Fetch the most recent Sales/Trends Weekly Summary report and return it as
a hash of array references. The returned hash has two elements in addition
to the elements returned by parse_sales_summary: file and
filename. The file element is the raw content of the file
retrieved from iTunes Connect and the filename element is the
filename provided by the Content-Disposition header line.
If a single string argument is given in the form 'MM/DD/YYYY'
the week ending on the given date will be fetched instead (if it's
available).
LWP HTML::Form HTML::Tree IO::Uncompress::Gunzip Net::SSLeay
Brandon Fosdick, <bfoz@bfoz.net>
Copyright 2008-2009 Brandon Fosdick <bfoz@bfoz.net>
This software is provided under the terms of the BSD License.