Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

ミクシィアプリをカテゴリ申請してみたけど

先日作ったサンシャイン牧場用アプリを早速カテゴリ申請してみたんですが、あっさり却下されてしまいました。返事来るの早かったなぁ、さすがミクシィ。ベ○ターとは大違い。あ、正確には却下じゃないんですけど、「カテゴリ申請には、権利者様の許諾が必要」と言われてしまったのでムリポですね。

で改めて自分のアプリを見直して、ホームやプロフィールビューでの動作がない、マイミクとの繋がり機能がない、などなど、単純に完成度が低いのでまぁいっかと思ったわけです。べ、べつにカテゴリ登録して欲しかったわけじゃないんだからね(←ツンデレ

というかそもそも、カテゴリ申請した一番の理由は、開発中になっているとアプリの利用承認を手作業でやらないといけないってことです。これってめっちゃたいへんで、申請して待っている人がいるかと思うと、気になって気になって夜も眠れません。

てわけで強引にミクシィアプリ自動承認スクリプトruby で書いてみました。今はこいつ↓を5分おきに cron でまわしてますので、多い夜も安心です。ミクシィアプリ開発者の皆様、どうぞご利用ください。

#! /usr/bin/env ruby
# -*- coding: utf-8 -*-
# 
# Mixi auto accept appli-join-request
# 
# * for use
# sudo gem install mechanize
# sudo gem install pit

require 'logger'
require 'kconv'
require 'rubygems'
require 'mechanize'
require 'pit'

class Mixi
  def initialize
    @agent = WWW::Mechanize.new
    @agent.user_agent_alias = 'Windows IE 7'
    @agent.log = Logger.new($stdout)
    @agent.log.level = Logger::INFO
    @agent.redirect_ok = true
    @agent.max_history = 1
  end
  
  def login
    config = Pit.get("mixi.jp", :require => { 
        "username" => "your email in mixi",
        "password" => "your password in mixi"
      })
    @agent.log.info "logging...#{config['username']}"
    page = get_page('http://mixi.jp/')
    form = page.forms[0]
    form.field_with(:name => 'email').value = config['username']
    form.field_with(:name => 'password').value = config['password']
    form.field_with(:name => 'next_url').value = '/home.pl'
    page = @agent.submit(form, form.buttons.first)
    sleep 5
    self
  end
  
  def get_page(uri, reffer=nil)
    @agent.get(uri, reffer)
  rescue TimeoutError
    @agent.log.warn 'Connection timeout.'; nil
  rescue WWW::Mechanize::ResponseCodeError => e
    @agent.log.warn "#{e.message} #{uri}"; nil
  else
    sleep 3 * rand(10)
    @agent.page
  end
  
  def accept_appli_join_request
    page = get_page("http://mixi.jp/list_appli_join_request.pl")
    page.links.each do |link|
      if /^accept_appli_join_request.pl\?appli_id=/ =~ link.href
        @agent.log.info "accepting...#{link.href}"
        page = @agent.click(link)
        sleep 3 * rand(10)
      end
    end
  end
end

if $0 == __FILE__
  m = Mixi.new()
  m.login.accept_appli_join_request
end

あーぁ、ミクシィアプリを ruby で作れたらいいのになぁ、、、