全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 847|回复: 7

[已解决] 如何导出百度云盘某个文件夹包含所有下级子文件夹的内容

[复制链接]
发表于 2022-8-23 22:10:07 | 显示全部楼层 |阅读模式
本帖最后由 zxxx 于 2022-8-24 08:01 编辑

输出包含文件名和文件大小。和 linux 的 tree -sfi 一样的效果

  1. [       4096]  ./a
  2. [       4096]  ./a/b
  3. [        424]  ./a/b/b.txt
  4. [       4096]  ./a/b/c
  5. [        424]  ./a/b/c/c.txt
  6. [       4096]  ./a/b/c/d
  7. [        424]  ./a/b/c/d/d.txt
  8. [        424]  ./a.txt
复制代码
发表于 2022-8-23 22:12:04 | 显示全部楼层
我用代码写了个, 但是不方便分享出来, 里面有私人 key 内容.
循环调用然后 print 即可
 楼主| 发表于 2022-8-23 22:16:53 | 显示全部楼层
bluxessssc 发表于 2022-8-23 22:12
我用代码写了个, 但是不方便分享出来, 里面有私人 key 内容.
循环调用然后 print 即可  ...

可否pm一个删除key的代码?
发表于 2022-8-23 22:26:22 | 显示全部楼层
zxxx 发表于 2022-8-23 22:16
可否pm一个删除key的代码?

因为里面有上百个百度云账号密码等,以及写死的路径等, 很多地方写死了, 真不太方便改,  原理就是https://github.com/qjfoidnh/BaiduPCS-Go ,调取目录的地方, 你把他写成循环调用就行, 取一个目录里面的信息,就调用一次, 很好改的。
 楼主| 发表于 2022-8-23 22:31:18 | 显示全部楼层
bluxessssc 发表于 2022-8-23 22:26
因为里面有上百个百度云账号密码等,以及写死的路径等, 很多地方写死了, 真不太方便改,  原理就是http ...

修改这个代码,重新生成exe吗?
发表于 2022-8-23 22:37:31 | 显示全部楼层
zxxx 发表于 2022-8-23 22:31
修改这个代码,重新生成exe吗?

这个 golang 写的, Windows linux macos 都可以用, 只要你代码没报错
 楼主| 发表于 2022-8-23 22:50:53 | 显示全部楼层
bluxessssc 发表于 2022-8-23 22:37
这个 golang 写的, Windows linux macos 都可以用, 只要你代码没报错

要先学习一下golang了
 楼主| 发表于 2022-8-24 07:46:35 | 显示全部楼层
修改两个文件,重新生成就可以了

  1. set GOOS=windows
  2. set GOARCH=amd64
  3. set CGO_ENABLED=0
  4. go build
复制代码


internal/pcscommand/tree.go

  1. import (
  2.         "fmt"
  3. +       "strconv"       
  4.         "github.com/qjfoidnh/BaiduPCS-Go/baidupcs"
  5.         "strings"
  6. )
复制代码

  1. type (
  2.   TreeOptions struct {
  3.     Depth    int
  4. +   ShowSize bool
  5.     ShowFsid bool
  6.   }
  7. )
  8. +
  9. + func Format(n int64) string {
  10. +     in := strconv.FormatInt(n, 10)
  11. +     numOfDigits := len(in)
  12. +     if n < 0 {
  13. +         numOfDigits-- // First character is the - sign (not a digit)
  14. +     }
  15. +     numOfCommas := (numOfDigits - 1) / 3
  16. +
  17. +     out := make([]byte, len(in)+numOfCommas)
  18. +     if n < 0 {
  19. +         in, out[0] = in[1:], '-'
  20. +     }
  21. +
  22. +     for i, j, k := len(in)-1, len(out)-1, 0; ; i, j = i-1, j-1 {
  23. +         out[j] = in[i]
  24. +         if i == 0 {
  25. +             return string(out)
  26. +         }
  27. +         if k++; k == 3 {
  28. +             j, k = j-1, 0
  29. +             out[j] = ','
  30. +         }
  31. +     }
  32. + }

  33. func getTree(pcspath string, depth int, option *TreeOptions) {
复制代码

  1.     if i+1 == fN {
  2.       prefix = lastFilePrefix
  3.     }
  4. +   if option.ShowFsid && option.ShowSize {
  5. +     fmt.Printf("%v%v %v: %v: %v\n", indentPrefixStr, prefix, file.Filename, Format(file.Size), file.FsID)
  6. +   } else if option.ShowFsid {
  7. +     fmt.Printf("%v%v %v: %v\n", indentPrefixStr, prefix, file.Filename, file.FsID)
  8. +   } else if option.ShowSize {
  9. +     fmt.Printf("%v%v %v: %v\n", indentPrefixStr, prefix, file.Filename, Format(file.Size))
  10.     } else {
  11.       fmt.Printf("%v%v %v\n", indentPrefixStr, prefix, file.Filename)
  12.     }
复制代码


main.go

  1.                         Action: func(c *cli.Context) error {
  2.                                 pcscommand.RunTree(c.Args().Get(0), 0, &pcscommand.TreeOptions{
  3.                                         Depth:    c.Int("depth"),
  4. +                                 ShowSize: c.Bool("size"),
  5.                                         ShowFsid: c.Bool("fsid"),
  6.                                 })
  7.                                 return nil
  8.                         },
  9.                         Flags: []cli.Flag{
  10.                                 cli.IntFlag{
  11.                                         Name:  "depth",
  12.                                         Usage: "显示深度",
  13.                                         Value: -1,
  14.                                 },
  15. +                                cli.BoolFlag{
  16. +                                        Name:  "size",
  17. +                                        Usage: "带size显示",
  18. +                                },
  19.                                 cli.BoolFlag{
  20.                                         Name:  "fsid",
  21.                                         Usage: "带fsid显示",
  22.                                 },
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-5-13 12:45 , Processed in 0.066306 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表