4

ウィキメディア コモンズから大量の音声 (.ogg) ファイルをダウンロードするにはどうすればよいですか? Mediawiki API を使用することは可能ですか?

4

1 に答える 1

7

MediaWiki APIを使用して、 .oggだけでなく、 Wikimedia Commonsにアップロードされた他の画像やメディア ファイルへの URL ダウンロード リンクを取得できます。応答から、各ファイルを簡単にダウンロードできます。C# での例を次に示します。

private static void GetFiles(List<string> fileNames)
{
    //Get HTML request with all file names
    var url = "https://commons.wikimedia.org/w/api.php?action=query&format=xml" +
        "&prop=imageinfo&iiprop=url&titles=File:" + string.Join("|File:", fileNames);
    using (var webResponse = (HttpWebResponse)WebRequest.Create(url).GetResponse())
    {
        using (var reader = new StreamReader(webResponse.GetResponseStream()))
        {
            var response = reader.ReadToEnd();

            //Get all file url links by parsing the XML response
            var links = XElement.Parse(response).Descendants("ii")
                .Select(x => x.Attribute("url").Value);
            foreach (var link in links)
            {
                //Save the current file on the disk
                using (var client = new WebClient())
                {
                    var fileName = link.Substring(link.LastIndexOf("/") + 1);
                    client.DownloadFile(link, fileName);
                }
            }
        }
    }
}

使用法:

//list of files to download
var fileNames = new List<string>() {
    "Flag of France.svg", "Black scorpion.jpg", "Stop.png",         //image
    "Jingle Bells.ogg", "Bach Astier 15.flac",                      //audio
    "Cable Car.webm", "Lion.ogv",                                   //video
    "Animalibrí.gif",                                               //animation
};

GetFiles(fileNames);

注: APIにはファイルの制限があります。

値の最大数は 50 (ボットの場合は 500) です。

そのため、さらにファイルをダウンロードする必要がある場合は、リストを分割して別のリクエストを作成する必要があります。

于 2016-01-14T22:19:56.917 に答える