我正在寻找一种方法来列出github发布的所有文件和目录
例如:
root
-> x.txt
-> folder1
-> folder2
-> file-0.txt
-> file-1.txt
将返回:
root/x.txt
root/folder1/file-1.txt
root/folder1/folder2/file-0.txt
有没有办法直接用github api做到这一点?如果没有php和api?
答案 0 :(得分:1)
在PHP中:
function github_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: token XXX_TOKEN"));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
return curl_exec($ch);
}
$cache = github_curl("https://api.github.com/repos/LucLaverdure/Wizard.Build/releases/latest?client_secret=XXX_SECRET");
$cache = json_decode($cache, true);
$cache_file = $cache["zipball_url"];
// get zip file, build it if new
if (!file_exists(dirname(__FILE__)."/cache/".basename($cache_file).".zip")) {
$cache_download = github_curl($cache_file);
file_put_contents(dirname(__FILE__)."/cache/".basename($cache_file).".zip", $cache_download);
}
// list files within zip file (FTP ONLY)
$zip = new ZipArchive;
if ($zip->open(dirname(__FILE__)."/cache/".basename($cache_file).".zip") == TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
echo $filename."<br>";
}
}
瞧!
答案 1 :(得分:0)
repo content API和release API都不会枚举文件 要获取回购内容,您可能需要使用Tree API
但是对于一个版本(可以包含一个zip文件或任何其他资产),你需要像aatishnn/lszip
这样的东西:一种列出远程存档内容的方法(这里有python)。