User talk:Vipuser/2006-5

页面内容不支持其他语言。
維基詞典,自由的多語言詞典

欢迎![编辑]

向日葵
向日葵

Vipuser 您好!

欢迎您加入到维基词典大家庭!这是一个创作自由的免费的人人可编辑的多语言词典的协作计划,它的目的是为了描述人类古今的所有词语并用中文来解释它们。这包括着每种语言的语源读音解释维基词典中文版始于2004年5月,至今为止已有1,647,324个大大小小的词条。请参见常见问题帮助来获得有关如何使用本网站的更多信息。维基词典中的所有内容均在GNU自由文档协议证书下发布,这意味着它将是完全自由的。详细信息请参见版权

如果您有兴趣参与这项重大工程的编辑工作,您可以把自己的用户名加入到维基词典人列表上。如果您在编辑方面遇到了困难,欢迎您在啤酒馆提出。如果您对某一单词持有疑问,请在茶室里提出。您也可以直接在我的对话页上留言,会尽快地给您回复。如果您对维基还比较陌生,可以参考如何编辑页面体例说明繁简转换布局解释或到社群首页与别的维基人交往。与别的维基人交往时请在有关用户的对话页上留言(点击左上角的"讨论本页"即可进入)。留言时请在言尾注上您的用户名与留言时间(国际协调时),点击编辑框左上角的或输入--~~~~即可。别的维基人都是像您我一样的真人,抽出自己的宝贵时间在此无私奉献。编辑某些词条时难免会有分歧,可以在有关词条的讨论页上(点击左上角的"讨论本页"即可进入)进行理智的讨论,请文明用语。如需要删除某页面,请把 {{dlbc|请在此填写删除原因}} 置于需删除页面上。多谢您的合作!

最后祝我们合作愉快!让我们一起编出一部一流的在线多语言词典!

维基媒体非营利组织所承办的其它项目


是欢迎您的维基人Shibo77 对话页 13:51 2006年5月10日 (UTC)

  • 跨语言链接工作者请注意这里按照ISO 639-3ISO 639-1国际标准的语言编码字母顺序。请将fi:芬兰语链接置于fr:法语链接前。多谢您的合作!
  • Tiuj, kiuj faras interwiki ligilojn, bonvolu uzi la alfabetan ordon de lingvaj kodoj laŭ la internaciaj normoj ISO 639-3 k. ISO 639-1. Bonvolu fiksi la ligilon de la finna lingvo fi: antaŭ la ligilon de la franca lingvo fr:. Dankojn pro via kunlaboro!
  • Concerning those who do interwiki linking, please remember to use the alphabetical order of codes for languages as given in the international standards ISO 639-3 and ISO 639-1. Please place the Finnish language link fi: before the French language link fr:. Thank you for your cooperation!
Vi ne komprenas Ĉinan lingvon? Bonvolu fiksi {{User lang-0|zh}} sur via uzanta paĝo aŭ meti ĝin en via babela ŝablono.
Don't understand Chinese? Post {{User lang-0|zh}} on your user page or put it into your Babel box.

那我以后就在这给你回复了。。。

PiBot[编辑]

质量很差。。。 请问你用的是Windows吧?哪个版本?还有我可不可以在词典那边给你回复,我不常来百科。。。 --Shibo77 13:29 2006年5月10日 (UTC)

我用Linux,以前也用过Windows,大概是以下几步,安装python 2.4.3下载pywikipedia.py,创建用户(试验时也可以直接用User:Vipuser),用Notepad(Start>>Programs>>Accessories)复贴以下内容,存为user-config.py(也存在c:\pywikipedia里):
mylang = 'zh'
family = 'wiktionary'
usernames['wiktionary']['zh'] = 'Vipbot'
console_encoding = 'utf-8'

最后:Start>>Run>>cmd>>cd c:\pywikipedia>>login.py>>输入你的密码>>就可以运行了,你先想做什么样的工作? --Shibo77 13:48 2006年5月10日 (UTC)

