从 WikiMedia Commons 下载音频数据集

问题描述 投票:0回答:1

我正在开发一个项目,需要此页面的音频数据集 文字 它显示了音频文件,但我无法弄清楚如何立即下载整个数据集。 有人可以帮我吗?

如果我点击每个文件,它会显示该文件的下载选项,但无法找到立即下载整个数据集的方法

mediawiki wikipedia wikimedia wikimedia-commons wikimedia-dumps
1个回答
0
投票

您可以使用 api,例如使用此链接:

https://commons.wikimedia.org/w/api.php?action=query&list=categorymembers&cmtitle=类别:Lingua_Libre_pronunciation-ory&cmtype=file&cmlimit=500&format=json

请参阅此处的文档:

https://commons.wikimedia.org/w/api.php?action=help&modules=query%2Bcategorymembers

然后处理该 json,例如使用以下形式的 php 脚本:

<?php

$all_file_names = [];

$base_url = 'https://commons.wikimedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Lingua_Libre_pronunciation-ory&cmtype=file&cmlimit=500&format=json';

$cmcontinue = '';
$filepages = []

do {
    $result = file_get_contents( $base_url . '&cmcontinue=' . $cmcontinue );
    $result = json_decode( $result, true );
    $filepages = array_merge( $filepages, $result['query']['categorymembers']);
    $cmcontinue = !empty( $result['continue'] ) ? $result['continue']['cmcontinue'] : false;
} while ( $cmcontinue );

foreach ( $filepages as $filepage ) {
    $url = 'https://commons.wikimedia.org/wiki/Special:Redirect/file/' . urlencode( $filepage['title'] );
    echo "Downloading file {$filepage['title']}...\n";
    file_put_contents( $filepage['title'], fopen( $url, 'r' ) );
}

注意:这是示例代码,正确的代码会做更多检查,例如检查输出中的所有键是否都存在。

© www.soinside.com 2019 - 2024. All rights reserved.