Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1826 Le 08/04/2010, à 15:35

JB-home

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

si tu est sous Karmic, tape juste cette commande :

sudo add-apt-repository ppa:norsetto/ppa

et faire la mise à jour.

je pense que s'est le bon ppa.

Hors ligne

#1827 Le 08/04/2010, à 15:38

chepioq

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Vu sur la doc (mais c'est en anglais)

For users compiling from source on a binary distro, make sure you have the X development libraries installed (Unless you provide configure with "--disable-x11"). This should be a package along the lines of "libx11-dev" or "xorg-x11-dev" for X11 libs, and similar "-dev" format for the other libs required (depending on your configure options). You should be able to see which extra packages you need to install by reading errors that you get from './configure'. You can enable/disable stuff by giving options to configure, but be careful with disabling. For example: with --disable-math you won't get errors but logarithmic graphs will be normal graphs and gauges will miss their line.

Tout est dans tout et réciproquement....

Hors ligne

#1828 Le 08/04/2010, à 15:43

Chloé14

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

ok, merci beaucoup

Hors ligne

#1829 Le 08/04/2010, à 15:43

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

pour karmic il y a des dépots ICI

quelqu'un a une idée pour mon problème de lua ??


EDIT : oui c'est celui que tu donne z0rg>, je viens de le lire quelques pages avant ^^"

Dernière modification par zydar (Le 08/04/2010, à 16:03)


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1830 Le 08/04/2010, à 15:47

JB-home

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

c'est celui que je donne.

Hors ligne

#1831 Le 08/04/2010, à 15:58

Chloé14

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

merci pour les dépôts !

Hors ligne

#1832 Le 08/04/2010, à 20:43

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

killiandt a écrit :

Je me suis débrouiller autrement avec terminator mais si vous avez des réponses je prend quand même.
Voici une petite screen de ce que ça donne actuellement :
http://img265.imageshack.us/img265/1945 … 80x.th.png

>> superbe ton fond d'écran !! tu l'as trouvé où ??


bece a écrit :

J'ai besoin d'un scrip parce que je fais des random :

#!/bin/bash

fortune_00='chucknorris'
fortune_01='informatique'
fortune_02='bashfr'
fortune_03='GDP'
fortune_04='humour'
fortune_05='cinema'
fortune_06='VDM'

fortune_rand=`rand -M 7`

case $fortune_rand in 0) echo "\s{offset 10}Chuck Norris :\n" ;;
		      1) echo "\s{offset 10}Informatique :\n" ;;
		      2) echo "\s{offset 10}Bash FR :\n" ;;
		      3) echo "\s{offset 10}GDP :\n" ;;
		      4) echo "\s{offset 10}Humour :\n" ;;
		      5) echo "\s{offset 10}Cinéma :\n" ;;	
		      6) echo "\s{offset 10}Vie De Merde :\n" ;;
		      *) echo "\s{offset 10}rand raté\n"
esac

case $fortune_rand in 0) fortune chucknorris | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      1) fortune informatique | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      2) fortune bashfr | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      3) fortune GDP | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      4) fortune humour | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      5) fortune cinema | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;	
		      6) fortune VDM | iconv -c --silent -f ISO_8859-1 -t UTF-8 | fold -s -w 49 | sed \'s/^/    / ;;
		      *) echo "\s{offset 20}rand raté"
esac

Mais, je n'arrive pas à faire en sorte que conky utilise les balises conky mis dans ce script

quand je met ce script, et que je le lance en terminal ca m'affiche "/home/zydar/.conky/.fortunes.sh: line 14: rand : commande introuvable"

une idée ?? :s :s

ps:  plus de probleme de lua

Dernière modification par zydar (Le 08/04/2010, à 20:48)


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1833 Le 08/04/2010, à 21:00

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Mais pourquoi tu utilises un script pour sa ??

Il te suffit de faire le tri dans tes fortunes : tu supprimes celles dont tu n'as pas besoin.
Et tu utilises la fonction native de fortune :

fortune

Et comme sa, elle te sort une quote au hasard parmi les thèmes que tu as laissés.


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1834 Le 08/04/2010, à 21:14

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Fenouille84 a écrit :

Mais pourquoi tu utilises un script pour sa ??

Il te suffit de faire le tri dans tes fortunes : tu supprimes celles dont tu n'as pas besoin.
Et tu utilises la fonction native de fortune :

fortune

