[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 lonron 于 2023-5-18 09:44 编辑

回复 30# idwma

https://189.ly93.cc/api.php?c=list&code=7n6r22uae6Jn&pwd=r6sf
   
老师,麻烦您再帮我看下,由于这个网页的api更新了,path字段里现在变成没有fileid和filename字段了,而是直接用实际id配对实际name这种格式,这种情况要怎么获取根id呢?另外,path里的(子)文件夹名称又要怎样写才能全部获取出来?
powershell "$a=0;function test($id){$z=irm ('https://189.ly93.cc/api.php?c=list&code=7n6r22uae6Jn&pwd=r6sf'+'&id='+$id);$z='https://189.ly93.cc/api.php?c=list&limit='+$z.count+'&code=7n6r22uae6Jn&pwd=r6sf'+'&id='+$id;sleep 1;irm $z|%%{if(!$global:a){($global:a=$_.path.fileId)}$_.data|%%{if($_.isdir){sleep -m 500;$_.id;test($_.id)}}}};test"

TOP

回复 31# lonron
  1. $a=0;
  2. function test($id){
  3. $y='https://189.ly93.cc/api.php?c=list&code=7n6r22uae6Jn&pwd=r6sf&fileId=';
  4. $z=irm ($y+$id);
  5. if($z.count -gt 30){sleep 1;$z=irm ($y+$id+'&limit='+$z.count)}
  6. $z|%{
  7. if(!$global:a){($global:a=$_.path.psobject.properties.name)}
  8. sleep 1;
  9. $_.data|%{if($_.isdir){$_.id;test($_.id)}}
  10. }
  11. }
  12. test
复制代码

TOP

回复 32# idwma


    有点看懵了,似乎是比原来代码多加了一个前置判断总条数是否大于30?

TOP

回复 33# lonron


前面的不用管把原来的改成第7行一样的就行了
全部获取是要全部显示出来吗
$_.path.psobject.name 是id
$_.path.psobject.value 是文件夹名称
path对象类型变了,可以看下帮助https://learn.microsoft.com/zh-c ... bout-pscustomobject
1

评分人数

    • lonron: 哇,就是这样的,非常感谢技术 + 1

TOP

本帖最后由 lonron 于 2023-5-20 12:35 编辑

回复 32# idwma


    老师,网站所有者跟我说,直接用count赋值给limit的这种方式不可取,会让他的服务器有一定的风险,可能会存在瞬时post或get过多数据的情况。所以他建议我limit应该固定在100以内,然后用&page=的方式来分流获取数据。这貌似涉及到循环了,还请您再帮忙修改下源代码,实在不好意思一直劳烦您,真的非常感谢!

TOP

回复 35# lonron
  1. $a=0;
  2. function test($id){
  3.     $limit=100;
  4.     $y='https://189.ly93.cc/api.php?c=list&code=7n6r22uae6Jn&pwd=r6sf&fileId=';
  5.     $z=irm ($y+$id+'&limit='+$limit);
  6.     $b=$z.count;
  7.     $c={
  8. z|%{
  9.     if(!$global:a){($global:a=$_.path.psobject.properties.name)}
  10.     sleep 1;
  11.     $_.data|%{if($_.isdir){$_.id;test($_.id)}}
  12. }
  13.     }
  14.     if($b -le 100){&$c}else{
  15. &$c;
  16. for($($i=1;$b+=100);($b-=$limit) -gt 0;++$i){
  17.     sleep 1;
  18.     $z=irm ($y+$id+'&limit='+$lilmit+'&page='+$i);
  19.     &$c
  20. }
  21.     }
  22. }
  23. test
复制代码

TOP

回复 36# idwma


    测试了下第102个开始出现部分重复了,https://189.ly93.cc/file/list?code=QBBzaevemUbm&pwd=4d0d&id=&limit=100 这是用来测试的数据您看下,然后path字段又被他修改回原来了,所以还是用原来的path.id就可以了。

TOP

回复 37# lonron
  1. $a=0;
  2. function test($id){
  3.     $limit=100;
  4.     $y='https://189.ly93.cc/file/list?code=QBBzaevemUbm&pwd=4d0d&id=';
  5.     $z=irm ($y+$id+'&limit='+$limit);
  6.     $b=$z.count;
  7.     $c={
  8. $z|%{
  9.     if(!$global:a){($global:a=$_.path.id)}
  10.     sleep 1;
  11.     $_.data|%{if($_.isdir){$_.id;test($_.id)}}
  12. }
  13.     }
  14.     if($b -le 100){&$c}else{
  15. &$c;
  16. for($($i=2;$b+=100);($b-=$limit) -gt 0;++$i){
  17.     sleep 1;
  18.     $z=irm ($y+$id+'&limit='+$lilmit+'&page='+$i);
  19.     &$c
  20. }
  21.     }
  22. }
  23. test
复制代码

TOP

回复 38# idwma


    还是重复的,和刚才那个区别 $i 一个是1 一个是2

TOP

回复 39# lonron


    18行改成这样
  1. $z=irm ($y+$id+'&limit='+$limit+'&page='+$i);
复制代码
1

评分人数

TOP

返回列表