首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Coding
V2EX  ›  分享创造

支持多标签的文件管理 UWP TagFile

  •  
  •   ankazen · 32 天前 · 1992 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。
    关于文件管理应用
    1、这类的应用不应该使用 Electron 等方式开发。
    2、现有的文件管理应用,不支持多标签。但是一个文件,可能属于多个标签:日本,未看完,美腿等等,让人纠结。
    3、文件夹这样的树形结构,效率低下。

    综上,试着做个多标签的文件管理应用 TagFile,现已上线 Windows store,欢迎去试用、提意见。
    由于 Windows store 限制多,如果有需求的话,会做 WPF 这样更强大的版本。
    37 回复  |  直到 2019-11-12 09:49:48 +08:00
        1
    TrembleBeforeMe   32 天前
    精神支持一下,说实话不太想用 uwp 的软件,总感觉不如传统 exe 好用。
        2
    loveour   32 天前   ♥ 1
    举例的这个几个标签有点意思。。
    支持做这类应用。
        3
    ksc010   32 天前
    不支持按照文件夹导入吗?
        4
    ankazen   32 天前
    @ksc010 把文件夹拖拽上去就可以
        5
    ksc010   32 天前
    @ankazen 好的 谢谢
    还有一个建议是 给文件夹批量打标签
    或者是想下怎么优化下这种场景
    我原来已经按照文件夹分类了一些文件了 怎么把这些文件批量导入进来
    同时又能方便快捷的设置上标签
        6
    ankazen   32 天前
    @TrembleBeforeMe 是的。。uwp 限制挺多的
        7
    ankazen   32 天前
    @ksc010 右侧标签选中的情况下,所有拖拽进去的文件,对会打上选中的标签。
    可以先建立标签,选中,然后把文件都拖进来。
        8
    ungrown   32 天前 via Android
    现阶段不要妄想标签能解决你的问题。
    我就问你,这类软件给文件打的标签能不能存在原文件本身的数据里?显然不能,因为这样做 IO 负担大,还有可能出错损坏原数据。那么存在 NTFS 的附加数据流里怎么样?或者 ext4 这类文件系统的扩展属性里?可是这意味着经过这样处理的文件一旦要跨文件系统转移就很麻烦,别的不说,从本地 win 系统拷贝到 nas 就要面临这样的困境。
    那么这类标签文件管理器往往会怎么做呢?你应该想到了,自维护一个数据库,比如 sqlite。那么问题来了,这个软件自行维护的小数据库一旦重装怎么办呢?导入导出方便吗?源文件路径变化了它能自己监控自动适应吗?
    其实标签文件系统一直有人在研究开发,有不少已经使用很方便的 fuse 实现的标签文件系统,然而终究乏人问津,为什么?
        9
    ankazen   32 天前
    @ungrown 任何解决方案都有问题的。
    首先得承认目录这种树形结构繁琐。
    然后有了 everything 这样的基于搜索的文件管理。
    但是,搜索是基于文件名的,而文件名本身是目录结构的一部分。我看很多人试图在文件名上添加很多标签,来方便搜索。这种也太繁琐。
    去目录化,标签化,是没有问题的。

    至于现有的标签系统,用的人不多。我觉得是标签的生成和管理,本身就需要很多精力。
    文件迁移怎么办?系统重装怎么办?文件监控怎么弄?
    一个工具嘛,不能解决所有的问题。而且这些问题肯定都有办法解决,就看需不需要。
    比如说:如果文件是经常变换的,你可能不会去打标签的,而那些影音文件,位置和内容都不怎么变化的,不就没问题了吗?
        10
    ungrown   32 天前 via Android
    @ankazen 目录缺点再多也是一切的基础,数据存放不可能不依赖目录。所以目录只是为了提供一个路径,我们需要的也仅仅是一个路径。
    你需要的,其实不是标签,而是一个数据库。
    其实如果能有跨文件系统且统一实现的文件原数据存储方式的话,这一切都迎刃而解。
    奈何大家没这个硬需求。
    如果我需要给文件或者目录打标签,我在它旁边放个相同名字的原数据文本文件,里面写上标签,就行了。支持文本文件内容索引的工具,很多。
    我为什么不用标签管理器,因为用过,而且是集中时间把当时所有做得够好的全部用一遍。我得出一个结论,这和标签管理器这个软件写的好不好,用起来方便不方便其实没有一毛钱关系。真正的问题在于,当我设计标签、编辑标签、维护标签所花的时间,远远超过了我通过标签搜索所节省下来的时间时,我 tm 是不是傻…
    所以,大多数文件应当分类放好,它们在选择存放位置的时候就应当确保,其路径能符合其主要属性,这也是 URL 的核心价值。
    至于那些确实不好分类、需要额外属性标记的路径,我只要写一个同名文本文件就好了。
        11
    ungrown   32 天前 via Android
    @ankazen 其实如果能有跨文件系统且统一实现的文件附加数据存储方式的话,这一切都迎刃而解。
    奈何大家没这个硬需求。
        12
    ankazen   32 天前
    @ungrown 跨文件系统啥的,我觉得现在就不用想了。云端提供便利没错,但也很危险。还是本地好。
    tag 本身就是要在文件之外多做些工作,这没错。但是我之所以觉得这个可能有用,因为我自己做了类似的多标签管理自己的笔记,用了好几年了,我觉得很方便。所以要把本地文件也标签化了。
        13
    ungrown   32 天前 via Android
    @ankazen 你试试吧,最后不尽如人意也不用灰心,正常的,这事不是加个标签系统就幸福快乐了。
    标签多了,找标签本身就成了麻烦。标签少了,整个标签系统又有点多余。
    其实我们平常整理文件的过程就是一个贴标签的行为,只不过那个标签数据库在我们脑子里。
        14
    ungrown   32 天前 via Android
    @ankazen 我的笔记用的为知,也有标签功能,但我发现我用不到。它本身支持多级目录,再配合文本搜索,不存在搜不到的情况。
        15
    ankazen   32 天前
    @ungrown 现有的标签也是单标签,现有的笔记都是基于文件的,粒度不够小。
    如果你有几行代码,既属于 nginx,也属于部署,也属于 shell,而你有三个笔记,叫 nginx,部署和 shell,那么这段代码应该放在哪里?如果你想查找除了搜索关键词,是不是能从目录方式找到?
    现在的笔记当然可以打多个标签,但它的检索方式是单标签的。
    对于笔记来说,检索比写入要重要的多。除非你写了就不再查询。
        16
    ungrown   32 天前 via Android
    @ankazen 你这就是思路走进死胡同了呀。想这么特征明显的笔记,根本都不需要分类,直接搜三个关键词,排最上的那几个里面肯定有它(当然还是会放一个地方的,毕竟总得放一个地方,看我最初找它或者写它是围绕哪个点来分类)
        17
    ungrown   32 天前 via Android
    @ankazen 内容本身就是最好的标签啊,只有当某个标签偏偏不在内容中的时候,我们才需要添加上去以备将来搜索
        18
    ungrown   32 天前 via Android
    @ankazen 就像你说的小姐姐,毕竟无法基于自然语言对视频内容进行搜索,所以才要加标签嘛。不过我来加的话,也就是写个同名的文本文件,甚至可以在那个文本文件的文件名里面直接 append 标签
        19
    ankazen   32 天前
    @ungrown 关键词和标签有很大区别,我自己记得标签可能有二三十个,包括类别,也包括,像待办,已完成,这样不会出现在内容中的词。内容里的词就多了去了。
    标签就是把大量的内容或词映射到那么常用的二三十个关键词上。
        20
    ungrown   32 天前 via Android
    @ankazen 然而待办完成这样的标签,偏偏是典型的目录,完全可以用目录替代,而从一个目录拖到相邻目录所需要的操作和时间,搞不好比点击标签切换成另一个标签,还要少。
    其实你不能过分拘泥于这种形式上的标签目录的区别,太多软件就是拘泥于此才没设计好。
    要抓住本质,然后在符合本质的前提下,提升效率,而不是为了某个形式去设计。
    笔记这个场景下,标签是个很好的工具,你看我哪怕不用,我也能理解标签存在的必要性,在笔记应用上。
    但是到了文件系统或者文件管理,就不一样了,不是说这种情况下标签没有立足之地,而是它几乎无法设计成高效的体系。
    你看,文本文件几乎不需要标签,可能会加少量标签。而真正必须要加标签的,恰恰是多媒体这类非文本非线性的文件。而给这类文件加标签,绝不是仅仅二三十个就能满足的。视个人需求,有的人只需要几个标签,当然这类人用目录分类就够了。有人则需要上百甚至更多的标签,这不奇怪,尤其是那些搞多媒体创作的,对音频、视频片段、图片都需要从多个维度同时进行标记,实际上这类人确实正在忍受着缺乏标签的痛苦,尽管他们平时使用的软件肯定都或多或少提供了贴标签或者加注释以及搜索的功能。
    所以我说,标签系统,不是加上去了就能让大家开心了。
        21
    ankazen   32 天前
    @ungrown 你说的没错,也考虑的很周全。但是你不能自己解决所有的问题,或用一个工具解决所有的问题。
    对于我来说,我只解决一个问题,就是多标签检索。其他问题留给别人。
        22
    ungrown   32 天前 via Android
    @ankazen 挖坑不填好,鄙视你
        23
    ankazen   32 天前
    @ungrown 你鄙视我也没问题,不用获得我许可。
        24
    imn1   32 天前
    我用 pyqt5 写了一个自用,但没兴趣发布,因为不想改 bug,没能力做客服
    bug 是什么都知道,只是我自己用,路径什么的完全是自己习惯,不是大众化的写法
    我自己按顺序操作几千次可能才会遇上一次错误,崩了重新打开就是了,懒得改
    给别人用可能第一次就崩……

    文件 tag 管理,最重要的不是多 tag (其实已经有好几家做了出来了),这个是小 case,很容易
    最重要的是拖放、拖放 和 drag & drop,前面说的几家全部都没做拖放,我一次几百个目录、上千个文件加 tag,逐个添加?
    另外就是按 folder 加 tag,尤其是图片集,不能可逐张加,30+T 图片,你说多少张?
        25
    ankazen   32 天前
    @imn1 文件夹转 tag,有些是有的。
    拖放是很重要。
    如果能在系统右键里直接打 tag,操作也会方便很多。
        26
    imn1   32 天前
    @ankazen
    右键确实方便,不过可能要挂钩子,超出我能力水平

    另外,最好是不要打字,预置一些选取(如电影分类等等),比较个人的例如相册这些,难以预置才打字
    不过,通用始终难写,我自己用就好办,一早就准备了几个百 tag,极少需要打字,都是 checkbox 打勾
        27
    ankazen   32 天前
    @imn1 智能标签可以提取文件夹名,文件种类等,预设标签可以让用户提供个列表。都有办法解决,只要习惯打标签这种方式。
        28
    codehz   31 天前
    NTFS 不是有额外数据流么,可以把元数据丢这里面
        29
    horsley   31 天前
    有点眼熟,之前毕业论文写的就是你说的东西,连名字都一样,就是叫 TagFile,一样的也是标签化管理文件、非树状结构,多对多关联
        30
    iwtbauh   31 天前 via Android
    @ungrown #11

    我认为并不是没有这个硬需求,而是用记录结构存储某些元数据时会造成一些根本性的问题。

    比如我觉得最麻烦的一个问题是,如果文件本身记录结构中包含使用此文件相关的重要信息,那么

    cp 1.txt 2.txt
    cat 1.txt > 2.txt

    可能会产生惊人的不一致性,而这种不一致性也无法解决。

    其实我觉得像这种需求,写成一个单独的文件系统比较好,例如就叫 tagfs 吧,tagfs 的工作类似 overlayfs,在原有的文件系统目录中索引文件,并把数据放到另外的地方,同时提供一些 /by-tags/xxx 等等的虚拟目录,这样在应用程序层是透明的,可以自动兼容绝大部分的文件管理器和其他应用程序。
        31
    ungrown   31 天前
    @iwtbauh tagfs 有一大堆,大多都是 fuse 实现的,但也有几个是用硬链接软链接实现的,是的你没猜错都是 linux 下的程序,而且还都很好用,没什么大 bug,然并卵,没什么人用
        32
    iwtbauh   31 天前 via Android
    @ungrown #31

    不吧。不应该是 linux 下的程序吧。fuse 又不是 Linux-only 的软件。fuse 脱胎于 hurd 系统的设计,后来进入了 bsd 系,Linux 在支持 fuse 的系统里算是较晚的了。

    即使在 Unix 以外的 Windows 世界,我至少知道有 3 个类似项目(开源和闭源)在积极开发中,如 dokany。其中一个叫 winfsp 的还号称与 fuse 兼容。
        33
    ungrown   31 天前
    @iwtbauh 不用抖书袋,我知道的没你多,你就让 hurd 和 bsd 去代表 fuse 用户群好了
        34
    cht1995   31 天前
    借楼问,有没有比较好的能够自动根据多媒体文件内容来加标签的工具?
    就像楼上所说的,整理音视频素材时仅通过树状目录非常不便;又因为不是专业人员,没有固定的存储和编辑设备,导致需要在不同环境导入导出查找素材。每次想到整理素材就头疼 😖
        35
    ddup   31 天前 via Android
    不错,可是微软好官方据说也要出 UWP 版资源管理器了
        36
    ankazen   31 天前
    @ddup 官方只会满足大多人需求,不会做小众的
        37
    ankazen   31 天前
    @cht1995 有个 eagle,做的不错,但是它是针对图片的。视频和音频的,貌似现在没有。
    你整理素材需要什么信息或标签?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3093 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 10:35 · PVG 18:35 · LAX 02:35 · JFK 05:35
    ♥ Do have faith in what you're doing.