Et comme sa, elle te sort une quote au hasard parmi les thèmes que tu as laissés.

en gros je regroupe tous mes fichier de fortunes dans le meme ?


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1835 Le 08/04/2010, à 21:16

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@zydar
Tes fichiers de citations de fortune sont dans quel dossier ??


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1836 Le 08/04/2010, à 21:25

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Fenouille84 a écrit :

@zydar
Tes fichiers de citations de fortune sont dans quel dossier ??

/usr/share/games/fortunes/fr/


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1837 Le 08/04/2010, à 21:28

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Parfait smile

Essaye en mettant les fichiers qui t'intéressent dans : /usr/share/games/fortunes/
Et le reste, place le dans : /usr/share/games/fortunes/fr/

Ensuite, en console fait plusieurs essais en tapant comme commande :

fortune

P.S. :
Pour faire ces déplacements, il faut ouvrir un navigateur en root.
Donc, selon le tien :

sudo nautilus /usr/share/games/fortunes
ou
sudo thunar /usr/share/games/fortunes

Dernière modification par Fenouille84 (Le 08/04/2010, à 21:31)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1838 Le 08/04/2010, à 21:34

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@Fenouille84 :

yeahh !!! ca marche dans le terminal, je modifie le conkyrc et je te dis sa tongue (tu m'enleve une grosse épine du pied la tongue merciiiiii

EDIT : ca marche avec un ${execi 60 fortune} pas tout compris, mais content !! smile il ne me reste plus qu'à faire ma mise en page tongue

Dernière modification par zydar (Le 08/04/2010, à 21:37)


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1839 Le 08/04/2010, à 21:45

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@zydar

Pour afficher une quote aléatoire (là le thème est choisi dans les fichiers du dossier par défaut : /usr/share/games/fortunes)

fortune

Pour afficher une quote avec un thème précis:

fortune thème

Voilà comment fonctionne la commande fortune à peu près.

Content de t'avoir aider !!
Courage pour ta mise en page !! wink

Dernière modification par Fenouille84 (Le 08/04/2010, à 21:47)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1840 Le 09/04/2010, à 10:38

chepioq

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour tout le monde.
Vous vous souvenez peut-être que j'avais proposé un calendrier avec les phases de la lune http://forum.ubuntu-fr.org/viewtopic.php?id=326972&p=44 post 1078.
Le soucis est qu'avec la nouvelle transparence de conky 1.8.0 et l'option "own_window_argb_visual yes", l'image de la lune dans mon script prend un peu la couleur du fond d'écran.
Je l'ai refait avec lua et les script de wlourf, maintenant l'image de la lune à la bonne couleur.

le conkyrc:

# -- Conky settings -- #
background no
update_interval 3

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
imlib_cache_size 0

# -- Window specifications -- #

own_window yes
#own_window_type normal
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
own_window_argb_visual yes
own_window_colour FFFFFF
own_window_title square to round

border_inner_margin 0
border_outer_margin 0

minimum_size 250 150

alignment tr
gap_y 40
gap_x 40

# -- Graphics settings -- #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

# -- Text settings -- #
use_xft yes
xftfont Santana:size=12
xftalpha 0

uppercase no

default_color 000000
text_buffer_size 2048 
imlib_cache_size 0 
#--- LUA ---
lua_load ~/.conkyrc/conky14/square_to_round.lua
lua_draw_hook_pre main /home/dominique/.conkyrc/conky14/moon-phase/moon.jpg

TEXT
${execpi 3600 ~/.conkyrc/conky14/get_image.sh}                       
${goto 155}${font Monaco:size=18}${color #0000ff}${execi 1800 date +%^B | cut -c1}${font Monaco:size=10}${color #0F4C5D}${execi 1800 date +%B | cut -c2-}
${goto 105}${color #0F4C5D}${font Monaco:size=9}${execpi 60 DJS=`date +%_d`; cal | sed '/./!d' | sed '1d'  | sed 's/$/                     /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${goto 105} /' | sed /" $DJS "/s/" $DJS "/" "'${color #FF000C}'"$DJS"'${color #0000ff}'" "/}

qui appelle le script square_to_round.lua et get_image.sh

square_to_round.lua

--[[ SQUARE_TO_ROUND WIDGET by Wlourf (07 April 2010, version 1.0.1)
http://u-scripts.blogspot.com/

This widget display a rounded image on your conky from a square image only.

Parameters are
filename        --nom de l'image carrée en entrée
xc,yc           --coordonnées du centre de l'image ronde par rapport au coin en haut à gauche de la fenêtre conky
radius           --rayon du cercle final
angle           --angle de rotation de l'image
radius_crop       --dans l'image carrée, pourcentage du cercle à extraire par rapport au côté du carré(1-100)
period       --converti l'image de carré à rond toutes les  'period' secondes

]]

require 'cairo'
require 'imlib2'

function convert_square(fileIn,fileOut,radius,angle,radius_crop)
    --convert Input file from jpg to png, scale it and rotate it
    local imageInput = imlib_load_image(fileIn)
    local out_size = radius*2/(radius_crop/100)
    imlib_context_set_image(imageInput)
    w = imlib_image_get_width();
    h = imlib_image_get_height();
    imlib_image_set_format("png")
    buffer = imlib_create_image(out_size,out_size);
    imlib_context_set_image(buffer);

    imlib_blend_image_onto_image(imageInput, 0, 
                                               0, 0, w, h, 
                                               0,0, out_size,out_size)
    rot_img=imlib_create_rotated_image(angle*math.pi/180)
    imlib_context_set_image(rot_img)  
    imlib_save_image(fileOut)
    imlib_free_image()
    
    imlib_context_set_image(buffer)
    imlib_free_image()
    imlib_context_set_image(imageInput)
    imlib_free_image()
end

function crop_square_to_round(filename,xc,yc,radius)
    local surface = cairo_image_surface_create_from_png(filename)
    local img_w = cairo_image_surface_get_width (surface);
    
    local cw,ch = conky_window.width, conky_window.height
    local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, cw,ch)
    local cr=cairo_create(cs)
    cairo_translate(cr,xc-img_w/2,yc-img_w/2)
    cairo_arc (cr, img_w/2,img_w/2, radius, 0, 2*math.pi)
    cairo_clip (cr)
    cairo_new_path (cr)    
    cairo_set_source_surface (cr, surface, 0, 0)

    cairo_paint (cr)
    cairo_destroy(cr)
    cairo_surface_destroy (cs)
    cairo_surface_destroy (surface)
    
end

function display_round(filename,xc,yc,radius,angle,radius_crop,period)
    if conky_window == nil then return end

    if tonumber(conky_parse('${updates}')) <2  then return end
    local filepng = filename .. ".png"
    local actual_time  = os.time()
    
    if last_time == nil then last_time=0 end
    local actual_img = io.open(filepng,"r")    
    if  last_time+period < actual_time or last_time == 0 or actual_img == nil then
        print ('convert image ' .. filename)
        convert_square(filename,filepng,radius,angle,radius_crop)
        last_time=actual_time
    end
    crop_square_to_round(filepng,xc,yc,radius)
    io.close()
end


--[[END OF SQUARE TO ROUND WIDGET]]

function conky_main(filename)
    if conky_window == nil then return end
    display_round(filename,
                58,90,55,  --xc,yc,radius
                5,            --angle
                98,           --radius_crop (1-100)
                3600        --period
    )
end

get_image.sh

#!/bin/sh
dir="/home/dominique/.conkyrc/conky14/moon-phase"
mkdir -p $dir
cd $dir
wget http://static.die.net/moon/576.jpg -O "$dir/moon.jpg"

1270805688.jpg

Avec l'ancienne version, la lune aurait été bleue transparente...


Tout est dans tout et réciproquement....

Hors ligne

#1841 Le 09/04/2010, à 11:06

Piouplilou

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Fenouille84 a écrit :

@Piouplilou

Essaye plutôt avec cette commande :

${execi 180 fortune | fold -s -w 80}

Cette commande te permet de :
  * couper la phrase en gardant les mots entiers
  * couper après 80 caractères

T'as pas regardé la doc de fortune toi !! wink

Merci beaucoup c'est ce que je cherchais... Non je fouillais du coté de conky pas pensé à la doc fortune...

Hors ligne

#1842 Le 09/04/2010, à 12:42

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

euu j'ai encore un petit problème aprés je vous laisse tranquil tongue (promis !! enfin pour l'instant big_smile)

bureaue.png
liens

# temps pour fermer conky en seconde. 0 = toujours actif 
total_run_times 0

# affiche le texte sur la sortie standard
out_to_console no

# réglage de la mémoire, pour éviter le clignotement
double_buffer yes
# Soustraire les mémoires tampons de la mémoire utilisée
no_buffers yes
text_buffer_size 2048

# taux de rafraichissement de la fenêtre (en secondes)
update_interval 1

# nombre d'échantillons à utiliser pour calculer la moyenne d'utilisation
cpu_avg_samples 4
net_avg_samples 2

# taille et positon
alignment top_right
minimum_size 320
maximum_width 320

# écart avec le bord x=gauche ou droit y= haut ou bas
gap_x 5
gap_y 435

#  afficher les ombres
draw_shades yes
# afficher des contours
draw_outline no
# contours autour des blocs de texte
draw_borders no
# largeur du contour
border_width 1
# largeur des marges
border_inner_margin instead

#pour que conky tourne en arrière plan background no pour les tests
background yes

# utiliser sa propre fenêtre
own_window yes
#type de fenêtre :  / override / desktop
own_window_type override # normal / override / desktop
#pseudo transparence si vous avez des icones sous le conky elle ne seront plus accessible une fois conky activé
own_window_transparent yes

# Utiliser Xft (polices lissées etc)
use_xft yes
xftalpha .1
override_utf8_locale yes # force UTF8

#police a utiliser : use_xft doit être a "yes"
xftfont Fixed:size=7#OCR A Std:size=6
# Tout le texte en majuscule
uppercase no

# Ajoute des espaces après certains objets pour éviter de les faire bouger.
# Fonctionne uniquement avec les polices Fixes
use_spacer right

# Couleurs
default_color 0c2858 #bleu foncé
default_shade_color 333333
default_outline_color black

color1 e49c16 
color2 CA0000 #rouge

color6 EEEEEE
color7 DDDDDD
color8 CCCCCC
color9 BBBBBB

TEXT
${scroll 16 VDM}
${execi 300 /home/zydar/.conky/.vdm.sh | fold -s -w 50}}