成功了吗?最初可以用interwiki.py(最简单),接着上头login.py>>输入你的密码>>interwiki.py。 --Shibo77 14:06 2006年5月10日 (UTC)
这我还不知道,用机器人还会被GFW挡住吗? --Shibo77 14:08 2006年5月10日 (UTC)
这的内容(去掉"<pre></pre>")复贴到Notepad中,存为vip.txt(也在c:\pywikipedia里)。login.py>>输入你的密码>>pagefromfile.py -file:vip.txt -start:77 -end:88。就会自动生成新词条了。用的时候在pagefromfile.py中加上底下这几句:
msg={
    'de': u'Automatischer Import von Artikeln',
    'en': u'Automated import of articles',
    'ia': u'Importation automatic de articulos',
    'nl': u'Geautomatiseerde import',
    'zh': u'python程序: 自动引进/创建新条目'
    }

--Shibo77 14:14 2006年5月10日 (UTC)

对呀、设用代理后机器人同样也用代理呀。。。 --Shibo77 14:17 2006年5月10日 (UTC)
   raise socket.error, msg

socket.error: (10060, 'Operation timed out')

可能得在login.py中做修改,不会是因为没有授予bot权利,可以问一下User:Shizhao他有可能知道该怎么做。。。--Shibo77 14:35 2006年5月10日 (UTC)

试试:export http_proxy="IP码:80" login.py 有可能需要大写HTTP_PROXY=
我先睡了,赶明再聊! --Shibo77 14:57 2006年5月10日 (UTC)
更改代理时必须得在根上做更改,Linux用Acquire::http::Proxy "IP码:8080",所有的信息就都引用代理了。从cmd上的dir里找出你的ipconfig,再把IP码更改为代理地址。听你说的浏览器可行而程序却行不通很可能是因为你是用浏览器做的代理IP码更改(因为程序是直接连上网的,不用浏览器)。可惜视窗Server 2003上具体该怎么做我还是真的不会(大概是export HTTP_PROXY="IP码:80"),我再继续调查调查。。。 --Shibo77 05:31 2006年5月12日 (UTC)
也可以更改你python程序的上网子程序httplib.py改成以下几行试试:

(>>c: >>Python24>>Lib>>次键单击httplib>>添加以下头一行>>保存>>Start>>Run>>cmd>>cd c:\pywikipedia>>login.py>>输入Vipbot的密码>>pagefromfile.py -file:vip.txt -start:77 -end:88可以在词典这边运行,没人在意Template:X;))

HTTP_PROXY = "在此输入你的代理IP码"
HTTP_PORT = 80
HTTPS_PORT = 443

试一试。别忘了用Notepad(Start>>Programs>>Accessories)复贴以下内容,存为user-config.py(也存在c:\pywikipedia里):

mylang = 'zh'
family = 'wiktionary'
usernames['wiktionary']['zh'] = 'Vipbot'
console_encoding = 'utf-8'

还有在pagefromfile.py中加上底下这几句(>>c: >>pywikipedia>>次键单击pagefromfile>>添加以下zh:一行,即编辑摘要显示):

msg={
    'de': u'Automatischer Import von Artikeln',
    'en': u'Automated import of articles',
    'ia': u'Importation automatic de articulos',
    'nl': u'Geautomatiseerde import',
    'zh': u'python程序: 自动引进/创建新条目'
    }

--Shibo77 09:19 2006年5月12日 (UTC)

我刚刚用145.97.39.130成功了!Template:X:D (我试用Windows XP) --Shibo77 09:24 2006年5月12日 (UTC)
============================================[编辑]
HTTP = "145.97.39.134"
HTTP_PORT = 80
HTTPS_PORT = 443

或有可能:

HTTP = "145.97.39.134:80"
HTTP_PORT = 80
HTTPS_PORT = 443

