Python wikipedia 模块,random() 实例源码

我们从Python开源项目中,提取了以下17个代码示例,用于说明如何使用wikipedia.random()

项目:WikiSummary    作者:Mikerah    | 项目源码 | 文件源码
def get_random_articles_v1(number_of_articles_wanted):
    """Given the wanted number of articles returned, get random wikipedia articles"""
    if number_of_articles_wanted == 1:
        print(wikipedia.summary(wikipedia.random()))
    else:    
        list_of_articles = wikipedia.random(number_of_articles_wanted)
        try:
            for a in list_of_articles:
                article = a[:]
                if ('disambiguation' in wikipedia.page(a).title) or ('it may refer to' in wikipedia.page(a).title):
                    list_of_articles.remove(a)
                    list_of_articles.append(wikipedia.random())

                print(list_of_articles.index(a)+1," - "+wikipedia.summary(a))
                print()
        except wikipedia.exceptions.DisambiguationError:
            list_of_articles.remove(article)
            list_of_articles.append(wikipedia.random(article))
项目:AceBot    作者:Run1e    | 项目源码 | 文件源码
def wikirandom(self, ctx):
        """Get a random wikipedia page."""

        await ctx.trigger_typing()
        try:
            page_name = wikipedia.random(1)
        except:
            return await ctx.invoke(self.wikirandom)

        try:
            wiki = wikipedia.page(page_name)
            for attr in ('summary', 'url', 'title'):
                if not hasattr(wiki, attr):
                    return await ctx.invoke(self.wikirandom)
        except wikipedia.exceptions.DisambiguationError as e:
            return await ctx.invoke(self.wikirandom)
        await self.embedwiki(ctx, wiki)
项目:wikiphilosophy    作者:adtac    | 项目源码 | 文件源码
def main():
    if len(sys.argv) > 1:
        start = sys.argv[1]
    else:
        start = wikipedia.random()
    done = set()

    while start != "Philosophy":
        done.update([start])
        sys.stdout.write(start)
        sys.stdout.flush()
        with nostderr():
            start = next_link(start, done)
        if start is None:
            print("\nNo more links")
            exit()
        sys.stdout.write(" ? ")
        sys.stdout.flush()

    print(start)
    print("Length: " + str(len(done) + 1))
项目:MangoByte    作者:mdiller    | 项目源码 | 文件源码
def scramble(self, ctx, *, message : str):
        """Scrambles the insides of words"""

        def scramble_word(word):
            if len(word) < 4:
                letters = list(word)
                random.shuffle(letters)
                return "".join(letters)
            else:
                letters = list(word[1:-1])
                random.shuffle(letters)
                return word[0] + "".join(letters) + word[-1]

        results = []
        for word in message.split(" "):
            results.append(scramble_word(word))

        await ctx.send(" ".join(results))
项目:MangoByte    作者:mdiller    | 项目源码 | 文件源码
def on_message(self, message):
        if message.guild is not None and not botdata.guildinfo(message.guild.id).reactions:
            return

        if (message.author == self.bot.user) or message.content.startswith("?"):
            return

        random.seed(message.content)

        for check in self.reactions:
            expression = check["regex"]
            if check.get("word"):
                expression = "\\b({})\\b".format(expression)
                match = re.search(expression, message.clean_content, re.IGNORECASE)
            else:
                match = re.search(expression, message.clean_content)
            if match and (random.random() < check.get("chance", 1.0)):
                await message.add_reaction(random.choice(check["reaction"]))
                break
项目:AceBot    作者:Run1e    | 项目源码 | 文件源码
def ball(self, ctx, question):
        """Classic Magic 8 Ball"""
        responses = (
            'It is certain', # yes
            'It is decidedly so',
            'Without a doubt',
            'Yes definitely',
            'You may rely on it',
            'As I see it, yes',
            'Most likely',
            'Outlook good',
            'Yes',
            'Signs point to yes', # uncertain
            'Reply hazy try again',
            'Ask again later',
            'Better not tell you now',
            'Cannot predict now',
            'Concentrate and ask again',
            "Don't count on it", # no
            'My reply is no',
            'My sources say no',
            'Outlook not so good',
            'Very doubtful'
        )
        await ctx.trigger_typing()
        await asyncio.sleep(3)
        await ctx.send(random.choice(responses))
项目:AceBot    作者:Run1e    | 项目源码 | 文件源码
def choose(self, ctx, *choices):
        """Choose from a list."""
        await ctx.send(random.choice(choices))
项目:AceBot    作者:Run1e    | 项目源码 | 文件源码
def flip(self, ctx):
        """Flip a coin!"""
        await ctx.send(f'I got {random.choice(["Heads", "Tails"])}!')
项目:AceBot    作者:Run1e    | 项目源码 | 文件源码
def number(self, ctx, *, num: int):
        """Get a random fact about a number!"""
        req = requests.get('http://numbersapi.com/{}?notfound=floor'.format(num))
        await ctx.send(req.text)
项目:WikipediaQuiz    作者:NicholasMoser    | 项目源码 | 文件源码
def retrieve_random_passage(page, length):
    """Given a wikipedia page and length, retrieves a random passage of text from
    the content of the wikipedia page with the given length.
    """
    content = page.content
    content_length = len(content)
    if length > content_length:
        length = content_length - 1
    start = random.randrange(len(content) - length)
    end = start + length
    return content[start:end]
