Script para obter um wallpaper de como está o globo em tempo real
Publicado por Renan (última atualização em 12/04/2010)
[ Hits: 6.260 ]
Download 1270770656.WorldSky.py (versão 2)
Script em Pygtk que baixa uma imagem do globo do site http://die.net mostrando onde está noite e onde está dia.
O script cria um ícone na bandeja para poder controlá-lo com opções como atualizar, parar, escolher a projeção e encerrar.
As escolhas de projeção são:
- Peters ( http://static.die.net/earth/peters/1600.jpg )
- Mollweide ( http://static.die.net/earth/mollweide/1600.jpg )
- Hemisfério ( http://static.die.net/earth/hemisphere/1600.jpg )
Versão 2 - Enviado por Renan em 08/04/2010
Changelog: Alterado para usar uma sintaxe anterior ao python versão 2.6.
Download 1270770656.WorldSky.py
#!/usr/bin/env python
#
#       WorldSky.py
#       
#       Copyright 2010 Renan Vedovato Traba <hellupline@gmail.com>
#       
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#       
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#       
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.
import os, gtk, glib, gconf, urllib2
__cache_path__ = os.path.join(os.environ['HOME'], ".cache", "wallpaper")
def download_file(url):
    while True:
        try:
            return urllib2.urlopen(url).read()
        except:
            pass
    return None
def update_wallpaper(image_url="http://static.die.net/earth/peters/1600.jpg"):
    if not os.path.isdir(__cache_path__): os.mkdir(__cache_path__)
    path = os.path.join(__cache_path__, "WorldSky.jpg")
    with open(path, "w") as file: file.write(download_file(image_url))
    background_key = "/desktop/gnome/background/picture_filename"
    return gconf.client_get_default().set_string(background_key, path)
class WorldSky(object):
    def __init__(self):
        self.image_url = "http://static.die.net/earth/peters/1600.jpg"
        self.refresh_cb(None); self.service = glib.timeout_add(1000*60*60, self.refresh_cb)
        statusicon = gtk.StatusIcon()
        statusicon.set_visible(True)
        statusicon.set_from_stock(gtk.STOCK_ABOUT)
        menu = gtk.Menu()
        menu_item = gtk.ImageMenuItem(gtk.STOCK_REFRESH)
        menu_item.connect('activate', self.refresh_cb)
        menu.append(menu_item)
        menu.append(gtk.SeparatorMenuItem())
        menu_item = gtk.CheckMenuItem('Run')
        menu_item.set_active(True)
        menu_item.connect('toggled', self.toggled_cb)
        menu.append(menu_item)
        menu.append(gtk.SeparatorMenuItem())
        menu_item = gtk.RadioMenuItem(None, 'Peters projection')
        menu_item.set_active(True)
        menu_item.connect('toggled', self.changed_cb, "http://static.die.net/earth/peters/1600.jpg")
        menu.append(menu_item)
        menu_item = gtk.RadioMenuItem(menu_item, 'Mollweide projection')
        menu_item.connect('toggled', self.changed_cb, "http://static.die.net/earth/mollweide/1600.jpg")
        menu.append(menu_item)
        menu_item = gtk.RadioMenuItem(menu_item, 'Hemisphere projection')
        menu_item.connect('toggled', self.changed_cb, "http://static.die.net/earth/hemisphere/1600.jpg")
        menu.append(menu_item)
        menu.append(gtk.SeparatorMenuItem())
        menu_item_quit = gtk.ImageMenuItem(gtk.STOCK_QUIT)
        menu_item_quit.connect('activate', self.quit_cb)
        menu.append(menu_item_quit)
        menu.show_all()
        statusicon.connect('popup-menu', self.popup_menu_cb, menu)
        gtk.main()
    def refresh_cb(self, widget):
        update_wallpaper(self.image_url)
    def toggled_cb(self, widget):
        if widget.get_active():
            self.refresh_cb(None); self.service = glib.timeout_add(1000*60*60, self.refresh_cb)
        else:
            glib.source_remove(self.service)
        return True
    def changed_cb(self, widget, image_url):
        if widget.get_active():
            self.image_url = image_url
            self.refresh_cb(None)
    def quit_cb(self, widget):
        gtk.main_quit()
    def popup_menu_cb(self, status_icon, button, time, menu):
        menu.popup(None, None, gtk.status_icon_position_menu, button, time, status_icon)
if __name__ == '__main__': WorldSky()
LISCH e EISCH - Método de resolução de colisão
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









