ویکیپیڈیا سے متعلق معلومات حاصل کرنے کے دو طریقے ہیں:
درج ذیل آموختار پہلا طریقہ یعنی ٹول سرور کے ذریعہ معطیات حاصل کرنے کے متعلق ہے۔ دوسرے طریقہ یعنی میڈیاویکی سے معطیات حاصل کرنے کے طریقہ کار کے لیے ملاحظہ فرمائیں آموختار برائے استخراج شماریات از میڈیاویکی۔
اس آموختار کو پڑھنے سے قبل روبہ کو شروع کرنے اور اسے ٹول سرور پر چلانے کے لیے ذیل کے دو صفحات ملاحظہ فرمالیں:
ویکیمیڈیا ٹول سرور (انگریزی: wikimedia toolserver) ایک مجموعۂ معیلات ہے جسے ویکیمیڈیا منصوبوں کے لیے لکھے گئے آلات تک مشترکہ رسائی کے لیے استعمال کیا جاتا ہے۔
ٹول سرور قاعدہ معطیات مائی ایس کیو ایل (MySql) مصنع لطیف پر مبنی ہے، اس لیے ٹول سرور کے معطیات سے استفادہ کے لیے MySql زبان اور ٹول سرور پر کھاتہ ہونا لازمی ہے۔
جدول ہائے ٹول سرور کی معلومات کے لیے اس ربط اور اس ربط کو ملاحظہ فرمائیں۔
تطبیقی ترمیز کے لیے اس ربط کو ملاحظہ فرمائیں۔
مائی ایس کیو ایل کی ترمیزوں کی تعداد اور ٹول سرور اوامر (commands) سے واقفیت حاصل کرنے کے لیے یہ ربط ملاحظہ فرمائیں۔
ترمیز 1: فہرست 500 مضامین جن میں لفظ کتاب موجود ہے، زمرہ کے لیے page_namespace = 14 تحریر کریں۔
SELECT page_title FROM page WHERE page_namespace = 0 AND page_is_redirect = 0 AND page_title LIKE "%_کتاب_%" LIMIT 500;
ترمیز 2: رجوع مکررات جن میں درون ویکی روابط موجود ہیں۔
SELECT /*SLOW OK */ page_title FROM page JOIN langlinks ON page_id = ll_from WHERE page_namespace = 0 AND page_is_redirect = 1 GROUP BY page_title ORDER BY count(ll_from) DESC;
ترمیز 3: ترامیم صارف بلحاظ تاریخ۔
SELECT /*SLOW OK */
DATE(CONCAT(YEAR(rev_timestamp),"-",MONTH(rev_timestamp),"-",DAY(rev_timestamp))) AS DAY,
COUNT(rev_timestamp) AS revisions
FROM revision
WHERE rev_user_text = 'محمد شعیب'
GROUP BY DAY;
ترمیز 4: تخلیق شدہ مضامین از صارف بلحاظ تاریخ۔
select /*SLOW OK */ page_title, DATE(CONCAT(YEAR(rev_timestamp),"-",MONTH(rev_timestamp),"-",DAY(rev_timestamp))) AS DAY
from revision join page on rev_page=page_id where page_namespace=0 and rev_user_text='محمد شعیب' and rev_parent_id=0 and page.page_is_redirect = 0
GROUP BY DAY;
order by rev_timestamp;
ترمیز 5: استخراج ہم نام زمرہ جات۔
SELECT DISTINCT /*SLOW OK */ page_title FROM categorylinks JOIN page where cl_to = page_title and page_is_redirect = 0;
ترمیز 5: مساوی زمرہ جات کے لیے (اس امر کے ذریعہ:
)
SELECT /* SLOW_OK */ cl_to
FROM categorylinks
WHERE
cl_from IN
(SELECT DISTINCT ll_from
FROM langlinks
WHERE ll_lang = "ur" )
AND
cl_to NOT IN
(SELECT DISTINCT page_title
FROM langlinks LEFT JOIN page
ON page_id = ll_from
WHERE ll_lang = "ur"
AND page_namespace = 14)
GROUP BY cl_to;
ترمیز 6: استخراج نام تصاویر جو انبار عام اور اردو ویکیپیڈیا دونوں جگہ موجود ہیں اور انہیں اردو ویکی سے حذف کیا جانا چاہیے۔
SELECT /*SLOW OK */ CONCAT('* [[:commons:Image:', db1.img_name, ']] = [[:ur:Image:', db2.img_name, ']] (hash: ', db1.img_sha1, ')') AS collision
FROM commonswiki_p.image db1
JOIN urwiki_p.image db2 ON db1.img_sha1 = db2.img_sha1 WHERE db1.img_sha1 <> '';
ٹول سرور میں کھاتہ بننے کے بعد ٹول سرور میں ہی آپ کے صارف نام کے folder میں ایک
.my.cnf
نامی ملف موجود ہوگی، اس ملف میں ٹول سرور میں آپ کے کھاتہ کا نام اور کلمہ شناخت درج ہوگا، ان دونوں کو user-config نامی ملف میں درج ذیل طریقہ سے رکھ دیں:
console_encoding = 'utf-8'
db_username = "اپنا ٹول سرور پر صارف نام درج کریں"
db_password = "کلمہ شناخت جو my.cnf نامی ملف میں موجود ہے "
یہ ترمیز ٹول سرور سے معطیات حاصل کرنے کے لیے ضروری ہے، اس ترمیز کے درج کرنے کے بعد ہی روبہ معطیات نکال سکے گا۔
#!/usr/bin/python
# -*- coding: utf-8 -*-
import catlib ,pagegenerators
import wikipedia,urllib,gzip,codecs,re
import MySQLdb as mysqldb
import config
site = wikipedia.getSite("ur")
query = open("tusn.sql").read()#---نام ایس کیو ایل ملف
#query = "SELECT page_title,page_id FROM page LIMIT 10"
wikipedia.output(u'Executing query:\n%s' % query)
conn = mysqldb.connect("urwiki-p.db.toolserver.org", db = site.dbName(),
user = config.db_username,
passwd = config.db_password)
cursor = conn.cursor()
query = query.encode(site.encoding())
cursor.execute(query)
results = cursor.fetchall()
#!/usr/bin/python
# -*- coding: utf-8 -*-
import catlib ,pagegenerators
import wikipedia,urllib,gzip,codecs,re
import MySQLdb as mysqldb
import config
pagetop=u"'''یومیہ بذریعہ روبالہ بتاریخ''''': ~~~~~''\n\n"
pagetop+=u'\n{| class="wikitable sortable"\n'
pagetop+=u'!شمار!!صفحہ!!ترمیز صفحہ\n|-'
pagedown=u'\n|}\n[[زمرہ:ویکیپیڈیا]]
[[زمرہ:جانچ]]
[[زمرہ:خصوصیات ویکیپیڈیا]]
'
adress=u"ویکیپیڈیا:ریتخانہ"
message=u"روبالہ:جانچ"
count=0
line_items=' '
#---------------------------------------------- sql part--------------
site = wikipedia.getSite("ur")
#query = open("file name").read()#--you can add you sql name
query = "SELECT page_title,page_id FROM page LIMIT 10"
wikipedia.output(u'Executing query:\n%s' % query)
conn = mysqldb.connect("urwiki-p.db.toolserver.org", db = site.dbName(),
user = config.db_username,
passwd = config.db_password)
cursor = conn.cursor()
query = query.encode(site.encoding())
cursor.execute(query)
results = cursor.fetchall()
#---------------------------------------------- end of sql part---------
for row in results:
count+=1
for i in range(0,len(row)):
item=unicode(str(row[i]).strip(),'UTF-8')
line_items+=u'{{subst:formatnum:'+item+u'}}||'
line=line_items.strip()
text+= u'\n|{{subst:formatnum:' +str(count)+u'}}||'+ line+u'\n|-'
text=pagetop+text+pagedown
page = wikipedia.Page(site,adress)
page.put(text,message)