ویکیپدیا:درخواستهای ربات/افزودن الگو یوتیوب
این کد برای افزودن {{یوتیوب}} به مقالات کاربرد دارد.مزیت الگو:یوتیوب نسبت به پیوندهای عادی در این است
- افزودن رده:صفحههای حاوی ویدئو
- مشخص بودن پیوندهای ویدئویی یوتیوب
- امکان نظارت بیشتر بر پیوندهای بیرون
این ربات به صورت خودکار کار میکند ونیازی به هیچ نغییر یا آرگومانی ندارد.نمونه
کد
[ویرایش]<syntaxhighlight lang="python">
- !/usr/bin/python
- -*- coding: utf-8 -*-
- Reza(User:reza1615), 2012
- Distributed under the terms of the CC-BY-SA 3.0 .
import wikipedia, re, pagegenerators import MySQLdb as mysqldb import config, urllib,simplejson from urllib import urlencode wikipedia.config.put_throttle = 0 wikipedia.put_throttle.setDelay() site = wikipedia.getSite('fa','wikipedia')
- sql part
query='SELECT page_title, el_to FROM page JOIN externallinks ON el_from=page_id WHERE page_namespace=0 AND el_to LIKE "%www.youtube.%"'; conn = mysqldb.connect('fawiki-p.db.toolserver.org', db = site.dbName(),
user = config.db_username, passwd = config.db_password)
cursor = conn.cursor()
wikipedia.output(u'Executing query:\n%s' % query) query = query.encode(site.encoding()) cursor.execute(query) count=0 while True:
try: pageTitle, pagelink = cursor.fetchone() except TypeError: # Limit reached or no more results break try: if pageTitle: pageTitle = unicode(pageTitle, site.encoding()) pageTitle = re.sub(ur"_",u" ",pageTitle) pageTitle = re.sub(ur"(^\"|\"$)",u"",pageTitle) pageTitle = re.sub(ur"(^\s*|\s$)",u"",pageTitle) pagelink=unicode(pagelink, site.encoding()) if pagelink.find(u'watch?v=')==-1: continue page=wikipedia.Page(site,pageTitle) text=page.get() part2=pagelink+text.split(u'['+pagelink)[1].split(u']')[0] part3=text.split(u'['+pagelink)[1].split(u']')[0] part1=pagelink.split(u'watch?v=')[1].split(u'&')[0].strip() text_old=text linkyou=u'['+part2+u'] ' text=text.replace(linkyou,u''+part3.strip()+u' در یوتیوب') linkyou=u'['+part2+u']' text=text.replace(linkyou,u''+part3.strip()+u' در یوتیوب') if text==text_old: continue else: page.put(text,u'ربات:اصلاح الگوی یوتیوب',) except: continue