${execi 60 fortune}

^
le conkyfortune

in/bash
# Fortunes aléatoires [VDM]
#
# Par Tite-Live ~ p.tite.live [AT] gmail [POINT] com
#
# Il faut html2text.py pour le faire fonctionner
# * Le télécharger sur http://www.aaronsw.com/2002/html2text/html2text.py  [Auteur : Aaron Swartz (http://www.aaronsw.com/)]
# * Copier le fichier html2text.py dans le répertoire où se trouve ce script
#
#
#
#    ~ Have Fun ~


function VDM_RANDOM {

  VDM_Source=`wget 'http://api.viedemerde.fr/1.2/view/random?key=readonly' -O- -q`
  VDM_Auteur=`expr match "$VDM_Source" '.*<auteur>\(.*\)<\/auteur>' | python ~/.conky/.html2text.py`
  VDM_Categorie=`expr match "$VDM_Source" '.*<categorie>\(.*\)<\/categorie>'`
  VDM_Texte=`expr match "$VDM_Source" '.*<texte>\(.*\)<\/texte>' | python ~/.conky/.html2text.py | fold -s -w 65`

  if [[ $VDM_Auteur = "" ]]; then VDM_Auteur="Anonyme "; fi

  echo "$VDM_Texte"
  echo "Par $VDM_Auteur(${VDM_Categorie})"

}

  VDM_RANDOM

