javascript - 使用 json 从 archive.org 获取音频文件 URL

标签 javascript html json archive

Archive.org json 文档:http://archive.org/help/json.php

我正在使用这个网址:https://archive.org/metadata/AhmedAlajmiTheCompleteHolyQuran

json格式按此顺序显示

036.mp3

016.mp3

然而详情页的实际订单是

001.mp3

002.mp3

详情页:https://archive.org/details/AhmedAlajmiTheCompleteHolyQuran

如何获取详细信息页面中显示的上传者排序顺序。为什么 json 以不同的格式排序。我可以根据数字对网址进行排序,但文件名并不总是按数字排序。

这就是我到目前为止所拥有的。它只是获取 mp3 url。但顺序错误!

var urlJ = "https://archive.org/metadata/AhmedAlajmiTheCompleteHolyQuran";
function functionName() {
var url = "https://archive.org/metadata/AhmedAlajmiTheCompleteHolyQuran";
var details = "https://archive.org/download/AhmedAlajmiTheCompleteHolyQuran";
function jsonpCallback(response) {
    //after success some staff
    var files = response.files;
    for(var i=0; i < files.length; i++){
        if(files[i].source == "original"){
            console.log(details + "/" + files[i].name);
        }
    }
    console.log(response.files[0]);
}

$.ajax({
    url: url,
    dataType: 'jsonp',
    error: function(xhr, status, error) {
        alert(error.message);
    },
    success: jsonpCallback
});
return false;
}
functionName();

最佳答案

无法使用提供的 API 对其进行排序,但是元数据提供了一份数据,您可以使用它自己对其进行排序。

mtime - 文件的 Unix 风格时间戳

因此,您可以使用 JavaScript 对其进行排序(将其放在拉取response.files之后):

var files = response.files;

for (var i = files.length - 1; i >= 0; i--)
            if (typeof files[i].mtime === 'undefined')
                files.splice(i, 1);

files.sort(function(a, b) {
    return a.mtime - b.mtime;
});

此外,如果您只提取文件,则可以仅请求以下文件:

https://archive.org/metadata/AhmedAlajmiTheCompleteHolyQuran/files

当我运行代码时:

关于javascript - 使用 json 从 archive.org 获取音频文件 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497694/

相关文章:

javascript - OnMouseOver 基本事件不起作用

html - 如何判断浏览器是否处于 "quirks"模式?

javascript - 从不同目录中的另一个文件访问一个文件

php - 使用 php 处理 json 字符串中的特定元素

c# - 在 C# 中将选项列表转换为 JavaScript 数组

php - 联系表单验证问题

javascript - JSF/PrimeFaces 客户端输入操作

javascript - 向 JSON 字符串添加新属性

javascript - 如果内联按钮不在屏幕上,jQuery 会在底部放置社交共享按钮

javascript - 如何在箭头函数中获取值