我写错了,再试试?(可惜我没法自己做试验) --Shibo77 10:55 2006年5月13日 (UTC)

=============================================[编辑]

把login.py改成:

#!/usr/bin/python
# -*- coding: utf-8  -*-
"""
Script to log the robot in to a wiki account.

Suggestion is to make a special account to use for robot use only. Make
sure this robot account is well known on your home wikipedia before using.

Parameters:

   -pass:XXXX   Uses XXXX as password. Be careful if you use this
                parameter because your password will be shown on your
                screen.
   
   -sysop       Log in with your sysop account.
   
   -all         Try to log in on all sites where a username is defined in
                user-config.py.
                
   -force       When doing -all, ignores if the user is already loged in,
                and tries to login for all listed sites.
                This may be useful if you have changed the account name
                and need to aquire new login cookies.

If not given as parameter, the script will ask for your username and password
(password entry will be hidden), log in to your home wiki using this
combination, and store the resulting cookies (containing your password hash,
so keep it secured!) in a file in the login-data subdirectory.

All bots in this library will be looking for this cookie file and will use the
login information if it is present.

To log out, throw away the XX-login.data file that is created in the login-data
subdirectory.
"""
#
# (C) Rob W.W. Hooft, 2003
#
# Distributed under the terms of the MIT license.
#
__version__='$Id: login.py,v 1.45 2006/03/03 16:51:20 a_engels Exp $'

import re, sys, getpass
import httplib, urllib2
import socket
import wikipedia, config

def makepath(path):
    """ creates missing directories for the given path and
        returns a normalized absolute version of the path.

    - if the given path already exists in the filesystem
      the filesystem is not modified.

    - otherwise makepath creates directories along the given path
      using the dirname() of the path. You may append
      a '/' to the path if you want it to be a directory path.

    from holger@trillke.net 2002/03/18
    """
    from os import makedirs
    from os.path import normpath,dirname,exists,abspath

    dpath = normpath(dirname(path))
    if not exists(dpath): makedirs(dpath)
    return normpath(abspath(path))