^
le vdm.sh

je pense que les phrases arrivent avec des retours-lignes déjà écrit, donc quand les miens s'effectue ca donne pas grand chose sad

conky bientôt terminé !!


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1843 Le 09/04/2010, à 13:15

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

Essaye en modifiant ton fichier vdm.sh.
Supprime l'option :

 | fold -s -w 65

Edit :
Je te conseille aussi de remplacer la ligne VDM_Texte par celle là (prise en charge des quotes : " )

VDM_Texte=$(expr match "$VDM_Source" '.*<texte>\(.*\)<\/texte>' | python $HOME/conky/VDM/html2text.py | sed 's/&quot;/"/g')

Dernière modification par Fenouille84 (Le 09/04/2010, à 13:20)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1844 Le 09/04/2010, à 14:13

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@fenouille84 j'ai remplacé la ligne, changer les repertoires (le plus souvent les miens sont cachés tongue) et quand je lance en terminal j'ai  :

  File "/home/zydar/.conky/.html2text.py", line 449, in <module>
    data = sys.stdin.read().decode('utf8')
IOError: [Errno 5] Input/output error

d'ailleurs si tu sais comment faire apparaitre les caractères spéciaux ... smile (é/à le plus souvent)

Dernière modification par zydar (Le 09/04/2010, à 14:24)


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1845 Le 09/04/2010, à 14:23

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@zydar
Aïe !! C'était pas prévu sa hmm

Je sais pas du tout, j'ai pas eu de problème moi.
Tiens je te mets mes 2 fichiers, tente voir ce que sa donne :

vdm.sh

#!/bin/bash

#Version 1.0 ################################################################################################
#
#	Fortunes aléatoires VDM
#
#	Par Tite-Live ~ p.tite.live@gmail.com
#	Il faut html2text.py pour le faire fonctionner
#	http://www.aaronsw.com/2002/html2text/html2text.py  [Auteur:Aaron Swartz (http://www.aaronsw.com/)]
#
#	Adaptée par Fenouille84
#
#############################################################################################################


VDM_Source=$(wget 'http://api.viedemerde.fr/1.2/view/random?key=readonly' -O- -q)
VDM_Texte=$(expr match "$VDM_Source" '.*<texte>\(.*\)<\/texte>' | python $HOME/conky/VDM/html2text.py | sed 's/&quot;/"/g')

 #VDM_Auteur=$(expr match "$VDM_Source" '.*<auteur>\(.*\)<\/auteur>' | python $HOME/conky/VDM/html2text.py)
 #VDM_Categorie=$(expr match "$VDM_Source" '.*<categorie>\(.*\)<\/categorie>')

if [[ $VDM_Auteur = "" ]]; then VDM_Auteur="Anonyme "; fi

echo "$VDM_Texte"

#echo "Par $VDM_Auteur(${VDM_Categorie})"

exit 0

html2text.py

#!/usr/bin/env python
"""html2text: Turn HTML into equivalent Markdown-structured text."""
__version__ = "2.38"
__author__ = "Aaron Swartz (me@aaronsw.com)"
__copyright__ = "(C) 2004-2008 Aaron Swartz. GNU GPL 3."
__contributors__ = ["Martin 'Joey' Schulze", "Ricardo Reyes", "Kevin Jay North"]

# TODO:
#   Support decoded entities with unifiable.

if not hasattr(__builtins__, 'True'): True, False = 1, 0
import re, sys, urllib, htmlentitydefs, codecs, StringIO, types
import sgmllib
import urlparse
sgmllib.charref = re.compile('&#([xX]?[0-9a-fA-F]+)[^0-9a-fA-F]')

try: from textwrap import wrap
except: pass

# Use Unicode characters instead of their ascii pseudo-replacements
UNICODE_SNOB = 0

# Put the links after each paragraph instead of at the end.
LINKS_EACH_PARAGRAPH = 0

# Wrap long lines at position. 0 for no wrapping. (Requires Python 2.3.)
BODY_WIDTH = 78

# Don't show internal links (href="#local-anchor") -- corresponding link targets won't be visible in the plain text file anyway.
SKIP_INTERNAL_LINKS = False

### Entity Nonsense ###

def name2cp(k):
    if k == 'apos': return ord("'")
    if hasattr(htmlentitydefs, "name2codepoint"): # requires Python 2.3
        return htmlentitydefs.name2codepoint[k]
    else:
        k = htmlentitydefs.entitydefs[k]
        if k.startswith("&#") and k.endswith(";"): return int(k[2:-1]) # not in latin-1
        return ord(codecs.latin_1_decode(k)[0])

unifiable = {'rsquo':"'", 'lsquo':"'", 'rdquo':'"', 'ldquo':'"', 
'copy':'(C)', 'mdash':'--', 'nbsp':' ', 'rarr':'->', 'larr':'<-', 'middot':'*',
'ndash':'-', 'oelig':'oe', 'aelig':'ae',
'agrave':'a', 'aacute':'a', 'acirc':'a', 'atilde':'a', 'auml':'a', 'aring':'a', 
'egrave':'e', 'eacute':'e', 'ecirc':'e', 'euml':'e', 
'igrave':'i', 'iacute':'i', 'icirc':'i', 'iuml':'i',
'ograve':'o', 'oacute':'o', 'ocirc':'o', 'otilde':'o', 'ouml':'o', 
'ugrave':'u', 'uacute':'u', 'ucirc':'u', 'uuml':'u'}

unifiable_n = {}

for k in unifiable.keys():
    unifiable_n[name2cp(k)] = unifiable[k]

def charref(name):
    if name[0] in ['x','X']:
        c = int(name[1:], 16)
    else:
        c = int(name)
    
    if not UNICODE_SNOB and c in unifiable_n.keys():
        return unifiable_n[c]
    else:
        return unichr(c)

def entityref(c):
    if not UNICODE_SNOB and c in unifiable.keys():
        return unifiable[c]
    else:
        try: name2cp(c)
        except KeyError: return "&" + c
        else: return unichr(name2cp(c))

def replaceEntities(s):
    s = s.group(1)
    if s[0] == "#": 
        return charref(s[1:])
    else: return entityref(s)

r_unescape = re.compile(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));")
def unescape(s):
    return r_unescape.sub(replaceEntities, s)
    