项目:falco    作者:nathan0    | 项目源码 | 文件源码
def choose(irc, source, msgtarget, args):
    choices = args[0].split(",")
    if len(choices) > 1 and choices:
        choice = random.choice(choices).strip()
        if choice:
            irc.send("PRIVMSG {} :{}: {}".format(msgtarget, source.nick, choice))
        elif not choice:
            irc.msg(msgtarget, "{}: I can't give you any choice".format(source.nick))
    elif len(choices) == 1:
        irc.send("PRIVMSG {} :{}: {}".format(msgtarget, source.nick, args[0]))
项目:falco    作者:nathan0    | 项目源码 | 文件源码
def randwiki(irc, source, msgtarget, args):
    rand = wikipedia.random(pages=1)
    url = wikipedia.page(rand).url
    irc.msg(msgtarget, "Random Article: {} - \x1d{}\x1d".format(rand, url))
    irc.msg(msgtarget, wikipedia.summary(rand, sentences=2, chars=250, auto_suggest=True))
项目:MangoByte    作者:mdiller    | 项目源码 | 文件源码
def ask(self, ctx, *, question : str=""):
        """Answers any question you might have"""
        random.seed(question)
        for check in self.questions:
            if re.search(check["regex"], question):
                clip = await self.get_clip(f"dota:{random.choice(check['responses'])}", ctx)
                await ctx.send(clip.text)
                try:
                    await self.play_clip(clip, ctx)
                except AudioPlayerNotFoundError:
                    pass # Not needed for this 
                return
        print("didnt match anything for ask")
项目:WikiSummary    作者:Mikerah    | 项目源码 | 文件源码
def create_optional_arguments(parser):
    """ Given a parser, create optional arguments."""

    parser.add_argument('-R', '--random', help='display n random wikipedia articles (1 <= n <= 10)',
                        type=int, choices=[i for i in range(1,11)])

    parser.add_argument('-r', '--read', help='display the specified summarized wikipedia article', type=str, nargs='+')

    parser.add_argument('-rf', '--forever', help='display a random article until the user types stop',
                        action="store_true")
项目:WikiSummary    作者:Mikerah    | 项目源码 | 文件源码
def get_random_articles_v2():
    """Retrieves random articles until the user types 'stop' """
    ans = input('Press enter to continue or stop to stop: ')
    while ans != 'stop':
        try:
            print(wikipedia.summary(wikipedia.random()))
            print()
            ans = input('Press enter to continue or stop to stop: ')
        except wikipedia.exceptions.DisambiguationError:
            print(wikipedia.summary(wikipedia.random()))
            print()
            ans = input('Press enter to continue or stop to stop: ')
项目:WikiSummary    作者:Mikerah    | 项目源码 | 文件源码
def choice(args):
    """ Given a namespace, determine what to do based of the parameters given. """
    if args.random:
        return get_random_articles_v1(args.random)
    elif args.read:
        return get_wanted_article(args.read)
    elif args.forever:
        return get_random_articles_v2()
项目:WikipediaQuiz    作者:NicholasMoser    | 项目源码 | 文件源码
def wikipedia_quiz(number_of_articles, passage_length):
    """Generates a multiple choice quiz to identify the correct wikipedia article that
    a random passage is pulled from. The number of articles determines how many choices
    you must pick from. The passage length determines the number of characters that the
    random passage will be.
    """
    print('*** Wikipedia Quiz ***')
    logging.info('Quiz is starting')
    random_articles = wikipedia.random(number_of_articles)
    logging.debug('Random articles: %s', str(random_articles).encode('utf-8'))
    correct_article_index = random.randrange(number_of_articles)
    page_retrieved = False
    while not page_retrieved:
        try:
            correct_article = random_articles[correct_article_index]
            correct_page = wikipedia.page(correct_article)
            page_retrieved = True
        except wikipedia.exceptions.DisambiguationError:
            # Wikipedia provides options to choose from, but if we pick one, the title will be
            # much more descriptive (particularly by using parenthesis like so). This usually
            # ends up making the guessing too easy. Let's just reroll and put the new random
            # article in the place of the old one.
            new_random_article = wikipedia.random()
            random_articles[correct_article_index] = new_random_article

    # Try to obtain a good passage
    random_passage = retrieve_random_passage(correct_page, passage_length)
    retry = 0
    while is_passage_unfair(random_passage, correct_article) and retry < RETRY_AMOUNT_MAX:
        logging.info('Passage is unfair, generating a new one...')
        random_passage = retrieve_random_passage(correct_page, passage_length)
        retry += 1
    if retry >= RETRY_AMOUNT_MAX:
        print('Too many retries for the passage...')
        logging.error('Too many retries for the passage...')
        return False

    # Print info to user
    print('...%s...' % random_passage)
    encode_utf8 = sys.version_info.major == 2 # Hack support for Python 2
    for index, random_article in enumerate(random_articles):
        if encode_utf8:
            random_article = random_article.encode('utf-8')
        print('%d: %s' % (index, random_article))

    # Handle answer
    answer = request_answer(number_of_articles)
    if answer == str(correct_article_index):
        print('Correct!')
        logging.info('Correct, answer was %d', correct_article_index)
    else:
        print('Incorrect, answer was: %d' % correct_article_index)
        logging.info('Incorrect, answer was: %d', correct_article_index)
    logging.info('Quiz is ending')
    return True