Re: [PATCH 4/7] remote-mediawiki: skip virtual namespaces
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Nov 1, 2017, 13:52 UTC
- Message-ID
- <CAPig+cSRrXj9BdgM6Q2OdBZtYJOVOnfo4BaG30C-_ug3QunPfQ@mail.gmail.com>
- In-Reply-To
- <20171030025142.19421-5-anarcat@debian.org>
On Sun, Oct 29, 2017 at 10:51 PM, Antoine Beaupré <anarcat@debian.org> wrote:
Show 8 quoted lines
> Virtual namespaces do not correspond to pages in the database and are > automatically generated by MediaWiki. It makes little sense, > therefore, to fetch pages from those namespaces and the MW API doesn't > support listing those pages. > > According to the documentation, those virtual namespaces are currently > "Special" (-1) and "Media" (-2) but we treat all negative namespaces > as "virtual" as a future-proofing mechanism.
This patch makes more sense now with the additional commentary. Thanks. More below.
Show 12 quoted lines
> Signed-off-by: Antoine Beaupré <anarcat@debian.org>
> ---
> diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl
> index e7616e1a2..5c85e64b6 100755
> --- a/contrib/mw-to-git/git-remote-mediawiki.perl
> +++ b/contrib/mw-to-git/git-remote-mediawiki.perl
> @@ -264,10 +264,12 @@ sub get_mw_tracked_categories {
> sub get_mw_tracked_namespaces {
> my $pages = shift;
> foreach my $local_namespace (@tracked_namespaces) {
> + my $namespace_id = get_mw_namespace_id($local_namespace);
> + next if $namespace_id < 0; # virtual namespaces don't support allpagesSince (it appears) that get_mw_namespace_id() can return undef, you probably still need to take that into account before performing a numeric comparison:
next if !$namespace_id || $namespace_id < 0;
Show 8 quoted lines
> my $mw_pages = $mediawiki->list( {
> action => 'query',
> list => 'allpages',
> - apnamespace => get_mw_namespace_id($local_namespace),
> + apnamespace => $namespace_id,
> aplimit => 'max' } )
> || die $mediawiki->{error}->{code} . ': '
> . $mediawiki->{error}->{details} . "\n";