Como faço para compilar uma lente da Wikipédia e instalá-la?

1

Eu li um tutorial sobre como compilar e instalar uma lente da Wikipedia, mas não funcionou.

O tutorial parece fácil - eu apenas copiei e colei no arquivo que deveria ser editado.

Eu tentei algumas vezes e aqui estão 2 edições

edite 1:

import logging
import optparse

import gettext
from gettext import gettext as _
gettext.textdomain('wikipedia')

from singlet.lens import SingleScopeLens, IconViewCategory, ListViewCategory

from wikipedia import wikipediaconfig
import urllib2
import simplejson

class WikipediaLens(SingleScopeLens):

wiki = "http://en.wikipedia.org"
def wikipedia_query(self,search):
    try:
        search = search.replace(" ", "|")
        url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search))
        results = simplejson.loads(urllib2.urlopen(url).read())
        print "Searching Wikipedia"
        return results[1]
    except (IOError, KeyError, urllib2.URLError, urllib2.HTTPError, simplejson.JSONDecodeError):
        print "Error : Unable to search Wikipedia"
        return []

   class Meta:
    name = 'Wikipedia'
    description = 'Wikipedia Lens'
    search_hint = 'Search Wikipedia'
    icon = 'wikipedia.svg'
    search_on_blank=True

    # TODO: Add your categories
   articles_category = ListViewCategory("Articles", "dialog-information-symbolic")

  def search(self, search, results):
    for article in self.wikipedia_query(search):
        results.append("%s/wiki/%s" % (self.wiki, article),
                    "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png",
                    self.articles_category,
                    "text/html",
                    article,
                    "Wikipedia Article",
                    "%s/wiki/%s" % (self.wiki, article))
    pass

edição 2:

import urllib2
import simplejson


import logging
import optparse

import gettext
from gettext import gettext as _
gettext.textdomain('wikipediaa')

from singlet.lens import SingleScopeLens, IconViewCategory, ListViewCategory

from wikipediaa import wikipediaaconfig

class WikipediaaLens(SingleScopeLens):

wiki = "http://en.wikipedia.org"

def wikipedia_query(self,search):
    try:
        search = search.replace(" ", "|")
        url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search))
        results = simplejson.loads(urllib2.urlopen(url).read())
        print "Searching Wikipedia"
        return results[1]

    except (IOError, KeyError, urllib2.URLError, urllib2.HTTPError, simplejson.JSONDecodeError):
        print "Error : Unable to search Wikipedia"
        return []
def search(self, search, results):
    for article in self.wikipedia_query(search):
        results.append("%s/wiki/%s" % (self.wiki, article),
                    "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png",
                    self.articles_category,
                    "text/html",
                    article,
                    "Wikipedia Article",
                    "%s/wiki/%s" % (self.wiki, article))
    pass

    class Meta:
    name = 'Wikipedia'
    description = 'Wikipedia Lens'
    search_hint = 'Search Wikipedia'
    icon = 'wikipedia.svg'
    search_on_blank=True

    # TODO: Add your categories
   articles_category = ListViewCategory("Articles", "dialog-information-symbolic")

    def search(self, search, results):
    # TODO: Add your search results
    results.append('https://wiki.ubuntu.com/Unity/Lenses/Singlet',
                'ubuntu-logo',
                self.example_category,
                "text/html",
                'Learn More',
                'Find out how to write your Unity Lens',
                'https://wiki.ubuntu.com/Unity/Lenses/Singlet')
    pass

so .. o que posso alterar na edição? (se alguém me der todo o arquivo de edição editado eu aprecio)

    
por user49523 14.04.2012 / 22:41

1 resposta

4

Seu problema é um caso de problemas de formatação e recuo.

A primeira edição deixou a colocação dos itens de importação errada. E o recuo não estava correto. O Python é muito específico sobre recuo e, se não for preciso, você não chegará a lugar nenhum.

A segunda edição tem um a extra após a Wikipedia. É wikipediaa em todos os lugares no código que estraga as coisas. Também tem alguns problemas de recuo e formatação.

Aqui é uma versão funcional básica do arquivo do tutorial. Funciona para mim. Você pode continuar e adicionar outros recursos, como as imagens personalizadas e as localidades.

A melhor prática para aprender a programar não é pedir um arquivo completo, mas perguntar onde você fez errado. Eu estou dando uma margem de manobra, dando-lhe um arquivo de exemplo.

Eu acho que você não está muito interessado em desenvolver uma lente por conta própria. Para o seu bem, eu adicionei a lente ao meu PPA para que você possa instalá-lo e usá-lo sem muita dificuldade.

Digite os seguintes comandos em um terminal:

sudo apt-add-repository ppa:jokerdino/ppa
sudo apt-get update
sudo apt-get install wikipedia

Depois de instalar a lente, saia do Unity e volte a usá-la. Agora você deve estar pronto para usar a lente da Wikipedia.

Nota : A lente no meu PPA é apenas funcional. Não espere que ele tenha imagens elegantes, mensagens de erro ou versões localizadas. Se você quiser tudo isso, recomendo que você mesmo tente o tutorial e adicione-o para o seu prazer.

    
por jokerdino 15.04.2012 / 16:00