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

做了个收藏夹,支持自动分类、整理网页,暂时取名“星藏”

  •  
  •   northisland · 2017-02-04 15:15:32 +08:00 · 1547 次点击
    这是一个创建于 2637 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1. 我为什么做“星藏”?

    1.1 首先赖 GFW ,

    引发了“星藏”诞生的主要原因: Chrome 收藏夹要怎样同步、合并?
    

    1.2 其次,针对的是和我一样的不羁收藏癖:

    他们看到好的网页,往往直接戳星星,懒得打标签——收藏夹里的星星,已经成千上万了。
    

    1.3 最后,一點微小的工作:

    希望大家善待自己口袋里珍藏的“小星星”,再翻开看看,也许会有新惊喜。薛薛。
    

    2. 怎么使用?

    星藏链接(还没绑定域名)

    收藏夹示例

    im1

    im2

    im3

    im4

    2.1 上传

    • 目前只支持 chrome 浏览器的收藏夹同步;
    • 三种方式导入收藏夹数据(插件、原生数据文件、 html );
    • 自动为您分类(手动没做),展现。

    2.2 浏览

    测试过许多系统,甚至微信的内置浏览器,都可以查看。

    2.3 吐槽,交流,反馈, code review

    • 前 3 点,欢迎各位在本帖进行。

    • 另外也开了个星藏 gitter.im

    • 第 4 点,请看下章。(因为有些页面的 License 问题,现在无法整站开源。解决后会弄成 GPL )


    3. 拆开“星藏”看看它的零件

        我之前工作上主要是做图像算法。所以这些组成零件的工具选择,很非主流。
    
        欢迎吐槽探讨。
    

    3.1 登录界面

    用的themeforest 上的这个模板,需要 apache2 。这个直接开源有 License 问题。

    3.2 用户面板

    用的是 Bootstrap 自己搭的。

    上传功能,用的是 dropzone github

    3.3 书签展示页面

    用的是themeforest 的这个模板

    缺点:

    • 模板有 bug (分类总标题消失之谜);
    • 效率不高( 200 条正常, 1000 条特别卡);
    • 不是很调理;
    • License 问题无法开源;
    • 不会加入书签手动分类修改;

    优点:

    • 有打开相册的感觉。

        有合适的替代品,会把这个模板踢开。
      

    3.4 网页后台

    Tornado ,具体是 RequestHandler 和 StaticFileHandler 。

    现在是每个步骤需要手动刷新。我想知道,要怎么让后台的内容,实时刷新到 html 中(类似美国大选时地图票数)。

    这里也要请教各位,谢谢。

    3.5 数据存储

    没有用数据库

    自己设计的结构,用 pickle 存储数据对象(用户信息,用户收藏,用户 log )。

    觉得有点儿乱了,正在考虑重构(传说中的:重写重做重新选架构)。

    3.6 网页标题分类器

    分类器是很早以前做的,用的是经典方法:特征+SVM :github 在这里。效果差劲,大概能分对 70%。

        准备随时用新的分类器踢掉。
    

    网页后台是非阻塞的,分类器是阻塞的。所以又用 zeromq 做了一个消息队列:通信原型的模型在这

    把消息队列, NLP 分类器打了一个包:NLP+消息队列的项目。欢迎 star 。

    3.7 chrome 插件

    开源在这里。写的太简陋。。。 90%的情况下需要翻墙才能用


    4. 说些“大话”

    按照美国鸡汤作家安兰德所说:活物都免不了做选择;非随机的选择,能体现出做选择者的“价值”。

    价值 1 :真实。

    (我们不能确定您收藏的网页是否贴近真实。

    但我会尽所能,保护你的收藏,你懂的。)

    价值 2 :让项目容易部署、传播。

    p.s.就这 2 条原则吧,以后如果我忘记了,欢迎任何人和我讨论。


    最后再次欢迎大家来折腾。

    im5

    27 条回复    2017-02-14 10:20:55 +08:00
    fffflyfish
        1
    fffflyfish  
       2017-02-04 15:55:18 +08:00   ❤️ 1
    厉害了!正好也在看 NLP ,那个后台数据实时刷新 lz 可以试试 ajax
    qq316107934
        2
    qq316107934  
       2017-02-04 15:59:08 +08:00 via Android   ❤️ 1
    看得出来很用心,赞一个。 但有时候可能对于 it 上的细分要求更高一些,我的建议是建立一个 tag 系统,能让收藏按照 tag 浏览,每个收藏可以自动生成多个 tag ,这样实用性就大大增强了。
    wclebb
        3
    wclebb  
       2017-02-04 16:09:41 +08:00
    看起来很赞啊,文太长,我只想问:是不是可以对我的收藏的书签自动化整理?是的话更赞了——我收藏太多了,也没时间去整理……
    northisland
        4
    northisland  
    OP
       2017-02-04 16:15:18 +08:00
    @wclebb 是自动化整理。

    分类的依据是网页的标题。

    现在分成 6 类:教育,科技,经济,娱乐,体育,购物。



    新版本会把分类做的更细的。到时候 at 你。谢谢支持 LoL
    rekulas
        5
    rekulas  
       2017-02-04 16:17:34 +08:00   ❤️ 1
    google 同步的路过,之前我也迷恋这些第三方的收藏夹。。。
    cqcn1991
        6
    cqcn1991  
       2017-02-04 16:21:14 +08:00 via iPhone
    自动整理, nb 啊!
    northisland
        7
    northisland  
    OP
       2017-02-04 16:43:12 +08:00
    @cqcn1991 谢谢,

    算法效果还需要提高,看下几个版本吧~
    admol
        8
    admol  
       2017-02-04 17:29:41 +08:00
    试用页面文本框为空好像没做校验
    northisland
        9
    northisland  
    OP
       2017-02-04 18:12:09 +08:00
    @admol 是的。登录有一堆工作没做。

    测试阶段,登录不需要密码。
    buir
        10
    buir  
       2017-02-04 18:20:58 +08:00   ❤️ 1
    本站数据:北京市北京市 腾讯云计算(北京)有限责任公司 腾讯集团
    参考数据 1 :天津天津 电信 /联通 /移动
    参考数据 2 :中国

    不怕被 DDOS !? 直接给 IP
    chocolatesir
        11
    chocolatesir  
       2017-02-04 20:50:30 +08:00 via Android   ❤️ 1
    希望能够加入允许整理后不共享的设置。。
    popok
        12
    popok  
       2017-02-04 21:45:55 +08:00 via iPhone
    终于知道,原来随手一点加收藏,不分类,导致收藏夹超级乱的,不止我一个人。放心了
    Laynooor
        13
    Laynooor  
       2017-02-04 21:50:34 +08:00 via Android
    收藏夹多的滚轮查看都要卡半天
    @popok
    mahone3297
        14
    mahone3297  
       2017-02-04 21:53:58 +08:00   ❤️ 1
    我也是想做一个收藏夹。 lz 做的,跟我的。。。
    * 某些想法跟我不一样,比如,我是希望人工分类的,是希望自己维护的
    * 某些想法貌似跟我一样,我是希望,收藏夹能有可 public ,可 private 部分,然后 public 部分,大家都可以随处分享
    javaluo
        15
    javaluo  
       2017-02-04 22:20:26 +08:00 via Android
    觉得网页内文字搜索价值更大,从使用场景看
    happy8109
        16
    happy8109  
       2017-02-04 23:42:55 +08:00
    只需要个支持树形目录的,一直没找到
    zhangbohun
        17
    zhangbohun  
       2017-02-04 23:50:26 +08:00
    上千个收藏不知道有没有救额。。。
    wclebb
        18
    wclebb  
       2017-02-04 23:56:34 +08:00   ❤️ 1
    我和你的世界好像不一样……

    因为我按了三种方法,都不行。
    第一种,下载插件, Chrome 拒绝加载,据之前的经验,基本上大部分插件无法加载,懒得折腾。
    第二种,输入什么 chrome://v 什么那个,然后打开出来只有文本的,关于系统信息和浏览器信息的那种,是我理解错误?
    第三种,好办,导出 html 文件就可以了。
    然后找了几分钟后放弃——找不到可以导出的地方。

    然后我发现, Chrome 书签导出到你网站,然后……就没然后了?……
    我原本是想你来打理我的书签管理的……
    rockyou12
        19
    rockyou12  
       2017-02-05 14:07:07 +08:00   ❤️ 1
    需要一个隐私?例外?私人空间?类似的功能吧,不然羞羞的网站怎么办(*ノωノ)
    ishowman
        20
    ishowman  
       2017-02-05 19:01:16 +08:00   ❤️ 1
    @northisland 还是希望能手动分类
    ishowman
        21
    ishowman  
       2017-02-05 19:04:16 +08:00
    希望能做的比 pocket 更好
    inmyfree
        22
    inmyfree  
       2017-02-06 13:16:52 +08:00
    @wclebb #18

    1 、可以把那个插件解压到一个文件夹内,然后在插件页面加载即可
    2 、仔细瞄一下,你可以看到有个配置路径为: Profile Path C:\Users\xxxxx\AppData\Local\Google\Chrome\User Data\Default ,打开这个路径后你就可以找到那个文件

    ...............

    嗯,没有了.......
    lynnX
        23
    lynnX  
       2017-02-08 08:39:19 +08:00   ❤️ 1
    Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 1141, in _when_complete
    callback()
    File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 1162, in _execute_method
    self._when_complete(method(*self.path_args, **self.path_kwargs),
    File "tornado_server.py", line 92, in get
    self.render('stars_page_%s_%s.htm' % (uni_id, i_page))
    File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 538, in render
    html = self.render_string(template_name, **kwargs)
    File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 642, in render_string
    t = loader.load(template_name)
    File "/usr/lib/python2.7/dist-packages/tornado/template.py", line 338, in load
    self.templates[name] = self._create_template(name)
    File "/usr/lib/python2.7/dist-packages/tornado/template.py", line 366, in _create_template
    template = Template(f.read(), name=name, loader=self)
    File "/usr/lib/python2.7/dist-packages/tornado/template.py", line 231, in __init__
    self.file = _File(self, _parse(reader, self))
    File "/usr/lib/python2.7/dist-packages/tornado/template.py", line 763, in _parse
    raise ParseError("Missing end block %%} on line %d" % line)
    ParseError: Missing end block %} on line 2397
    luchenqun
        24
    luchenqun  
       2017-02-08 09:38:06 +08:00   ❤️ 1
    我也做了一个: http://mybookmark.cn/
    designer
        25
    designer  
       2017-02-08 11:43:41 +08:00 via iPad   ❤️ 1
    支持一下!
    luchenqun
        26
    luchenqun  
       2017-02-09 07:51:50 +08:00 via iPad
    @mahone3297 来来来,看我做的。 mybookmark.cn 。满足你提到的幻想。
    chztv
        27
    chztv  
       2017-02-14 10:20:55 +08:00
    最近怎么突然有这么多做收藏夹的,你们再这样发展下去,我岂不是可以不用续费 Pinboard 了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1280 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:59 · PVG 01:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.