使用 GeekTools 在 MacOS 桌面上显示需要 Mechanize 的 ruby 脚本的输出



我用机械化编写了一个工作 ruby 脚本来获取我的

  1. 堆栈溢出声誉和徽章
  2. 推特推文和关注者

并将输出打印到屏幕。

我首先在终端上运行此命令:

/Users/cyclotrojan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /Users/cyclotrojan/Desktop/Snippets/get_so_reputation_and_tw_followers.rb

输出在终端上正确显示如下:

StackOverflow :
    Reputation is : 406
    Total Badges  : 10
Twitter :
    Tweets     : 1,494
    Followers  : 137

现在,我希望使用GeekTools在桌面上显示脚本的输出,并将刷新时间设置为30分钟,因此它会一遍又一遍地运行脚本,从而更新我的统计信息。但是,当我将相同的命令粘贴到极客工具外壳上时,没有输出。

这是脚本:

文件 get_so_reputation_and_tw_followers.rb

require 'mechanize'
def get_stackoverflow_data
  url_so = 'https://stackoverflow.com/users/898346/cyclotrojan'
  begin
    so_page = Mechanize.new.get(url_so)
    so_reputation = so_page.link_with(:href => "/users/898346/cyclotrojan?tab=reputation").to_s
    so_badges = so_page.search(".badgecount").first
    print "StackOverflow :" + "n"
    print "    Reputation is : " + so_reputation + "n"
    print "    Total Badges  : " + so_badges + "n"
  rescue
    print "StackOverflow :" + "n"
    print "tReputation is : " + "NA" + "n"
    print "tTotal Badges  : " +  "NA" + "n"
  end
end

def get_twitter_data
  url_tw = 'https://twitter.com/cyclotrojan'
  begin
    tw_page =  Mechanize.new.get(url_tw)
    tw_tweets = tw_page.link_with( :href => "/" + url_tw.split("/").last).to_s.split(" ").first
    tw_followers = tw_page.link_with( :href => "/#!/" + url_tw.split("/").last + "/followers").to_s.split(" ").first
    print "Twitter :" + "n"
    print "tTweets     : " + tw_tweets + "n"
    print "tFollowers  : " + tw_followers + "n"
  rescue
    print "Twitter :" + "n"
    print "tTweets     : " + "NA" + "n"
    print "tFollowers  : " + "NA" + "n"
  end
end # end function

  get_stackoverflow_data()
  get_twitter_data()

但是,输出根本不显示在我的桌面上。我知道问题不在于检测红宝石,因为我使用另一个文件 test.rb 对其进行了测试。

文件测试.rb

puts "hello"

此命令将适用于GeekTool shell并正确显示hello:

/Users/cyclotrojan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /Users/cyclotrojan/Desktop/Snippets/test.rb;

极客工具外壳上的输出:你好

我做了一些调试,发现如果我删除该行需要"机械化"然后脚本正常运行,并且由于异常,将显示以下输出:

StackOverflow :
    Reputation is : NA
    Total Badges  : NA
Twitter :
    Tweets     : NA
    Followers  : NA

所以问题在于在脚本中包含机械化。请帮助我解决这个问题。哗啦啦!

这些问题没有帮助:如何在Geektool中运行Ruby脚本?,Ruby, Mac, Geektool 问题, 文件访问权限?

如果您没有尝试挽救错误,您将能够判断。看起来我们的老朋友ssl验证错误,所以试试这个:

@agent = Mechanize.new
@agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
tw_page = @agent.get url_tw

我应该补充一点,你可能想确保你了解OpenSSL::SSL::VERIFY_NONE

的后果。

这里还有一个提示:

tweets = tw_page.at('a[@data-element-term="tweet_stats"] strong').text rescue 'N/A'
followers = tw_page.at('a[@data-element-term="follower_stats"] strong').text rescue 'N/A'
puts "Twitter :" + "n"
puts "tTweets     : #{tweets}"
puts "tFollowers  : #{followers}"

相关内容

  • 没有找到相关文章