def fixattrs(attrs):
    # Fix bug in sgmllib.py
    if not attrs: return attrs
    newattrs = []
    for attr in attrs:
        newattrs.append((attr[0], unescape(attr[1])))
    return newattrs

### End Entity Nonsense ###

def onlywhite(line):
    """Return true if the line does only consist of whitespace characters."""
    for c in line:
        if c is not ' ' and c is not '  ':
            return c is ' '
    return line

def optwrap(text):
    """Wrap all paragraphs in the provided text."""
    if not BODY_WIDTH:
        return text
    
    assert wrap, "Requires Python 2.3."
    result = ''
    newlines = 0
    for para in text.split("\n"):
        if len(para) > 0:
            if para[0] is not ' ' and para[0] is not '-' and para[0] is not '*':
                for line in wrap(para, BODY_WIDTH):
                    result += line + "\n"
                result += "\n"
                newlines = 2
            else:
                if not onlywhite(para):
                    result += para + "\n"
                    newlines = 1
        else:
            if newlines < 2:
                result += "\n"
                newlines += 1
    return result

def hn(tag):
    if tag[0] == 'h' and len(tag) == 2:
        try:
            n = int(tag[1])
            if n in range(1, 10): return n
        except ValueError: return 0

class _html2text(sgmllib.SGMLParser):
    def __init__(self, out=None, baseurl=''):
        sgmllib.SGMLParser.__init__(self)
        
        if out is None: self.out = self.outtextf
        else: self.out = out
        self.outtext = u''
        self.quiet = 0
        self.p_p = 0
        self.outcount = 0
        self.start = 1
        self.space = 0
        self.a = []
        self.astack = []
        self.acount = 0
        self.list = []
        self.blockquote = 0
        self.pre = 0
        self.startpre = 0
        self.lastWasNL = 0
        self.abbr_title = None # current abbreviation definition
        self.abbr_data = None # last inner HTML (for abbr being defined)
        self.abbr_list = {} # stack of abbreviations to write later
        self.baseurl = baseurl
    
    def outtextf(self, s): 
        self.outtext += s
    
    def close(self):
        sgmllib.SGMLParser.close(self)
        
        self.pbr()
        self.o('', 0, 'end')
        
        return self.outtext
        
    def handle_charref(self, c):
        self.o(charref(c))

    def handle_entityref(self, c):
        self.o(entityref(c))
            
    def unknown_starttag(self, tag, attrs):
        self.handle_tag(tag, attrs, 1)
    
    def unknown_endtag(self, tag):
        self.handle_tag(tag, None, 0)
        
    def previousIndex(self, attrs):
        """ returns the index of certain set of attributes (of a link) in the
            self.a list
 
            If the set of attributes is not found, returns None
        """
        if not attrs.has_key('href'): return None
        
        i = -1
        for a in self.a:
            i += 1
            match = 0
            
            if a.has_key('href') and a['href'] == attrs['href']:
                if a.has_key('title') or attrs.has_key('title'):
                        if (a.has_key('title') and attrs.has_key('title') and
                            a['title'] == attrs['title']):
                            match = True
                else:
                    match = True

            if match: return i

    def handle_tag(self, tag, attrs, start):
        attrs = fixattrs(attrs)
    
        if hn(tag):
            self.p()
            if start: self.o(hn(tag)*"#" + ' ')

        if tag in ['p', 'div']: self.p()
        
        if tag == "br" and start: self.o("  \n")

        if tag == "hr" and start:
            self.p()
            self.o("* * *")
            self.p()

        if tag in ["head", "style", 'script']: 
            if start: self.quiet += 1
            else: self.quiet -= 1

        if tag in ["body"]:
            self.quiet = 0 # sites like 9rules.com never close <head>
        
        if tag == "blockquote":
            if start: 
                self.p(); self.o('> ', 0, 1); self.start = 1
                self.blockquote += 1
            else:
                self.blockquote -= 1
                self.p()
        
        if tag in ['em', 'i', 'u']: self.o("_")
        if tag in ['strong', 'b']: self.o("**")
        if tag == "code" and not self.pre: self.o('`') #TODO: `` `this` ``
        if tag == "abbr":
            if start:
                attrsD = {}
                for (x, y) in attrs: attrsD[x] = y
                attrs = attrsD
                
                self.abbr_title = None
                self.abbr_data = ''
                if attrs.has_key('title'):
                    self.abbr_title = attrs['title']
            else:
                if self.abbr_title != None:
                    self.abbr_list[self.abbr_data] = self.abbr_title
                    self.abbr_title = None
                self.abbr_data = ''
        
        if tag == "a":
            if start:
                attrsD = {}
                for (x, y) in attrs: attrsD[x] = y
                attrs = attrsD
                if attrs.has_key('href') and not (SKIP_INTERNAL_LINKS and attrs['href'].startswith('#')): 
                    self.astack.append(attrs)
                    self.o("[")
                else:
                    self.astack.append(None)
            else:
                if self.astack:
                    a = self.astack.pop()
                    if a:
                        i = self.previousIndex(a)
                        if i is not None:
                            a = self.a[i]
                        else:
                            self.acount += 1
                            a['count'] = self.acount
                            a['outcount'] = self.outcount
                            self.a.append(a)
                        self.o("][" + `a['count']` + "]")
        
        if tag == "img" and start:
            attrsD = {}
            for (x, y) in attrs: attrsD[x] = y
            attrs = attrsD
            if attrs.has_key('src'):
                attrs['href'] = attrs['src']
                alt = attrs.get('alt', '')
                i = self.previousIndex(attrs)
                if i is not None:
                    attrs = self.a[i]
                else:
                    self.acount += 1
                    attrs['count'] = self.acount
                    attrs['outcount'] = self.outcount
                    self.a.append(attrs)
                self.o("![")
                self.o(alt)
                self.o("]["+`attrs['count']`+"]")
        
        if tag == 'dl' and start: self.p()
        if tag == 'dt' and not start: self.pbr()
        if tag == 'dd' and start: self.o('    ')
        if tag == 'dd' and not start: self.pbr()
        
        if tag in ["ol", "ul"]:
            if start:
                self.list.append({'name':tag, 'num':0})
            else:
                if self.list: self.list.pop()
            
            self.p()
        
        if tag == 'li':
            if start:
                self.pbr()
                if self.list: li = self.list[-1]
                else: li = {'name':'ul', 'num':0}
                self.o("  "*len(self.list)) #TODO: line up <ol><li>s > 9 correctly.
                if li['name'] == "ul": self.o("* ")
                elif li['name'] == "ol":
                    li['num'] += 1
                    self.o(`li['num']`+". ")
                self.start = 1
            else:
                self.pbr()
        
        if tag in ["table", "tr"] and start: self.p()
        if tag == 'td': self.pbr()
        
        if tag == "pre":
            if start:
                self.startpre = 1
                self.pre = 1
            else:
                self.pre = 0
            self.p()
            
    def pbr(self):
        if self.p_p == 0: self.p_p = 1

    def p(self): self.p_p = 2
    
    def o(self, data, puredata=0, force=0):
        if self.abbr_data is not None: self.abbr_data += data
        
        if not self.quiet: 
            if puredata and not self.pre:
                data = re.sub('\s+', ' ', data)
                if data and data[0] == ' ':
                    self.space = 1
                    data = data[1:]
            if not data and not force: return
            
            if self.startpre:
                #self.out(" :") #TODO: not output when already one there
                self.startpre = 0
            
            bq = (">" * self.blockquote)
            if not (force and data and data[0] == ">") and self.blockquote: bq += " "
            
            if self.pre:
                bq += "    "
                data = data.replace("\n", "\n"+bq)
            
            if self.start:
                self.space = 0
                self.p_p = 0
                self.start = 0

            if force == 'end':
                # It's the end.
                self.p_p = 0
                self.out("\n")
                self.space = 0


            if self.p_p:
                self.out(('\n'+bq)*self.p_p)
                self.space = 0
                
            if self.space:
                if not self.lastWasNL: self.out(' ')
                self.space = 0

            if self.a and ((self.p_p == 2 and LINKS_EACH_PARAGRAPH) or force == "end"):
                if force == "end": self.out("\n")

                newa = []
                for link in self.a:
                    if self.outcount > link['outcount']:
                        self.out("   ["+`link['count']`+"]: " + urlparse.urljoin(self.baseurl, link['href'])) 
                        if link.has_key('title'): self.out(" ("+link['title']+")")
                        self.out("\n")
                    else:
                        newa.append(link)

                if self.a != newa: self.out("\n") # Don't need an extra line when nothing was done.

                self.a = newa
            
            if self.abbr_list and force == "end":
                for abbr, definition in self.abbr_list.items():
                    self.out("  *[" + abbr + "]: " + definition + "\n")

            self.p_p = 0
            self.out(data)
            self.lastWasNL = data and data[-1] == '\n'
            self.outcount += 1

    def handle_data(self, data):
        if r'\/script>' in data: self.quiet -= 1
        self.o(data, 1)
    
    def unknown_decl(self, data): pass

