Welcome, guest | Sign In | My Account | Store | Cart
# Use YQL to answer questions with Yahoo! answers and python-yql
# Download Python-YQL from http://python-yql.org
import yql
import sys
import optparse

def prepare_answer(answer):
    attrs = map(answer.get, ['Subject', 'ChosenAnswer', 'Date', 'UserNick', 'ChosenAnswererNick', 'Link'])
    prefixes = ('Question', 'Answer', 'Answered On', 'Asked By', 'Answered By', 'Link')
    lines = []

    for x in range(len(attrs)):
        val = attrs[x]
        if val != None:
            lines.append(': '.join((prefixes[x].ljust(15), val)))

    return '\n'.join(lines)
    
def fetch_answer(*question, **kwargs):
    query="select * from answers.search where query='%s'"
    y = yql.Public()
    print 'You asked: ',' '.join(*question)
    result = y.execute(query % ' '.join(*question))

    if len(result.rows)==0:
        print 'No answers found!'
        return

    limit = kwargs['limit']
    
    if limit>0:
        results = result.rows[:limit]
    else:
        results = result.rows
        
    for item in results:
        if item.get('type')==u'Answered':
            print prepare_answer(item)
            print '_'*82
            
if __name__ == "__main__":
    if len(sys.argv)<2:
        sys.argv.append('-h')
        
    parser = optparse.OptionParser()
    parser.add_option('-n','--num',type=int,dest='nresults',default=0,help='Maximum number of results')
    options, args = parser.parse_args()
    nresults = options.__dict__['nresults']
    
    fetch_answer(args, limit=nresults)

History