ruby/mecanize multipartフォームは、ファイルをmediawikiにアップロードします
-
26-09-2019 - |
質問
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
所属していません StackOverflow