def wrapwrite(text): sys.stdout.write(text.encode('utf8'))

def html2text_file(html, out=wrapwrite, baseurl=''):
    h = _html2text(out, baseurl)
    h.feed(html)
    h.feed("")
    return h.close()

def html2text(html, baseurl=''):
    return optwrap(html2text_file(html, None, baseurl))

if __name__ == "__main__":
    baseurl = ''
    if sys.argv[1:]:
        arg = sys.argv[1]
        if arg.startswith('http://'):
            baseurl = arg
            j = urllib.urlopen(baseurl)
            try:
                from feedparser import _getCharacterEncoding as enc
            except ImportError:
                   enc = lambda x, y: ('utf-8', 1)
            text = j.read()
            encoding = enc(j.headers, text)[0]
            if encoding == 'us-ascii': encoding = 'utf-8'
            data = text.decode(encoding)

        else:
            encoding = 'utf8'
            if len(sys.argv) > 2:
                encoding = sys.argv[2]
            data = open(arg, 'r').read().decode(encoding)
    else:
        data = sys.stdin.read().decode('utf8')
    wrapwrite(html2text(data, baseurl))

Dernière modification par Fenouille84 (Le 09/04/2010, à 14:37)


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1846 Le 09/04/2010, à 14:29

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@Fenouille84

