متفرق پائیتھون اسکرپٹ میں مدد درکار

محمداحمد

لائبریرین
پائتھون میں کسی کوڈ بلاک کی پہلی لائن کے بعد آنے والا باڈی بلاک ایک ٹیب (تقریباً چار اسپیس) کی حاشیہ بندی (indentation) پر ہوتا ہے۔ اسے indenting کہتے ہیں۔ دیگر پروگرامنگ زبانوں میں بلاک بنانے کے لئے عموماً کرلی بریکٹس استعمال ہوتے ہیں۔
 
PHP:
Page> ویکیپیڈیا:معزول/رائے شماری/حیدر (2(
Traceback (most recent call last):
  File "nazarsanji.py", line 21, in <module>
    page = pywikibot.Page(site, pageTitle)
  File "/home/tahir/myfolder/pywikipedia2/wikipedia.py", line 316, in __init__
    t = html2unicode(title)
  File "/home/tahir/myfolder/pywikipedia2/wikipedia.py", line 6266, in html2unicode
    result += text
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0: ordinal not in range(128)
 

محمداحمد

لائبریرین
PHP:
Page> ویکیپیڈیا:معزول/رائے شماری/حیدر (2(
Traceback (most recent call last):
  File "nazarsanji.py", line 21, in <module>
    page = pywikibot.Page(site, pageTitle)
  File "/home/tahir/myfolder/pywikipedia2/wikipedia.py", line 316, in __init__
    t = html2unicode(title)
  File "/home/tahir/myfolder/pywikipedia2/wikipedia.py", line 6266, in html2unicode
    result += text
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0: ordinal not in range(128)

یہ تو اینکوڈنگ کا کوئی مسئلہ لگ رہا ہے۔ محب علوی بھائی سے پوچھتے ہیں کہ یہ کیا معاملہ ہو سکتا ہے۔
 
یہ مسئلہ تو حل ہوگیا اب دوسرا مسئلہ ہے:
PHP:
Page> wp:testpage
Traceback (most recent call last):
  File "nazarsanji.py", line 208, in <module>
    main()
  File "nazarsanji.py", line 203, in main
    bot = BasicBot(generator, dry)
NameError: global name 'generator' is not defined
 

محمداحمد

لائبریرین
یہ مسئلہ تو حل ہوگیا اب دوسرا مسئلہ ہے:
PHP:
Page> wp:testpage
Traceback (most recent call last):
  File "nazarsanji.py", line 208, in <module>
    main()
  File "nazarsanji.py", line 203, in main
    bot = BasicBot(generator, dry)
NameError: global name 'generator' is not defined

یہاں لگتا ہے کہ فنکشن کال کرتے ہوئے generator کا ویری ایبل اسائن نہیں کیا گیا ہے۔ کیونکہ یہ ایک کال ایک فنکشن میں سے کی گئی ہے سو یا تو اس فنکشن میں ویری ایبل اسائن کیا جائے یا پھر مین کوڈ میں ایک گلوبل ویری ایبل اسائن کر دیا جائے۔
 
دیکھیے اس طرح کیا:
PHP:
def main():
    genFactory = pagegenerators.GeneratorFactory()
    gen = None

    gen = pagegenerators.PreloadingGenerator(gen)
    dry = False
    bot = BasicBot(gen, dry)
    bot.run()
 
اس سے یہ مسئلہ ہورہا ہے:
PHP:
Traceback (most recent call last):
  File "nazarsanji.py", line 212, in <module>
    main()
  File "nazarsanji.py", line 208, in main
    bot.run()
TypeError: run() takes exactly 2 arguments (1 given)
tahir@tools-login:~/myfolder/pywikipedia2$
 

محمداحمد

لائبریرین
دیکھیے اس طرح کیا:
PHP:
def main():
    genFactory = pagegenerators.GeneratorFactory()
    gen = None

    gen = pagegenerators.PreloadingGenerator(gen)
    dry = False
    bot = BasicBot(gen, dry)
    bot.run()

بظاہر تو ٹھیک لگ رہا ہے۔ ٹیسٹ رن کرکے دیکھیں۔

اب چونکہ میں ان فنکشنز سے واقف نہیں ہوں سو وثوق سے کچھ نہیں کہہ سکتا۔
 

محمداحمد

لائبریرین
PHP:
    bot.run()
TypeError: run() takes exactly 2 arguments (1 given)

اس کا کیا مطلب ہے؟

غالباً یہ bot.run بوٹ کے فنکشن کو کال کر رہا ہے اور فنکشن کال کے ساتھ اس میں دو آرگیومینٹ دیے جاتے ہیں۔ جبکہ آپ نے ایک دیا ہے۔ یہ کلاس شاید pywikibot والی فائل میں ہوگی۔
 
یہ تو اینکوڈنگ کا کوئی مسئلہ لگ رہا ہے۔ محب علوی بھائی سے پوچھتے ہیں کہ یہ کیا معاملہ ہو سکتا ہے۔

بالکل کوڈ پائتھون 3 سے پہلے والے ورژن میں لکھا گیا ہے اور یونیکوڈ کے بہت سے مسائل ورژن 3 میں ختم ہو چکے ہیں۔

اسی کوڈ کو معمولی تبدیلیوں سے ورژن 3 میں لکھا جا سکتا ہے مگر اس کے لیے شعیب انصاری کو ہمت کرنی پڑے گی کیونکہ وہ وکیپیڈیا سے بخوبی واقف ہیں اور کوڈ کو ٹیسٹ بھی کر سکتے ہیں۔

اس کے علاوہ کورسیرا پر شروع ہونے والا نیا پائتھون کورس شروع کر لیتے ہیں تاکہ باقاعدہ اور باضابطہ پائتھون سیکھ لی جائے اور میں اور محمداحمد بھی کورس کی دوبارہ تدوین اور بہتری کر سکیں گے۔
 

محمداحمد

لائبریرین
ایک دوسرے کوڈ میں یہ ایرر آرہا ہے، اس کا مطلب بتائیں گے؟
PHP:
Traceback (most recent call last):
  File "popularpages.py", line 136, in <module>
    for fa_title in list:
TypeError: 'type' object is not iterable
محمداحمد ، محب علوی

اس میں کام کی بات تو یہی ہے۔

کوڈ:
TypeError: 'type' object is not iterable

یعنی list اس قابل نہیں ہے کہ iteration ہو سکے۔

اگر آپ اس کا کوڈ فراہم کرسکیں تو شاید کچھ بات سمجھ آئے۔
 
PHP:
#!/usr/bin/python
# -*- coding: utf-8  -*-
#
# Reza(User:reza1615), 2014
#
# Distributed under the terms of the CC-BY-SA 3.0 .
import pagegenerators,re
import wikipedia,time
import codecs,query
import urllib2
import urlparse
from BeautifulSoup import BeautifulSoup
wikipedia.config.put_throttle = 0
wikipedia.put_throttle.setDelay()
text=u' '
todayup=u"'''تاریخ تجدید''''': ~~~~~''\n"
titlechart=u'!درجہ!! صفحہ!! مشاہدات (یومیہ اوسط)!!درجہ تعداد مشاہدہ در اردو ویکی!!انسلاکات!!بین الویکی!!تعداد روابط در مضمون!! تعداد زمرہ!!تعداد تصویر!!حجم صفحہ (بائٹ){{سخ}}15 کلوبائٹ سے کم حجم والے مضامین رنگین شکل میں !!دیگر تفصیلات'+u'\n|-\n'
uppage=todayup+u'\n{| class="wikitable sortable"\n'+titlechart
downpage=u'\n|}\n[[زمرہ:ویکیپیڈیا]]\n[[زمرہ:رودادہائے قاعدہ معطیات]]\n'
count=0
def urlEncodeNonAscii(b):
    return re.sub('[\x80-\xFF]', lambda c: '%%%02x' % ord(c.group(0)), b)
def iriToUri(iri):
    parts= urlparse.urlparse(iri)
    return urlparse.urlunparse(
        part.encode('idna') if parti==1 else urlEncodeNonAscii(part.encode('utf-8'))
        for parti, part in enumerate(parts)
    )
def num_view(link):
        matn,matn2=False,False
        urlr=u"http://stats.grok.se/ur/latest90/"+link
        urlr=iriToUri(urlr)
        #wikipedia.output(urlr)
        page = urllib2.urlopen(urlr)
        soup = str(BeautifulSoup(page))
        if soup.find('has been viewed')!=-1:
            matn=soup.split('has been viewed')[1].split('times in the last 90 days')[0].strip()
            matn=str(int(matn)/90)
        if soup.find('This article ranked')!=-1:
            matn2=soup.split('This article ranked')[1].split('in traffic on')[0].strip()
        return matn,matn2
def condition(text):
      wikipedia.config.put_throttle = 0
      wikipedia.put_throttle.setDelay()
      alarm=' '
      try:
         page = wikipedia.Page( wikipedia.getSite( u'ur' ),text )
         wikipedia.output( u'opening %s ...' % page.title() )
         text = page.get()
         alarm+=u' '
         objective=u'||'
        #----------------------------------------------refrences-------------------
         if text.find(u'{{حوالہ')!=-1:
             alarm+=u'حوالہ درکار ،'
         if text.find(u'{{درکار')!=-1:
              alarm+=u'حوالہ درکار ،'          
         if text.find(u'{{بدون حوالہ')!=-1:
              alarm+=u'بدون حوالہ ،'
         if text.find(u'{{متخصص')!=-1:
             alarm+=u'متخصص ،'
         if text.find(u'{{بہترین مضمون}}')!=-1:
             alarm+=u'{{قلم رنگ|سورمه‌ای|فیلی|بہترین مضمون}}'
         if text.find(u'{{امیدوار برائے منتخب مقالہ}}')!=-1:
             alarm+=u'{{قلم رنگ|بنفش|زرد|امیدوار برائے منتخب مقالہ}}'
         if text.find(u'{{امیدوار برائے بہترین مضمون}}')!=-1:
             alarm+=u'{{قلم رنگ|سبز|زرد|امیدوار برائے بہترین مضمون}}'            
         if text.find(u'{{منتخب مضمون}}')!=-1:
             alarm+=u'{{قلم رنگ|سفید|خاکستری|منتخب مضمون}}'
        #----------------------------------------------khord----------------------
         if text.find(u'نامکمل}}')!=-1:
           if text.find(u'{{قطعہ-نامکمل')!=-1:
               alarm+=u'{{قلم رنگ|بنفش||قطعہ-نامکمل}} ،'
           else:
               alarm+=u'نامکمل ،'
         if text.find(u'درکار}}')!=-1:
           alarm+=u'درکار ،'
         if text.find(u'{{طرفداری')!=-1:
             alarm+=u'عدم‌بی‌طرفی ،'
         if text.find(u'{{درستی')!=-1:
             alarm+=u'عدم توافق در درستی ،'
         if text.find(u'{{ادغام')!=-1:
             alarm+=u'ادغام ،'
         if text.find(u'{{در دست ویرایش')!=-1:
             alarm+=u'ویرایش ،'
         if text.find(u'{{ویکائی')!=-1:
             alarm+=u'ویکائی ،'
         if text.find(u'{{تمیزکاری')!=-1:
             alarm+=u'تمیزکاری ،'
         if text.find(u'{{لحن')!=-1:
             alarm+=u'لحن ،'
         if text.find(u'{{اصلاح')!=-1:
             alarm+=u'نیازمند ترجمه ،'
         if text.find(u'{{بازنویسی')!=-1:
             alarm+=u'بازنویسی ،'
         if text.find(u'{{به روز رسانی')!=-1:
             alarm+=u'به‌روز رسانی ،'
         if text.find(u'{{به‌روز رسانی')!=-1:
             alarm+=u'به‌روز رسانی ،'
         if alarm[-1]==u'،':
             alarm=alarm[0:-1].strip()  
         interwikis=u'{{subst:formatnum:'+str(len(page.interwiki()) ).strip()+u'}}'
         cats=u'{{subst:formatnum:'+str(len(page.categories(api=True))).strip()+u'}}'
         linked=u'{{subst:formatnum:'+str(len(page.linkedPages())).strip()+u'}}'
         image=u'{{subst:formatnum:'+str(len(page.imagelinks())).strip()+u'}}'
         alarm+=u'||'+interwikis+u'||'+linked+u'||'+cats+u'||'+image+u'||{{حجم مضمون|'+page.title().strip()+u'|15000}}||\n|-\n'
         return alarm
      except wikipedia.IsRedirectPage:
          return False
      except:
          return False
list_old=[u"ویکیپیڈیا:مقبول صفحات/بھارت",u"ویکیپیڈیا:مقبول صفحات/افراد",u"ویکیپیڈیا:مقبول صفحات/فلسفہ",u"ویکیپیڈیا:مقبول صفحات/دین زرتشتی",u"ویکیپیڈیا:مقبول صفحات/اسلام",
u"ویکیپیڈیا:مقبول صفحات/مسیحیت",u"ویکیپیڈیا:مقبول صفحات/یہودیت",u"ویکیپیڈیا:مقبول صفحات/رمان",u"ویکیپیڈیا:مقبول صفحات/کتابیں",
u"ویکیپیڈیا:مقبول صفحات/رسائل",u"ویکیپیڈیا:مقبول صفحات/زبانیں",u"ویکیپیڈیا:مقبول صفحات/طبیعیات",u"ویکیپیڈیا:مقبول صفحات/شیمی",
u"ویکیپیڈیا:مقبول صفحات/ریاضی",u"ویکیپیڈیا:مقبول صفحات/فناوری",u"ویکیپیڈیا:مقبول صفحات/رایانه و رایانش",u"ویکیپیڈیا:مقبول صفحات/موسیقی",
u"ویکیپیڈیا:مقبول صفحات/هنرهای بصری",u"ویکیپیڈیا:مقبول صفحات/فلم",u"ویکیپیڈیا:مقبول صفحات/لغت",u"ویکیپیڈیا:مقبول صفحات/سینما",u"ویکیپیڈیا:مقبول صفحات/رقص",
u"ویکیپیڈیا:مقبول صفحات/ورزش",u"ویکیپیڈیا:مقبول صفحات/فٹبال",u"ویکیپیڈیا:مقبول صفحات/فوتبال در ایران",u"ویکیپیڈیا:مقبول صفحات/زیست‌شناسی",
u"ویکیپیڈیا:مقبول صفحات/طب",u"ویکیپیڈیا:مقبول صفحات/روانشناسی",u"ویکیپیڈیا:مقبول صفحات/میکروب‌شناسی",u"ویکیپیڈیا:مقبول صفحات/حشرات",
u"ویکیپیڈیا:مقبول صفحات/حیوانات",u"ویکیپیڈیا:مقبول صفحات/پرندگان",u"ویکیپیڈیا:مقبول صفحات/پستانداران",u"ویکیپیڈیا:مقبول صفحات/خزندگان و دوزیستان",
u"ویکیپیڈیا:مقبول صفحات/سگها",u"ویکیپیڈیا:مقبول صفحات/جغرافیہ",u"ویکیپیڈیا:مقبول صفحات/ایران",
u"ویکیپیڈیا:مقبول صفحات/افغانستان",u"ویکیپیڈیا:مقبول صفحات/شہر",u"ویکیپیڈیا:مقبول صفحات/آبشار",u"ویکیپیڈیا:مقبول صفحات/معماری",
u"ویکیپیڈیا:مقبول صفحات/باستان‌شناسی",u"ویکیپیڈیا:مقبول صفحات/جنگلداری",u"ویکیپیڈیا:مقبول صفحات/انرژی",u"ویکیپیڈیا:مقبول صفحات/زندگی روزانه",
u"ویکیپیڈیا:مقبول صفحات/هوانوردی",u"ویکیپیڈیا:مقبول صفحات/فرودگاه‌ها",u"ویکیپیڈیا:مقبول صفحات/پویانمایی",u"ویکیپیڈیا:مقبول صفحات/جنگ",
u"ویکیپیڈیا:مقبول صفحات/کالبدشکافی",u"ویکیپیڈیا:مقبول صفحات/خودرو",u"ویکیپیڈیا:مقبول صفحات/کالبدشکافی",u"ویکیپیڈیا:مقبول صفحات/تاریخی مقامات",
u"ویکیپیڈیا:مقبول صفحات/شرکت‌ها",u"ویکیپیڈیا:مقبول صفحات/انٹرنیٹ",u"ویکیپیڈیا:مقبول صفحات/ویب سائٹس",u"ویکیپیڈیا:مقبول صفحات/بازیگران و فیلمسازان",
u"ویکیپیڈیا:مقبول صفحات/دولت و سیاست",u"ویکیپیڈیا:مقبول صفحات/جامعات",u"ویکیپیڈیا:مقبول صفحات/گردشگری",u"ویکیپیڈیا:مقبول صفحات/اسباب‌بازی‌ها"]
for fa_title in list:
    fapage = wikipedia.Page( wikipedia.getSite( u'ur' ),fa_title )
    links=fapage.linkedPages()
    count=0
    for link in links:
        link=link.title().replace(u'[[',u'').replace(u']]',u'').strip()
        count+=1
        k,k2=num_view(link.replace(u' ',u'_').replace(u'‌',u'%E2%80%8C'))
        link_result=condition(link.replace(u'_',u' '))
        if link_result==False:
            continue
        if not k:
            k=u'0'
        if not k2:
            k2=u'نامعلوم'
        text+=u'|{{subst:formatnum:'+str(count)+u'}}||[['+link.replace('_',' ').strip()+u']]||{{subst:formatnum:'+k+u'}} || {{subst:formatnum:'+k2+u'}}||'+link_result
    text=uppage+text.strip()+downpage
    fapage.put(text, u'روبالہ:اضافہ شماریات مقبول صفحات', minorEdit = True)
    del text
    text=u' '
 
Top