質問

Mecanizeを使用してRubyスクリプトを作成して、多数の画像をMediawikiにアップロードしてバッチを作成しようとしています。スクリプトはエラーなしで実行されますが、機械化でマルチパートフォームを処理する方法に何か問題があると思います。コードの最後にある結果変数は、成功または失敗の兆候を与えません。すべての値が入力されたすべての値を表示するだけで、wpdestfileはdezzimage.pngなどです。 end.submitは何もしないようです。

以下は、単一のファイルをアップロードするための完全なコードです。いくつかの変数が機能するために埋める必要があります。

require 'rubygems'
require 'mechanize'
require 'nokogiri'

loginName = ""
loginPassword = ""
wikiUploadPage = "http://en.wikipedia.org/wiki/Special:Upload"
wikiLoginPage = "http://en.wikipedia.org/wiki/Special:UserLogin"
pathToImage = "/home/milo/image.png"

agent = Mechanize.new {|agent| agent.user_agent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.4) Gecko/20100513 Firefox/3.6.4" }
agent.pre_connect_hooks << lambda { |params| params[:request]['Connection'] = 'keep-alive' }
agent.follow_meta_refresh = true
agent.get(wikiLoginPage) do |page|
    login_result = page.form_with(:method => /POST/) do |form|
        form.wpName = loginName
        form.wpPassword = loginPassword
    end.submit
end

uploadPage = agent.get(wikiUploadPage)

result = uploadPage.form_with(:method => /POST/) do |form|
    form.file_uploads.first.file_name = pathToImage
    form.wpDestFile = "DezzImage.png"
    form.wpUploadDescription = "DezzImage.png"
end.submit
役に立ちましたか?

解決

私たちは他の場所でこれを解決しましたが、問題はMediawikiインストールの誤解のように思われました。設定:

form.checkbox_with(:name => "wpIgnoreWarning").check

フォームの提出により、この問題に対処しているようです。

他のヒント

アップロードのためにページを提出する投稿パラメーターを実際に設定していないようです。このようなことを試してみてください:

result = uploadPage.form_with(:method => /POST/) do |form|
    form.file_uploads.first.file_name = pathToImage
    form.wpDestFile = "DezzImage.png"
    form.wpUploadDescription = "DezzImage.png"
    form.wpUpload = True
end.submit

私も同じ問題を抱えてる。

ソースコードを表示した後、ソリューションを見つけました。

result = uploadPage.form_with(:method => /POST/) do |form|
    form.file_uploads.first.file_name = pathToImage
    form.wpDestFile = "DezzImage.png"
    form.wpUploadDescription = "DezzImage.png"
    form.checkbox_with(:name => "wpIgnoreWarning").check
end.click_button
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top