avec tes fichiers ca marche !! merciii tongue
(euu tu sais pour les caractères spéciaux ?


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1847 Le 09/04/2010, à 14:37

Fenouille84

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

zydar a écrit :

(euu tu sais pour les caractères spéciaux ?)

C'est à dire ?
Normalement, c'est retranscrit en UTF-8. Donc il ne devrait pas y avoir de soucis avec les accents.
Toutefois, il y avait un souci avec le signe : " (pour les citations), mais je l'ai corrigé.

Quel genre de problème as tu exactement ?


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#1848 Le 09/04/2010, à 15:03

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

LIEN

ça :'(


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne

#1849 Le 09/04/2010, à 15:14

Levi59

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

pour les fortunes tronquées, essaye d'augmenter cette valeure:

text_buffer_size 2048

Hors ligne

#1850 Le 09/04/2010, à 15:20

zydar

Re : (3) Conky : Postez vos conkyrc ou certaines parties intéressantes

@Levi59

je viens de trouvé pour les fortunes j'avais oublié le    | fold -s -w 50

${execi 60 fortune | fold -s -w 50}

aussi un problème dans l'alignement du calendrier sad

${font Visitor TT1 BRK : pixelsize=12}${color3}Calendrier${alignr}Heure${font}
${color8}${voffset -5}${hr}
${color9}${font monaco:pixelsize=12}${offset 62}	
${color8}${execpi 60 DJS=`date +%_d`; cal | sed '/./!d' | sed '1d'  | sed 's/$/                     /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/  /' | sed /" $DJS "/s/" $DJS "/" "'${color3}'"$DJS"'${color8}'" "/}
${font Sans:size=25}${color1}${offset 215}${voffset -80}${time %H}${color2}${offset 1}${voffset -15}${font Sans:size=9}${time :%M:%S}
${offset 260}${color6}Heures

les chiffres ne sont pas sous les jours sad les nombres oui par contre . . .

Dernière modification par zydar (Le 09/04/2010, à 15:51)


- GNU/Linux, c'est la vie :p
-- Les formats ouverts aussi d'ailleurs ! (odt, odf, pdf, png, ...)

Hors ligne