Wikipedia:データベース レポート/名前空間別のページ数/構成

nscounts.py

#!/usr/bin/env python2.5

# Copyright 2008 bjweeks、valhallasw、MZMcBride


# このプログラムはフリー ソフトウェアです。 # フリー ソフトウェア財団によって公開されている GNU 一般公衆利用許諾契約書の条項に基づいて、
再配布および/または変更することができます。 #ライセンスのバージョン 3、または
# (オプションで)後のバージョン。

# このプログラムは役立つことを期待して配布されています。
# ただし、いかなる保証もありません。
商品性や特定の目的への適合性について
の暗黙の保証もありません。詳細については、# GNU 一般公衆利用許諾書を参照してください。


#このプログラムと一緒に、GNU General Public License # のコピーを受け取っているはずです。そうでない場合は、<http://www.gnu.org/licenses/> を参照してください。

 日時の
インポートMySQLdbのインポート wikitoolsのインポート設定のインポート
 
 

report_title  = 設定rootpage  +  '名前空間別のページ数'

report_template  =  u '''
各 [[Wikipedia:namespace|]] のページ数。 <onlyinclude> %s </onlyinclude>時点のデータ

{| class="wikitable sortable" style="width:100 %% ; margin:auto;" 
|- style="white-space:nowrap;" 
!いいえ
。 ! ID 
!名前
!非リダイレクト
!リダイレクト
!合計
|- 
%s 
|- class="sortbottom" 
!コルスパン = "3" |合計
! style="text-align:left;" | %d 
! style="text-align:left;" | %d 
! style="text-align:left;" | %d 
|} 
'''

ウィキ = ウィキツールWiki (設定.apiurl ) Wiki 
ログイン(設定.ユーザー名設定.パスワード) 

conn  =  MySQLdb connect ( host = settings . host ,  db = settings . dbname ,  read_default_file = '~/.my.cnf' )
カーソル =  conn カーソル()
カーソル. execute ( '' 
/* nscounts.py SLOW_OK */ 
SELECT 
  page_namespace, 
  ns_name, 
  MAX(notredir), 
  MAX(redir) 
FROM ( 
  SELECT page.page_namespace, 
         IF( page_is_redirect, COUNT(page.page_namespace), 0 ) AS redir, 
         IF( page_is_redirect, 0, COUNT(page.page_namespace)) AS notredir 
  FROM page 
  GROUP BY page_is_redirect, page_namespace 
  ORDER BY page_namespace, page_is_redirect 
) AS pagetmp 
JOIN toolserver.namespace ON page_namespace = ns_id AND dbname = 'enwiki_p' 
GROUP BY page_namespace; 
'' ' )

i  =  1
出力 =  [] 
ns_count_tcol  =  0
カーソル内のns_count_r_tcol  =  0 
fetchall (): page_namespace = row [ 0 ] ns_name = row [ 1 ] if ns_name : ns_name = u ' %s ' % unicode ( ns_name , 'utf-8' ) else : ns_name = '(Article)' ns_count = row [ 2 ] if ns_count : ns_count = ns_count else : ns_count = '0' ns_count_r = row [ 3 ] if ns_count_r : ns_count_r = ns_count_r else : ns_count_r = ' 0 ' ns_count_trow = int ( ns_count ) + int ( ns_count_r ) ns_count_tcol += ns_count_r_tcol += ns_count_r ns_count_gtotal = ns_count_tcol + ns_count_r_tcol table_row = u '''| %d | %s | %s | %s | %s | %s |-''' % ( i , page_namespace , ns_name , ns_count , ns_count_r , ns_count_trow )出力追加( table_row ) i += 1   
      
      
     
             
    
          
      
     
          
    
          
      
     
          
    
          
        
      
      
        
      





       
    
      

カーソル実行( 'SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(rc_timestamp) FROM 最近の変更 ORDER BY rc_timestamp DESC LIMIT 1;' ) 
rep_lag  = カーソルfetchone ()[ 0 ] 
current_of  =  ( datetime . datetime . utcnow ()  -  datetime . timedelta (= rep_lag )) strftime ( '%H:%M, %d %B %Y (UTC)' )

レポート = ウィキツールページ( wiki  report_title ) 
report_text  =  report_template  %  ( current_of ,  ' \n ' . join ( output ),  ns_count_tcol ,  ns_count_r_tcol ,  ns_count_gtotal ) 
report_text  =  report_text エンコード( 'utf-8' )
レポートedit ( report_text  summary =設定. editsumm  bot = 1 )

カーソル閉じる()
接続近い()

クロンタブ

15 0 * * * python ~/scripts/database-reports/nscounts.py > /dev/null
「https://en.wikipedia.org/w/index.php?title=Wikipedia:Database_reports/Page_count_by_namespace/Configuration&oldid=1141500077」から取得