Rails 请教一个 rails 发微博的问题

Cifer_Y · 2014年09月03日 · 最后由 Cifer_Y 回复于 2014年09月04日 · 2895 次阅读

我有个 rails 应用,类似博客,可以发布文章 我希望在文章的 show 页面提供一个按钮,分享到微博,但是我看大多数都是分享这个文章的链接 我的需求是点击链接之后,提示用户登录微博,然后把文章内容作为微博内容,发布一条图片长微博, 已经纠结好几天了,也查了好多资料,不过还是没有头绪 希望广大 rubyChina 朋友们给我提个思路建议之类的

@flowerwrong 对对对,就是这样

casperjs(截图)+rmagick(组合图片)=长微博图片,据说截图上 36kr 用的是 wkhtmltoimage,微博 api 自己搞吧。

@flowerwrong 谢谢啊,我去折腾折腾

如果截图页面包含 font-face 之类的自定义字体的话,截图用 SlimerJS,PhantomJS 对自定义字体支持不怎么好

@aptx4869 嗯嗯,谢谢提醒

# Uses wkhtmltoimage to create Images using HTML
# https://github.com/csquared/IMGKit
gem 'imgkit', '~> 1.4.1'

#7 楼 @ruby_sky 支持 css 截图吗?不然我只需要 id 位 article 的部分怎么截图啊。

#8 楼 @flowerwrong imgkit 只是封装了 wkhtmltoimage。如果需要知道 wkhtmltoimage 的更多特性,点击:https://github.com/wkhtmltopdf/wkhtmltopdf

有一个小方法,是需要截图的,独立写一个 view partial,再去获取进行截图。

#9 楼 @ruby_sky 那还是 casperjs 比较方便一点,直接 css 选择器截图。再加上 rmagick 组合头部和底部,就解决了。

@shiningray 之前在博聆网做过微博发送的功能。楼主可以请教他。

@flowerwrong 我按照 casperjs 官网的 doc, 学会了怎么用选择器截图,但是过程是写个 js 脚本然后用 casperjs 命令去跑... 所以我想问问你,怎么在 rails 项目里截图呢?rmagick 组合头部底部我也学会了

#12 楼 @Cifer_Y 保存一篇文章后就可以截图。例如你要截图这篇文章的的内容部分 用 casperjs 访问这个 http://www.36kr.com/p/215068.html 然后加 css 选择器截图保存就可以了,命名可以是 article-id-xxx.png 等等,然后就用 rmagick 去读取图片,接着组合图片就可以了。

@flowerwrong 我现在就是不知道怎么在 rails 应用里跑,比如客户访问到我的文章 show 页面,想把某个文章转发到微博,然后他一点击分享到微博这个链接,就会进行截图,拼图,发微博这一系列动作,我现在是会用命令行跑 casperjs capture.js 去截图,然后能写一个 ruby 脚本调用 rmagick 去拼图,也能写一个 ruby 脚本去发微博, 就是不知道在我的 rails 项目里怎么完成这三个动作 在 controller 里?

#14 楼 @Cifer_Y 做成后台任务可以,controller 里面写也可以,也不必等到用户点击才去(例如 36kr 每篇文章都有),在保存一篇文章 create 方法里面写就可以,至于调用 casperjs capture.js,至少有六种 ruby 方式,有一种返回 true false 的我认为比较好,不太记得是哪个了。调用之后就是组合图片了,然后保存就可以了。36kr 应该是给每篇文章加了一个长微博的字段或者利用 article-文章 id 的命名方式来查找结果。图片通常就保存到 public/uploads/articles 下面就可以了。

@flowerwrong 谢谢你详细而耐心的讲解,我再折腾折腾去

需要 登录 后方可回复, 如果你还没有账号请 注册新账号