利用者:Tatsujin28/ShortPages

Wikipedia:短いページを作るためのシェルスクリプトです。ダンプデータをインポートした後に、以下のスクリプトを順次実行します。実行の際には、すべてのスクリプトの文字コードを mysql のロケール設定と合わせないと、うまく動かないかもしれません。

shortpagesquery.sh[編集]

#!/bin/sh

# shortpagesquery.sh
# これは[[Wikipedia:短いページ]]を作成するためのシェルスクリプトです。
# MySQLの wikipedia データベースにインポートしたダンプデータから、ページサイズ別の
# 記事データファイルを作成します。このスクリプトとは別に、"under256bytes.sql"と
# "over256bytes.sql"の SQL スクリプトが必要です。

# python login.py

# 開始処理
echo '============================================================================='
echo '['${0##*/}'] START:' `date +"%Y/%m/%d %T"`
echo '============================================================================='
sleep 10
if [ -z ${1} ]; then
  echo '引数1: ダンプデータ日付がありません。'
  exit 1
fi
dumpymd=${1}'dumpより作成'
rm *.out        # テンポラリファイルの削除
rm under*.txt   # 記事データファイルの削除

echo '256バイトまでの記事を作成中...'
# pagefromfile.pyでアップロードできる記事データファイルを作成
mysql --database=wikipedia < under256bytes.sql > b.out
cat b.out | sed -e 's/__HEADER/{{-start-}}\n'\'\'\''Wikipedia:短いページ\/256'\'\'\''\n'${dumpymd}'\n\n256バイト未満で[[:Category:曖昧さ回避]]に属さず、リダイレクトでなく、記事名が「\/履歴」で終わらないページ\n/g' > under256bytes.txt 
echo '{{-stop-}}' >> under256bytes.txt

queryShortPages() {
  min_value=$1
  max_value=$2

  echo ${min_value} - ${max_value}'バイトまでの記事を作成中...'

  # pagefromfile.pyでアップロードできる記事データファイルを作成
  {
    cat over256bytes.sql | sed -e 's/__SET_PARAM/SET @min_value='${min_value}',@max_value='${max_value}';/g' > a.out
    mysql --database=wikipedia < a.out > b.out
    cat b.out | sed -e 's/__HEADER/{{-start-}}\n'\'\'\''Wikipedia:短いページ\/'${max_value}\'\'\''\n'${dumpymd}'\n\n'${min_value}'バイト以上'${max_value}'バイト未満で[[:Category:曖昧さ回避]]に属さず、リダイレクトでなく、記事名が「\/履歴」で終わらないページ\n/g' > under${max_value}bytes.txt 
  }
  echo '{{-stop-}}' >> under${max_value}bytes.txt
}

# 256バイト以上384バイト未満の記事データファイルを順次作成していく
queryShortPages 256 384
queryShortPages 384 448
queryShortPages 448 512
queryShortPages 512 544
queryShortPages 544 576
queryShortPages 576 608
queryShortPages 608 640
queryShortPages 640 672
queryShortPages 672 704
queryShortPages 704 736
queryShortPages 736 768
queryShortPages 768 800
queryShortPages 800 832
queryShortPages 832 864
queryShortPages 864 896
queryShortPages 896 928
queryShortPages 928 960
queryShortPages 960 992
queryShortPages 992 1024
queryShortPages 1024 1056
queryShortPages 1056 1088
queryShortPages 1088 1120
queryShortPages 1120 1152
queryShortPages 1152 1184
queryShortPages 1184 1216
queryShortPages 1216 1248

echo '============================================================================='
echo '['${0##*/}'] END:' `date +"%Y/%m/%d %T"`
echo '============================================================================='

exit;

under256bytes.sql[編集]

SET @min_value=28,@max_value=256;
SELECT CONCAT('* [[',page.page_title,']]') AS "__HEADER" FROM page,revision,text WHERE
( page.page_namespace=0
AND page.page_is_redirect=0
AND page.page_len > @min_value
AND page.page_len < @max_value
AND page.page_latest = revision.rev_id
AND revision.rev_id = text.old_id
AND page.page_title NOT LIKE "%/履歴"
AND text.old_text NOT LIKE "%imai%"
AND text.old_text NOT LIKE "%akujo%"
AND text.old_text NOT LIKE "%曖昧さ回避%"
AND text.old_text NOT LIKE "%保護性急%"
) OR ( page.page_namespace=0
AND page.page_is_redirect=0
AND page.page_len < @min_value
AND page.page_latest = revision.rev_id
AND revision.rev_id = text.old_id
AND page.page_title NOT LIKE "%/履歴"
AND text.old_text NOT LIKE "%imai%"
AND text.old_text NOT LIKE "%akujo%"
AND text.old_text NOT LIKE "%eletedpage%"
AND text.old_text NOT LIKE "%isambig%"
AND text.old_text NOT LIKE "%dab%"
AND text.old_text NOT LIKE "%Dab%"
AND text.old_text NOT LIKE "%曖昧さ回避%"
AND text.old_text NOT LIKE "%保護性急%"
)
ORDER BY page.page_title;

over256bytes.sql[編集]

__SET_PARAM
SELECT CONCAT('* [[',page.page_title,']]') AS "__HEADER" FROM page,revision,text WHERE
page.page_namespace=0
AND page.page_is_redirect=0
AND page.page_len >= @min_value
AND page.page_len < @max_value
AND page.page_latest = revision.rev_id
AND page.page_title NOT LIKE "%/履歴"
AND revision.rev_id = text.old_id
AND text.old_text NOT LIKE "%imai%"
AND text.old_text NOT LIKE "%akujo%"
AND text.old_text NOT LIKE "%isambig%"
AND text.old_text NOT LIKE "%dab%"
AND text.old_text NOT LIKE "%Dab%"
AND text.old_text NOT LIKE "%曖昧さ回避%"
ORDER BY page.page_title;

shortpagesupload.sh[編集]

pywikipediabotのディレクトリで動かすシェルスクリプトです。

#!/bin/sh

# shortpagesupload.sh
# これは[[Wikipedia:短いページ]]を作成するためのシェルスクリプトです。
# shortpagesquery.shで作成した記事データファイルを、ウィキペディア日本語版に
# 上書き投稿します。

# python login.py

# 開始処理
echo '============================================================================='
echo '['${0##*/}'] START:' `date +"%Y/%m/%d %T"`
echo '============================================================================='
sleep 10
if [ -z ${1} ]; then
  echo '引数1: ダンプデータ日付がありません。'
  exit 1
fi
summary=${1}'dumpから作成。'

uploadShortPages() {
max_value=$1
python pagefromfile.py -file:/home/tatsujin/jawp_shortpages/under${max_value}bytes.txt -summary:${summary} -force -notitle
}

uploadShortPages 256
uploadShortPages 384
uploadShortPages 448
uploadShortPages 512
uploadShortPages 544
uploadShortPages 576
uploadShortPages 608
uploadShortPages 640
uploadShortPages 672
uploadShortPages 704
uploadShortPages 736
uploadShortPages 768
uploadShortPages 800
uploadShortPages 832
uploadShortPages 864
uploadShortPages 896
uploadShortPages 928
uploadShortPages 960
uploadShortPages 992
uploadShortPages 1024
uploadShortPages 1056
uploadShortPages 1088
uploadShortPages 1120
uploadShortPages 1152
uploadShortPages 1184
uploadShortPages 1216
uploadShortPages 1248

echo '============================================================================='
echo '['${0##*/}'] END:' `date +"%Y/%m/%d %T"`
echo '============================================================================='

exit;