首个正式开源项目: HXCO Get - 万物皆可 Get - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
imhx233
V2EX    分享创造

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

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

    说实话其实起这么个标题有点名过其实了,其实这仅仅是一个开源的前端小应用(不过想不出有什么别的标题),能够帮助你在 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  
    PRO
       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 感谢支持~
    run2
        36
    run2  
       2018-08-03 18:59:08 +08:00
    建议在页面里也显示下载地址, 更能让用户放心
    imhx233
        37
    imhx233  
    OP
       2018-08-03 19:03:00 +08:00
    @sobigfish 有时候下载地址会很长,这样排版是个问题

    还真没有什么软件下载页面把链接也显示出来的。
    run2
        38
    run2  
       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  
    PRO
       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  
    PRO
       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  
    PRO
       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     Solana     941 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 22:31 PVG 06:31 LAX 15:31 JFK 18:31
    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