class LoginManager:
    def __init__(self, password = None, sysop = False, site = None):
        self.site = site or wikipedia.getSite()
        if sysop:
            try:
                self.username = config.sysopnames[self.site.family.name][self.site.lang]
            except:
                raise wikipedia.NoUsername(u'ERROR: Sysop username for %s:%s is undefined.\nIf you have a sysop account for that site, please add such a line to user-config.py:\n\nsysopnames[\'%s\'][\'%s\'] = \'myUsername\'' % (self.site.family.name, self.site.lang, self.site.family.name, self.site.lang))
        else:
            try:
                self.username = config.usernames[self.site.family.name][self.site.lang]
            except:
                raise wikipedia.NoUsername(u'ERROR: Username for %s:%s is undefined.\nIf you have an account for that site, please add such a line to user-config.py:\n\nusernames[\'%s\'][\'%s\'] = \'myUsername\'' % (self.site.family.name, self.site.lang, self.site.family.name, self.site.lang))
        self.password = password

    def botAllowed(self):
        """
        Checks whether the bot is listed on Wikipedia:Bots to comply with
        the policy on the English and the Simple English Wikipedia.
        """
        if self.site in (wikipedia.getSite('en', 'wikipedia'), wikipedia.getSite('simple', 'wikipedia')):
            pl = wikipedia.Page(self.site, "Wikipedia:Bots")
            text = pl.get()
            return "[[user:%s" % self.username.lower() in text.lower()
        else:
            # No bot policies on other 
            return True
    
    def getCookie(self, remember=True):
        """Login to wikipedia.
    
        remember    Remember login (default: True)
        
        Returns cookie data if succesful, None otherwise."""
    
        data = {"wpName": self.username,
                "wpPassword": self.password,
                "wpLoginattempt": "Aanmelden & Inschrijven", # dutch button label seems to work for all wikis
                "wpRemember": str(int(bool(remember)))}
        data = wikipedia.urlencode(data.items())
        headers = {
            "Content-type": "application/x-www-form-urlencoded", 
            "User-agent": "RobHooftWikiRobot/1.0"
        }
        pagename = self.site.login_address()
        if self.site.hostname() in config.authenticate.keys():
            response = urllib2.urlopen(urllib2.Request('http://'+self.site.hostname()+pagename, data))
            data = response.read()
            wikipedia.cj.save(wikipedia.COOKIEFILE)
            return "Ok"
        else:
            conn = httplib.HTTPConnection("145.97.39.134:80")
            conn = httplib.HTTPConnection(self.site.hostname())
            conn.request("POST", pagename, data, headers)
            response = conn.getresponse()
            conn.close()

            data = response.read()
            n=0
            Reat=re.compile(': (.*?);')
            L = []

            for eat in response.msg.getallmatchingheaders('set-cookie'):
                m = Reat.search(eat)
                if m:
                    n += 1
                    L.append(m.group(1))

            if len(L) == 4:
                return "\n".join(L)
            else:
                return None

    def storecookiedata(self, data):
        """
        Stores cookie data.

        The argument data is the raw data, as returned by getCookie().

        Returns nothing."""
        filename = 'login-data/%s-%s-%s-login.data' % (self.site.family.name, self.site.lang, self.username)
        f = open(makepath(filename), 'w')
        f.write(data)
        f.close()

    def login(self, retry = False):
        if not self.password:
            # As we don't want the password to appear on the screen, we use getpass().
            s = u'Password for user %s on %s: ' % (self.username, self.site)
            self.password = getpass.getpass(s.encode(config.console_encoding))
            # Convert the password from the encoding your shell uses to the one your wiki
            # uses, via Unicode. This is the same as wikipedia.input() does with the 
            # username, but input() uses raw_input() instead of getpass().
            self.password = unicode(self.password, config.console_encoding)
    
        self.password = self.password.encode(wikipedia.myencoding())
    
        wikipedia.output(u"Logging in to %s as %s" % (self.site, self.username))
        # Ensure bot policy on the English Wikipedia
        if not self.botAllowed():
            wikipedia.output(u'*** Your username is not listed on [[Wikipedia:Bots]].\n*** Please make sure you are allowed to use the robot before actually using it!')
        cookiedata = self.getCookie()
        if cookiedata:
            self.storecookiedata(cookiedata)
            wikipedia.output(u"Should be logged in now")
            return True
        else:
            wikipedia.output(u"Login failed. Wrong password?")
            if retry:
                self.password = None
                return self.login(retry = True)
            else:
                return False

def main():
    username = password = None
    sysop = False
    logall = False
    forceLogin = False
    for arg in sys.argv[1:]:
        arg = wikipedia.argHandler(arg, 'login')
        if arg:
            if arg.startswith("-pass:"):
                password = arg[6:]
            elif arg == "-sysop":
                sysop = True
            elif arg == "-all":
                logall = True
            elif arg == "-force":
                forceLogin = True
            else:
                wikipedia.showHelp('login')
                sys.exit()
    if logall:
        if sysop:
            namedict = config.sysopnames
        else:
            namedict = config.usernames
        for familyName in namedict.iterkeys():
            for lang in namedict[familyName].iterkeys():
                site = wikipedia.getSite(code=lang, fam=familyName)
                if not forceLogin and site.loggedin(sysop = sysop):
                    wikipedia.output(u'Already logged in on %s' % site)
                else:
                    loginMan = LoginManager(password, sysop = sysop, site = site)
                    loginMan.login()
    else:
        loginMan = LoginManager(password, sysop = sysop)
        loginMan.login()

if __name__ == "__main__":
    try:
        main()
    finally:
        wikipedia.stopme()

试试。就是加了两行:import socketconn = httplib.HTTPConnection("145.97.39.134:80") --Shibo77 12:00 2006年5月14日 (UTC)