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

首个正式开源项目: HXCO Get - 万物皆可 Get

  •  3
     
  •   imhx233 ·
    hifocus · 2018-08-03 02:10:59 +08:00 · 8107 次点击
    这是一个创建于 2311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    说实话其实起这么个标题有点名过其实了,其实这仅仅是一个开源的前端小应用(不过想不出有什么别的标题),能够帮助你在 Windows、macOS、Android 以及 iOS 下下载不同的应用。因为实现原理的原因,暂时不支持任何 Linux 系统。

    官网:https://get.js.org

    应用列表:https://get.js.org/apps

    GitHub:https://github.com/hxco/Get

    中文文档:https://github.com/hxco/Get/blob/master/README-CN.md

    英文文档:https://github.com/hxco/Get/blob/master/README.md

    原理是通过简单的 Javascript 代码判断操作系统,再重定向到预先抓取的下载地址。HTML 代码生成依赖 Jekyll,实现了自动压缩。

    这个项目最初的想法,仅仅是一个能够下载 Google Chrome 最新版本的网页;后来,又想着把 Firefox 也加上。最后,我适配了非常多的应用,并且将会在未来适配更多。

    这个项目对于普通人来说,使用方式非常的简单,你仅仅需要记住 get.js.org 这个网址,get = 获取,js = JavaScript,org = organization (组织),然后在浏览器里面输入:get.js.org/应用名称,如 get.js.org/chrome 还是什么别的。[get.js.org]使用 https 协议,并且会将不安全的 http 协议强制重定向为 https,所以在实际使用的时候不必带上 https:// 前缀。

    斜杠后面的部分,是应用名称,这里可以以三种方式呈现——以“网易云音乐”为例子:

    https://get.js.org/wangyiyunyinyue - “网易云音乐的拼音”

    https://get.js.org/wyyyy - ”网易云音乐拼音的首字母简写“

    https://get.js.org/cloudmusic - ”网易云音乐的英文名“

    综上 - 获取一个应用的方式可以使用拼音全名,拼音缩写,以及英文名称。请注意,任何情况下,https://get.js.org/ 后面的应用名称不带有大写字母,也不带有任何空格。

    这个项目会持续维护,并且我衷心希望它能帮到在座的各位 - 在重装系统需要安装软件的时候……

    https://get.js.org/chrome
    https://get.js.org/tim
    https://get.js.org/wechat
    https://get.js.org/wangyiyunyinyue
    https://get.js.org/qqyinyue
    https://get.js.org/potplayer
    https://get.js.org/vscode
    https://get.js.org/ssr
    https://get.js.org/telegram
    https://get.js.org/word
    https://get.js.org/excel
    https://get.js.org/powerpoint
    https://get.js.org/steam
    https://get.js.org/origin
    https://get.js.org/uplay
    https://get.js.org/thunder9
    https://get.js.org/itunes
    

    然后这么一来你需要的软件的安装包都可以下载下来了,无论你在使用哪个系统。

    如果想要新增应用支持,或者使用过程中遇到任何问题,请到 https://github.com/hxco/Get/issues 打开一个 issue

    这个项目是本人第一个正式的开源项目,是作为博客运行一周年的礼物送给自己和博客,也获得了数位小伙伴的支持。在这里感谢目前唯二的项目协作者:@KeJun @XTL,同时感谢给予我建议和支持的 @小霖@折影轻梦 以及 @黎明余光

    欢迎各位大佬使用,如果有不足之处请不吝赐教。谢谢各位!

    相关博文:https://tech.hxco.de/announcement/to-meet-you-in-one-year.html

    75 条回复    2018-08-12 00:59:02 +08:00
    wafm
        1
    wafm  
       2018-08-03 02:16:58 +08:00
    资瓷资瓷,这可以算作是新一代的下载站吧
    Yien
        2
    Yien  
       2018-08-03 02:34:24 +08:00 via Android
    Cool !
    nciyuan
        3
    nciyuan  
       2018-08-03 04:05:29 +08:00 via Android
    楼主脑洞其实实在是清奇,我之前也做过一个类似的,不过是关于开源软件的文档,以及开源软件静态 CDN,目前该网站已扔给我们的低频存储存档站吃灰,源码已进入 localhost 模式。首先请问我能把您的这个获取方式称作程序员的 RESTful 形式艺术性下载吗?
    首先我觉得这个轮子海星,然后 Watch 和 Star 一下。其次是您这个命名实在是太有趣了,就怕电脑要是王者荣耀,手机访问 VisualStudio 怎么办?
    虽然这个是很 restful 的 URI,但是没有多少软件能真正牛逼哄哄的兼容全平台,另外我看您自动识别了电报,然后弹出 ss,可是 ios 本身锁区,特别是贵州政府强 X 了苹果之后,iTunes 的 us 的 URL 自动 404。
    另外命名有趣在何处呢?比如 Souhu Video > souhushipi。张朝阳那么给你们纠正,搜狗还 sougou,搜狐还 souhu ?另外很多时候官方名字就很混乱,比如 weixin.qq.com ,英文 WeChat,项目名 MicroMsg。
    还有云音乐,现在可以不和网易这个词绑定出现,但是我刚才打 yunyinyue,告诉我 404。
    所以我想说的是万物皆 get 一点也不现实,光靠一节 RESTful 内容存在很多歧义,另外真心希望有规范的编排....
    ETiV
        4
    ETiV  
       2018-08-03 04:52:04 +08:00
    macOS 有 brew cask install XXX ~
    LuvF
        5
    LuvF  
       2018-08-03 07:15:31 +08:00 via Android
    挺难的。。拿 Firefox 举例,Windows 上有 32 位和 64 位的,版本有 stable,enterprise,beta 和 nightly,语言就不说了,但是仅仅中文就也有国际版和国内版。。。。。
    Tink
        6
    Tink  
       2018-08-03 08:04:36 +08:00 via iPhone
    版本能区分吗?比如说非主流版本,另外这个是缓存到本地存储还是直接从官方服务器下载呢
    artandlol
        7
    artandlol  
       2018-08-03 08:16:01 +08:00
    http://mirrors.ustc.edu.cn/ 中科大的镜像站
    下面两个谷歌默认下载域名国内还没有相应的镜像站倒是可以搞搞
    gcr.io
    quay.io
    geekzu
        8
    geekzu  
       2018-08-03 09:19:58 +08:00 via Android
    域名真好…
    imhx233
        9
    imhx233  
    OP
       2018-08-03 09:25:47 +08:00
    @nciyuan 首先非常感谢您的回复。

    关于定义这方面,我其实不是太清楚您的意思。

    如果访问的平台不支持某个软件,比如如您所说在手机上访问 [vscode]( https://get.js.org/vscode), 则会有错误提示 ` alert("This app does not work on your device.");` ,您可以参见[这里]( https://raw.githubusercontent.com/hxco/Get/master/_posts/vscode/2018-7-15-vscode.md)。而没有用更美观的弹窗(错误提示)的原因只是希望让代码体积尽可能小。

    关于锁区,事实上在我早期做这个程序的 `1.0` 初始版本的时候,我是完全在墙外环境做的,所以并没有发现会 `404`,反而是最近几天才发现,还疑惑诶这些软件下架了吗……今天听你一说才明白了。

    关于搜狐视频那里,纯粹是初期 typo,谅解下~

    命名混乱那里,考虑到很多人会有不同的读法,目前仅仅使用 全名全拼 + 全拼简写 + 英文名成 三个方式创建 alias,另外我自己来说,我从来真的只会叫网易云音乐全称本身,并不会对别人说 “诶你用 QQ 音乐还是云音乐啊?”这样的话。

    这个项目肯定会持续维护,至少到软件支持的七七八八,然后本身也没什么错漏,才会停止积极的维护。

    非常感谢您的意见!也非常感谢关注我的项目~
    imhx233
        10
    imhx233  
    OP
       2018-08-03 09:26:52 +08:00
    @LuvF 是的,Firefox 是这个项目前五个被支持的软件之一,初期的想法没那么成熟,所以后期会针对所有含有 Beta 版本的软件再次适配。
    imhx233
        11
    imhx233  
    OP
       2018-08-03 09:27:31 +08:00
    @geekzu 其实域名不是我的,您可以到 [js.org](js.org) 看看~
    imhx233
        12
    imhx233  
    OP
       2018-08-03 09:27:51 +08:00
    诶回复不支持 markdown 的吗!!!!
    imhx233
        13
    imhx233  
    OP
       2018-08-03 09:28:50 +08:00
    @Tink 我很弱的……这个项目更是纯前端的项目,没有传统意义上的后端,所以也无法缓存。就算可以……以我那么点服务器还是算了。所以目前是获取官方源实现的。
    imhx233
        14
    imhx233  
    OP
       2018-08-03 09:30:10 +08:00
    @artandlol 这个项目其实并不只是简单的 Google Chrome 镜像什么的 ==,Google 默认下载域名国内绝大部分地方经过测试都可以正常访问,参见 https://get.js.org/googlechrome
    Lanke0
        15
    Lanke0  
       2018-08-03 09:41:27 +08:00
    感觉还行,挺不错
    imhx233
        16
    imhx233  
    OP
       2018-08-03 09:45:58 +08:00
    @Lanke0 谢谢
    coffeemayor
        17
    coffeemayor  
       2018-08-03 09:54:36 +08:00
    @imhx233 很棒的站 已经分享到我的站 嘿嘿 回复可见 给你推广一下

    http://share1223.com
    xxx749
        18
    xxx749  
       2018-08-03 09:57:02 +08:00 via Android
    已星,移动端打开文字会错位,望周知
    imhx233
        19
    imhx233  
    OP
       2018-08-03 10:01:43 +08:00
    @xxx749 是的,以后会优化移动端体验~目前是能用就行
    imhx233
        20
    imhx233  
    OP
       2018-08-03 10:02:18 +08:00
    @coffeemayor 谢谢你,记得注明下出处~
    coffeemayor
        21
    coffeemayor  
       2018-08-03 10:04:57 +08:00
    @imhx233 出处地址 写上了 (*^__^*) 嘻嘻
    boxove
        22
    boxove  
       2018-08-03 10:28:26 +08:00
    支持一下
    imhx233
        23
    imhx233  
    OP
       2018-08-03 10:29:11 +08:00
    @boxove 谢谢~如果喜欢的话可以给个 star | https://github.com/hxco/Get
    zn
        24
    zn  
       2018-08-03 10:43:48 +08:00
    我就想知道这域名怎么搞来的。
    imhx233
        25
    imhx233  
    OP
       2018-08-03 10:49:48 +08:00
    @zn 可以参考 https://js.org
    nciyuan
        26
    nciyuan  
       2018-08-03 11:08:54 +08:00 via Android   ❤️ 1
    @geekzu js.org 是开放免费的一个服务
    @imhx233 另外如果有这种下载服务,建议使用 RESTful 的命名方式,比如 get.js.org/firefox/x64/stable。为获得更佳体验,以多数服从基础,假设简单粗暴的 GET /firefox HTTP/1.1 https://get.js.org ,那么默认就是以稳定版为基础,以 x86 兼容性为佳,以网页 accept language 的 zh-cn 和 UA 中的内容就提供 32 位中文稳定版 Firefox。
    但是人工添加真的感觉补星,首先是上面的不同用户对于产品名理解不同,再一多了这真的是噩梦...
    另外锁区的不仅仅是苹果,谷歌也一样,比如中文简体环境在部分情况下搜不到谷歌注音输入法。
    另外是 @Tink 的观点作者是不是还得考虑一下?
    有些厂商会给一个中转链接,下到最新版本,比如 360 就一直是 down.360safe.com/inst.exe ,网易云音乐有 music.163.com/api/pc/download/latest,但是还有很多的没有呢
    imhx233
        27
    imhx233  
    OP
       2018-08-03 11:26:16 +08:00
    @nciyuan 其实这个项目可能更多的针对普通人一些,Beta Stable 这些版本词汇后续会加上去,32 还是 34 位的问题可以通过 js 自动识别,这个不需要。

    网页是因为采用了我个人比较喜欢的英文字体,所以直接全英文展示,后续不打算做多语言之类的。

    人工添加应该是唯一的办法了呀,难道还自动爬取嘛?

    @Tink 的回复我已经回复了,后续会增加。

    如果没有所谓的“永久链接”,我们的协作者里面有人想出了挺好的办法,就是使用 python 爬取 html 网页,然后使用 Travis CI 自动 commit 到 master,这样一来下载链接也就会是永远最新了(同步官网)
    hg
        28
    hg  
       2018-08-03 12:36:32 +08:00
    基于 useragent 的短网址?
    imhx233
        29
    imhx233  
    OP
       2018-08-03 13:30:04 +08:00
    @hg 抱歉,并不是。您可以阅读文档: https://github.com/hxco/Get/blob/master/README-CN.md
    youngxu
        30
    youngxu  
       2018-08-03 13:37:14 +08:00 via Android
    点开这个应用列表链接会跳转到 github,看不了应用列表
    https://get.js.org/apps
    orangeade
        31
    orangeade  
       2018-08-03 13:40:18 +08:00 via Android
    360 的源下 Chrome ……算了
    imhx233
        32
    imhx233  
    OP
       2018-08-03 13:41:05 +08:00
    @orangeade 国内并没有别的源噢
    imhx233
        33
    imhx233  
    OP
       2018-08-03 13:43:21 +08:00
    @youngxu 啊以前的代码忘记删了……现在去删(以前没有做适配,手机端访问是重定向到 GitHub 的)
    netyjq
        34
    netyjq  
       2018-08-03 15:21:55 +08:00
    已 start
    imhx233
        35
    imhx233  
    OP
       2018-08-03 18:55:51 +08:00
    @netyjq 感谢支持~
    sobigfish
        36
    sobigfish  
       2018-08-03 18:59:08 +08:00
    建议在页面里也显示下载地址, 更能让用户放心
    imhx233
        37
    imhx233  
    OP
       2018-08-03 19:03:00 +08:00
    @sobigfish 有时候下载地址会很长,这样排版是个问题

    还真没有什么软件下载页面把链接也显示出来的。
    sobigfish
        38
    sobigfish  
       2018-08-03 19:07:17 +08:00
    有些会提示如果下载失败 提供链接手动下载
    imhx233
        39
    imhx233  
    OP
       2018-08-03 20:21:27 +08:00
    @sobigfish 我的方案是让用户直接升级浏览器,毕竟现代浏览器不会不正常
    eeeeeee
        40
    eeeeeee  
       2018-08-03 21:33:33 +08:00
    Star 举报一气呵成 :doge
    imhx233
        41
    imhx233  
    OP
       2018-08-03 22:54:12 +08:00
    @eeeeeee ???举报是什么鬼 qwq
    chemzqm
        42
    chemzqm  
       2018-08-04 00:44:20 +08:00
    https://get.js.org/vim 404 可以差评吗
    huson
        43
    huson  
       2018-08-04 01:28:47 +08:00
    楼主这个很赞 解决了很多痛点 特别是很多小白朋友都去百度下载的 第三方重新打包的非官方软件,有这个就很方便了
    imhx233
        44
    imhx233  
    OP
       2018-08-04 08:59:54 +08:00 via iPhone
    @chemzqm 可以可以!(稍后我看看....
    imhx233
        45
    imhx233  
    OP
       2018-08-04 09:00:17 +08:00 via iPhone
    @huson 谢谢 这也是我的想法之一
    xitiecheng
        46
    xitiecheng  
       2018-08-04 09:23:52 +08:00
    后面支持的软件多了,是不是得加个搜索的功能
    omph
        47
    omph  
       2018-08-04 12:52:51 +08:00
    有点类似 linux 的 yum,不过用的 b/s 模式,有乐趣
    imhx233
        48
    imhx233  
    OP
       2018-08-04 13:41:27 +08:00 via iPhone
    @xitiecheng 可能会添加 但是目前已经可以按照字母顺序排序了,请见 https://get.js.org/apps
    imhx233
        49
    imhx233  
    OP
       2018-08-04 13:41:44 +08:00 via iPhone
    @omph 谢谢您的关注呢~
    Hubs
        50
    Hubs  
       2018-08-04 15:54:59 +08:00
    如果能抓取下载链接的话,那么下载 APP 的历史版本应该不难实现!
    那么如果有弹出二级菜单选择下载 APP 的历史版本就更完美了!
    imhx233
        51
    imhx233  
    OP
       2018-08-04 21:26:26 +08:00 via iPhone
    @Hubs 这个的设计初衷在于 get latest (最新版本)而不是一个工具集合,可以下载历史版本什么的

    再说了,历史版本很多软件几乎找不出来,实现难度比较大
    Shazoo
        52
    Shazoo  
       2018-08-05 09:37:46 +08:00
    霸气十足……

    Your download should begin automatically. If it doesn't, upgrade your browser.
    imhx233
        53
    imhx233  
    OP
       2018-08-05 12:14:37 +08:00
    @chemzqm VIM 目前已经支持! https://get.js.org/vim
    imhx233
        54
    imhx233  
    OP
       2018-08-05 12:15:14 +08:00
    @Shazoo 前半段是抄 Firefox 的,后半段不想给直链就让用户升级浏览器了
    nicoljiang
        55
    nicoljiang  
       2018-08-07 14:57:15 +08:00
    楼主能不能加一个私人的联系方式。
    最近在思考的东西和你做的刚好类似~希望能碰撞一些想法。
    顺便也想公益支持一下这个项目,

    包括但不限于:
    1、x.soft.org 域名的永久免费使用权(虽然你已经开源,我可以自己部署一套,但还是希望能合作);
    2、一台不高于 2C4G 的 VPS ( Linode 或 Google Cloud )
    3、包括目前优化的很完善的全球化 Anycast 内容加速架构。这套架构对动态内容的加速不仅比 CloudFlare 商业版的 RailGun 还要好,并且对国内的支持也是很优秀的( via Google );
    4、如果不想要使用我的域名,那希望保留一个赞助方的链接。

    我的考虑和所图:
    1、为 soft.org 项目养养域名;
    2、结交朋友,或许能找到一起做 soft.org 的人;
    3、这个项目有点意思,消耗的资源也不是很大,希望有一套。

    我的私人微信:bmljb2xqaWFuZw==。希望能一起交流很多的想法。
    imhx233
        56
    imhx233  
    OP
       2018-08-07 15:46:58 +08:00
    @nicoljiang 首先非常感谢您的支持合作!

    get.js.org 这个域名属于 js.org 的主人,也就是说不是我的。这个域名下的所有子域名仅仅可以被通过 GitHub Pages (可以选择加上 Cloudflare 商业版)托管,目前 get.js.org 就是这种方案。

    其次,您的想法和我不谋而合。非常感谢您能够赞助云资源。域名方面,我想使用 get.soft.org ,是否可以?

    最后,如果我们能够成功合作,毋庸置疑,您的赞助信息一定会被展示在项目相关的地方~
    imhx233
        57
    imhx233  
    OP
       2018-08-07 15:54:37 +08:00
    @nicoljiang 另外的话,您的微信我无法加上,找不到此用户。

    您可以通过搜索 QQ 号 1031092041 找到我。我的 Email 是 [email protected]
    nicoljiang
        58
    nicoljiang  
       2018-08-07 16:10:10 +08:00
    已加。
    imhx233
        59
    imhx233  
    OP
       2018-08-07 16:36:19 +08:00
    @nicoljiang 抱歉我把我 QQ 号码打错了…… 是 1031092401 非常抱歉……
    nicoljiang
        60
    nicoljiang  
       2018-08-07 16:49:30 +08:00
    @imhx233 已加。我的微信是 base64
    leoleoasd
        61
    leoleoasd  
       2018-08-08 20:00:07 +08:00
    建议,比如:
    get.js.org/xxx
    自动到 github 爬取所有名字是 xxx 的项目,按照 star 排序,取 star 数量大于某熟知的项目,筛选出 releases 中对应平台的最新版二进制包,如果同时存在多个项目,提供选项给用户
    leoleoasd
        62
    leoleoasd  
       2018-08-08 20:01:41 +08:00
    如果根据名字爬取 github 的 repo 比较困难,可以考虑新建一个仓库,内部是软件名字-仓库地址的 mappings,通过 pull request 维护这个列表
    imhx233
        63
    imhx233  
    OP
       2018-08-08 21:30:44 +08:00
    @leoleoasd 如果有需求增加支持的 app,您可以给 https://github.com/hxco/Get 提交 PR。像 GitHub 按照 Stars 数量排序这个感觉不合理,毕竟一个项目不是 Star 越多月优秀的。并且本项目的思想在于 “获取最新”,虽然对 GitHub 的开源程序也有一定的支持,但是大部分支持的还是日常使用的、并非开源的软件。
    leoleoasd
        64
    leoleoasd  
       2018-08-09 18:50:23 +08:00
    @imhx233 我的意思是 数据存在一个新的仓库里,json 格式(比如),网站在被访问的时候实时读取仓库中最新的 json。数据和代码放到同一个仓库中,就会有很大的代码重复(比如您判断客户端的代码)
    imhx233
        65
    imhx233  
    OP
       2018-08-09 21:26:47 +08:00
    @leoleoasd 这是一个非常好的想法。如果您了解如何实现,请给代码仓库提交 PR。我们感激不尽。
    leoleoasd
        66
    leoleoasd  
       2018-08-09 22:27:41 +08:00
    @imhx233 需要伪静态,貌似你的部署方式做不到
    不明白这样一个项目为什么要用 jetyll 做
    如果服务器支持伪静态的话 我可以重构一下 来做到我提到的效果
    大致:
    无论访问什么 url,xshelll 也好,zsh 也好,只返回同一个 js
    js 内容: 获取 url 末尾的软件名称,链接 github api 读取下载链接,下载
    leoleoasd
        67
    leoleoasd  
       2018-08-09 22:32:11 +08:00
    @imhx233 查了查 github pages 支持做到我需要的效果
    使用它提供的自定义 404.html 功能,当访问不存在的路径时会打开自定义的 404.html 可以在这个 html 中嵌入 js 来做到我所需要的效果
    参见: http://lea.verou.me/2016/11/url-rewriting-with-github-pages/
    imhx233
        68
    imhx233  
    OP
       2018-08-09 22:42:42 +08:00
    @leoleoasd 这个会覆盖非开源的软件,建议开一个目录,例如 https://get.js.org/github/xxx 这样
    leoleoasd
        69
    leoleoasd  
       2018-08-10 18:50:52 +08:00
    @imhx233 还是没明白我的意思。。。
    你现在的所有软件全是以文章的形式存储的
    每一个软件对应一个 js
    我的意思是
    把所有数据全部放到 json 里
    比如
    atom:{}
    leoleoasd
        70
    leoleoasd  
       2018-08-10 18:51:52 +08:00
    @imhx233 还是没明白我的意思。。。
    你现在的所有软件全是以文章的形式存储的
    每一个软件对应一个 js
    我的意思是
    把所有数据全部放到 json 里
    比如
    atom:{
    ‘ macos ’:'https://atom.io/download/mac',
    ‘ windows ’:"https://atom.io/download/windows_x64"
    }
    程序判断 ua 后 读取 json 里的配置地址
    这样维护起来方便
    也方便别人贡献
    imhx233
        71
    imhx233  
    OP
       2018-08-10 19:09:00 +08:00
    @leoleoasd 明白了,(因为您之前提到过适配全 GitHub 的 repo,根据 star 排名什么的)。这涉及到比较大的架构修改,目前我的能力不足以做到。
    leoleoasd
        72
    leoleoasd  
       2018-08-10 19:10:55 +08:00
    @imhx233 写起来其实不麻烦,就是要全重构。。
    别人写的话就没有你这么好的域名了 2333
    imhx233
        73
    imhx233  
    OP
       2018-08-11 17:06:21 +08:00
    @leoleoasd 好的!
    jemyzhang
        74
    jemyzhang  
       2018-08-11 19:39:24 +08:00
    https://get.js.org/chrome ubuntu 自动下载了 exe...
    imhx233
        75
    imhx233  
    OP
       2018-08-12 00:59:02 +08:00
    @jemyzhang 哈哈,目前不打算支持任何 Linux 系统耶!(因为目的是方便个人使用~能用 Linux 的都是大佬啦!)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2792 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 02:14 · PVG 10:14 · LAX 18:14 · JFK 21:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.