做了个收藏夹,支持自动分类、整理网页,暂时取名“星藏” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
northisland
V2EX    分享创造

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

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

    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
    nbsp;   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     Solana     1458 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 16:41 PVG 00:41 LAX 08:41 JFK 11:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86