Hallo,
habe ein sehr minimalistisches problem also ist nichts dringendes.
& zwar benutze ich als WM Openbox.
& habe ein RSS-Feed eingebaut das mir die aktuellsten packages anzeigt von Arch Linux.
Nur leider dauert das bestimmt 50 sekunden um es anzuzeigen im Menu.
Bei Slackware war das gleiche problem.
Bei Klicki-bunti allerdings nicht,

habt ihr eine idee?

lg tobi
Kannst du mal genauer werden ?
Du hast ein Script geschrieben, das RSS-Feeds irgendwo holt und die schreibst du in ein Menü.
Vom Erzeugen des Menüs bis zur Anzeigeim Menü vergehen 50 sek.

Ist das so richtig ?

Jean-Paul
jawohl. nur das ich das skript nicht selber geschrieben habe sondern von icculus.org
also nochmal.

Ich habe als Pipe Menu ein RSS-skript ( python ) welches sich zu laden ungefähr 50 sek. dauert.

lg tobi
raw schrieb habt ihr eine idee?
Lasse das Script per Cronjob alle N Minuten den RSS-Feed abfragen, und den Kram mit allem drum und dran in eine Datei schreiben. Statt das Script aufzurufen macht die Pipemenu-Funcion jetzt nichts weiter, als die Datei mittels cat auszugeben.
Schreibe ans Ende des Scripts
openbox --reconfigure
das aktuallisiert auch das Menü.

Jean-Paul
@ Dirk Sohler : kannst du es bisschen genauer erläutern mit den Cronjobs?
hatte schonmal was damit gemacht aber mithilfe von ESCAPADO falls du den aus dem Ubuntuusers forum kennst 🙂

@jean-paul : werd ich machen 🙂

lg tobi
Habe jetzt mit gnome-schedule ein cronjob angelegt.
der:
Wiederholend Zu jeder Vollen stunde pthon /home/raw/Skripte/feeder.py

ausführt. aber ein unterschied merk ich immernoch nicht

ich habe auch no output > /dev/null 2>&1 angekreuzt.

woran liegts?

lg tobo
raw schrieb @ Dirk Sohler : kannst du es bisschen genauer erläutern mit den Cronjobs?
hatte schonmal was damit gemacht aber mithilfe von ESCAPADO falls du den aus dem Ubuntuusers forum kennst 🙂
Sorry wenn ich mich hier einmische und gleichden Oberlehrer spiele, aber ich bin der Meinung man könnte wenigstens versuchen selbst eine Lösung zu finden. Wo ist denn sonst der Lerneffekt? Ich meine Arch ist nunmal nicht unbedingt die Einsteiger Distribution und du musst dich hier mit vielen - vorallem auch grundlegenden - Dingen auseinander setzen. Zum Thema cronjobs findet man nun wirklich viel im Netz...

Schau dir doch mal das hier: http://de.wikibooks.org/wiki/Linux-Kompendium und dort vorallem den Artikel: http://de.wikibooks.org/wiki/Linux-Kompendium:_Crontab an (und die Links auf der Seite). Das Forum (und ich natürlich auch) helfen dir sehr gerne, aber (meine Meinung!) du solltest auch ein bisschen was tun. :-]

So, Oberlehrer-Modus aus... Wenns Probleme gibt meld' dich bitte wieder 😉

EDIT: ich sehe gerade das du dich doch damit auseinander gesetzt hast. Ich nehme alles zurück und behaupte das Gegenteil. Entschuldigung!
@ stigmayta : warum oberlehrer? ist doch völlig gerechtfertigt. aber das trifft auf mich nicht zu denn, ich habe mich schon bisschen länger damit beschäftigt und mein Kofler sagt mir auch einiges dazu.
sprich also ich habe erst den Thread aufgemacht als ich nicht mehr weiter wusste.
ich bin auch eher eine person die erst experimentiert bevor man systemmatisch an die sache geht 🙂

nur so als rechtfertigung :lol:

lg tobi
raw schrieb woran liegts?
An Gnome-Schedule 😉 Bearbeite den Cronjob ganz normal manuell über „crontab -e“, und hänge an den Befehlsaufruf hinten einfach ein „> /zieldatei“ an. Stichwort: Ausgabeumleitung.
hallo 🙂
also habe jetzt bestimmt 4 tage und unzählige versuche gebraucht. & ?
es ist immernoch nichts ^^
> crontab -l gibt aus:
0 * * * * python /home/raw/Skripte/feeder.py #JOB_ID_1

in Gnome-schedule sagt er aus / jede stunde / aber das openbox menu bleibt trzd. so lahm bzw. nur der Skript öffnet sich lahm.

was soll ich tun?

lg tobi
keiner eine idee?
Bei solchen Fragen wird dir niemand helfen können. Du musst schon genauer werden.

Wie sieht das Script aus und wie dein Pipemenü ?

Jean-Paul
also feeder.py sieht wie folgt aus:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#-------------------------------------------------------------------------------

feeder.py - version 6
by Vlad George

#-------------------------------------------------------------------------------

Description:
    This script pipes rss and podcast feeds into the openbox menu

Usage:
    First you need the python-feedparser module (archlinux [extra]/ ubuntu).
    Place this script under ~/.config/openbox/scripts, edit the variables under "User set variables"
    according to your likings (your list of rss_urls, browser and media-player to open links,
    number of displayed rss-entries, enable/disable caching of feeds, maximum age of feeds),
    make it executable, then add following to your ~/.config/openbox/menu.xml:
    "<menu id="feeder-menu" label="rss-feeds" execute="~/.config/openbox/scripts/feeder.py" />...
    <menu id="root-menu" label="Openbox3">...<menu id="feeder-menu" />...</menu>"
    and reconfigure openbox.

Changelog:
    01.07.2007:   1st version
    03.07.2007:   works now (changed "~")....
    05.07.2007:   added cache
    07.10.2007:   added name of rss and sorted output
    03.2008:      added podcast support
    06.2008:      uses python's internal python-feedparser module

#-------------------------------------------------------------------------------

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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
http://www.fsf.org/

"""

#-------------------------------------------------------------------------------             
#                             User set variables
#-------------------------------------------------------------------------------             

## your rss feeds:
rss_urls = [
            #('name to be shown', 'url of rss'),
            ('Arch Packages', 'http://www.archlinux.org/feeds/packages/'),
            #('', ''),
            #('', ''),
            #('', ''),
         ]

## browser and audio/video-player to use:
# open_with = "gnome-open"
open_with = "opera"
play_with = "audacious -e"

## how many entries should be shown:
rss_feeds_count = 60

## use cache (1 enabled, 0 disabled)
cache = 0

### if cache enabled:

## how old should cache files get - in minutes; set to 0 for manual refresh:
## you can also use >> feeder.py --update << to only update the cache file (useful as cronjob)
age = 120

## temporary directory for cache file (default=/tmp/); leave it as it is.
cache_dir = "/tmp"


#-------------------------------------------------------------------------------
#                                   Script
#-------------------------------------------------------------------------------


# {{{ ##  fold marker start

def gettingTitles(url_list):
    # get feeds for each url:
    rss_dict = {}
    for i in xrange(len(url_list)):

        rss = feedparser.parse(url_list[i][1])
        rss_entry = []
        try:
            append = rss_entry.append
            if rss.entries[i].has_key('link') == False:
                [append((rss.entries[num].title, None, rss.entries[num].enclosures[0].href)) for num in xrange(rss_feeds_count)]
            elif rss.entries[i].has_key('enclosures') == False:
                [append((rss.entries[num].title, rss.entries[num].link, None)) for num in xrange(rss_feeds_count)]
            else:
                [append((rss.entries[num].title, rss.entries[num].link, rss.entries[num].enclosures[0].href)) for num in xrange(rss_feeds_count)]
        except IndexError:
            pass
        try:
            if url_list[i][0] == '':
                rss_dict[(rss.feed.title, url_list[i][1])] = rss_entry[0:int(rss_feeds_count)]
            else:
                rss_dict[(url_list[i][0], url_list[i][1])] = rss_entry[0:int(rss_feeds_count)]
        except:
            pass
    # rss_dict-items: { ..., ([i][0]:> rss-url, [i][1]:> rss-name):[..., ([i][j][0]:> entry-title, [i][j][1]:> entry-link, [i][j][2]:> entry-podcast_link), ...], ... }
    return rss_dict


def generateXml(dict_url_entry, outfile):
    # sort dict items according display name
    sorted_list = dict_url_entry.items()
    sorted_list.sort()
    # [ ..., (([i][0][0] -> rss-name, [i][0][1] -> rss-url), [..., ([i][1][j][0] -> entry-title, [i][1][j][1] -> entry-link, [i][1][j][2]:> entry-podcast_link), ...]), ... ]
    root = ET.Element("openbox_pipe_menu")
    for i in xrange(len(sorted_list)):
        menu = ET.SubElement(root,"menu", attrib = {"id" : sorted_list[i][0][1], "label" : unicode(sorted_list[i][0][0])})
        for j in xrange(len(sorted_list[i][1])):
            try:
                if sorted_list[i][1][j][2] == None:
                    item = ET.SubElement(menu, "item", attrib = {"label" : unicode(sorted_list[i][1][j][0])})
                    action = ET.SubElement(item, "action", attrib = {"name" : "Execute"})
                    command = ET.SubElement(action, "command")
                    tmp = str(sorted_list[i][1][j][1]).replace('~','%7E')
                    command.text = "%s %s" % (open_with, tmp)
                elif sorted_list[i][1][j][1] == None:
                    podcast_menu = ET.SubElement(menu, "menu", attrib = {"id" : str(int(random.random()*10000000)) + "-menu", "label" : unicode(sorted_list[i][1][j][0])})
                    podcast_play = ET.SubElement(podcast_menu, "item", attrib = {"label" : " play podcast"})
                    podcast_play_action = ET.SubElement(podcast_play, "action", attrib = {"name": "Execute"})
                    podcast_play_execute = ET.SubElement(podcast_play_action, "command")
                    tmp = str(sorted_list[i][1][j][2]).replace('~','%7E')
                    podcast_play_execute.text = "%s %s" % (play_with, tmp)
                else:
                    podcast_menu = ET.SubElement(menu, "menu", attrib = {"id" : str(int(random.random()*10000000)) + "-menu", "label" : unicode(sorted_list[i][1][j][0])})
                    podcast_open = ET.SubElement(podcast_menu, "item", attrib = {"label" : " open "})
                    podcast_open_action = ET.SubElement(podcast_open, "action", attrib = {"name": "Execute"})
                    podcast_open_execute = ET.SubElement(podcast_open_action, "command")
                    tmp1 = str(sorted_list[i][1][j][1]).replace('~','%7E')
                    podcast_open_execute.text = "%s %s" % (open_with, tmp1)
                    podcast_play = ET.SubElement(podcast_menu, "item", attrib = {"label" : " play podcast"})
                    podcast_play_action = ET.SubElement(podcast_play, "action", attrib = {"name": "Execute"})
                    podcast_play_execute = ET.SubElement(podcast_play_action, "command")
                    tmp2 = str(sorted_list[i][1][j][2]).replace('~','%7E')
                    podcast_play_execute.text = "%s %s" % (play_with, tmp2)
            except IndexError:
                pass
    if cache == 1:
        separator = ET.SubElement(root,"separator")
        refresh = ET.SubElement(root,"item", attrib = {"label":"Reload Cache"})
        action2 = ET.SubElement(refresh,"action",attrib = {"name":"Execute"})
        command2 = ET.SubElement(action2,"command")
        command2.text = "%s %s" % (sys.argv[0], "--update")
    tree = ET.ElementTree(root)
    tree.write(outfile)


def ageCheck(age_in_min, file_to_check):
    age_in_sec = int(age_in_min)*60
    file_age = int(time())-int(os.path.getmtime(file_to_check))
    if age_in_min == 0:
        return 1
    elif os.path.isfile(file_to_check) and file_age < age_in_sec:
        return 1
    else:
        return 0


def printXml(xml_entry):
    temp_file = file(xml_entry,'r')
    a = temp_file.read()
    temp_file.close()
    print a


#-------------------------------------------------------------------------------             
#                                    Main
#-------------------------------------------------------------------------------             
import os.path, sys, feedparser
import xml.etree.ElementTree as ET
import random
from time import time

#-------------------------#
if __name__ == "__main__" :
#-------------------------#
    if cache == 1:
        cache_file = cache_dir + "/." + str(os.path.split(sys.argv[0])[1]) + "-" + str(os.getuid()) + ".cache"
        if ('--update' in sys.argv[1:]):
            generateXml(gettingTitles(rss_urls), cache_file)
        elif os.path.isfile(cache_file) and ageCheck(age, cache_file):
            print '<?xml version="1.0" encoding="UTF-8"?>'
            printXml(cache_file)
        else:
            generateXml(gettingTitles(rss_urls), cache_file)
            print '<?xml version="1.0" encoding="UTF-8"?>'
            printXml(cache_file)
    else:
        print '<?xml version="1.0" encoding="UTF-8"?>'
        generateXml(gettingTitles(rss_urls), sys.stdout)


# }}} ##  fold marker end

# vim: set ft=python ts=4 sw=4 foldmethod=marker :
& Pipemenu einfach per Obmenu eingehängt als Pipemenu.

lg tobi

EDIT: habe es ebend mit Der Tagesschau RSS probiert gleiches Resultat.
Vllt. Kann es ja mal jem. anderes in seinem Menü einbauen und Sein ergebniss mitteilen.
Kannst du die entsprechende Passage aus deiner menu.xml posten ?

Das Script alleine funktioniert, z.B. im Terminal ?

Jean-Paul
Hier der ausschnitt von der Menu.xml:
<menu execute="/home/raw/Skripte/feeder.py" id="pipe-284658" label="RSS"/>
		<separator/>
..

Im Terminal läufts ja aber: erst nach 30-40 sek
<?xml version="1.0" encoding="UTF-8"?>
<openbox_pipe_menu><menu id="http://www.archlinux.org/feeds/packages/"                                                                                                                label="Arch Packages"><item label="twinkle 1.4.1-1 x86_64"><action name                                                                                                               ="Execute"><command>opera http://www.archlinux.org/packages/extra/x86_6                                                                                                               4/twinkle/</command></action></item><item label="kdevelop 3.9.91-1 x86_                                                                                                               64"><action name="Execute"><command>opera http://www.archlinux.org/pack                                                                                                               ages/testing/x86_64/kdevelop/</command></action></item><item label="lib                                                                                                               sndfile 1.0.18-1 x86_64"><action name="Execute"><command>opera http://w                                                                                                               ww.archlinux.org/packages/extra/x86_64/libsndfile/</command></action></                                                                                                               item><item label="pycups 1.9.45-1 x86_64"><action name="Execute"><comma                                                                                                               nd>opera http://www.archlinux.org/packages/extra/x86_64/pycups/</comman                                                                                                               d></action></item><item label="system-config-printer 1.1.3-1 x86_64"><a                                                                                                               ction name="Execute"><command>opera http://www.archlinux.org/packages/e                                                                                                               xtra/x86_64/system-config-printer/</command></action></item><item label                                                                                                               ="binutils 2.19.1-1 x86_64"><action name="Execute"><command>opera http:                                                                                                               //www.archlinux.org/packages/core/x86_64/binutils/</command></action></                                                                                                               item><item label="ed 1.2-1 x86_64"><action name="Execute"><command>oper                                                                                                               a http://www.archlinux.org/packages/core/x86_64/ed/</command></action><                                                                                                               /item><item label="file 5.00-1 x86_64"><action name="Execute"><command>                                                                                                               opera http://www.archlinux.org/packages/core/x86_64/file/</command></ac                                                                                                               tion></item><item label="patch 2.5.9-2 x86_64"><action name="Execute"><                                                                                                               command>opera http://www.archlinux.org/packages/core/x86_64/patch/</com                                                                                                               mand></action></item><item label="tzdata 2009a-1 x86_64"><action name="                                                                                                               Execute"><command>opera http://www.archlinux.org/packages/core/x86_64/t                                                                                                               zdata/</command></action></item><item label="libsndfile 1.0.18-1 i686">                                                                                                               <action name="Execute"><command>opera http://www.archlinux.org/packages                                                                                                               /extra/i686/libsndfile/</command></action></item><item label="binutils                                                                                                                2.19.1-1 i686"><action name="Execute"><command>opera http://www.archlin                                                                                                               ux.org/packages/core/i686/binutils/</command></action></item><item labe                                                                                                               l="ed 1.2-1 i686"><action name="Execute"><command>opera http://www.arch                                                                                                               linux.org/packages/core/i686/ed/</command></action></item><item label="                                                                                                               file 5.00-1 i686"><action name="Execute"><command>opera http://www.arch                                                                                                               linux.org/packages/core/i686/file/</command></action></item><item label                                                                                                               ="patch 2.5.9-2 i686"><action name="Execute"><command>opera http://www.                                                                                                               archlinux.org/packages/core/i686/patch/</command></action></item><item                                                                                                                label="tzdata 2009a-1 i686"><action name="Execute"><command>opera http:                                                                                                               //www.archlinux.org/packages/core/i686/tzdata/</command></action></item                                                                                                               ><item label="kdevplatform 0.9.91-1 x86_64"><action name="Execute"><com                                                                                                               mand>opera http://www.archlinux.org/packages/testing/x86_64/kdevplatfor                                                                                                               m/</command></action></item><item label="kdevplatform 0.9.91-1 i686"><a                                                                                                               ction name="Execute"><command>opera http://www.archlinux.org/packages/t                                                                                                               esting/i686/kdevplatform/</command></action></item><item label="kdevelo                                                                                                               p 3.9.91-1 i686"><action name="Execute"><command>opera http://www.archl                                                                                                               inux.org/packages/testing/i686/kdevelop/</command></action></item><item                                                                                                                label="kdebase-workspace 4.2.0-6 i686"><action name="Execute"><command                                                                                                               >opera http://www.archlinux.org/packages/extra/i686/kdebase-workspace/<                                                                                                               /command></action></item><item label="pycups 1.9.45-1 i686"><action nam                                                                                                               e="Execute"><command>opera http://www.archlinux.org/packages/extra/i686                                                                                                               /pycups/</command></action></item><item label="system-config-printer 1.                                                                                                               1.3-1 i686"><action name="Execute"><command>opera http://www.archlinux.                                                                                                               org/packages/extra/i686/system-config-printer/</command></action></item                                                                                                               ><item label="xfce4-xkb-plugin 0.5.3.2-1 x86_64"><action name="Execute"                                                                                                               ><command>opera http://www.archlinux.org/packages/testing/x86_64/xfce4-                                                                                                               xkb-plugin/</command></action></item><item label="xfce4-power-manager 0                                                                                                               .6.1-1 x86_64"><action name="Execute"><command>opera http://www.archlin                                                                                                               ux.org/packages/testing/x86_64/xfce4-power-manager/</command></action>
was ist falsch?
Also ich hab das mal bei mir installiert - und es geht!!
Das Script funktioniert.
Meine menu.xml sieht so aus (ich schreib das mal auf deine Verhältnisse um):
 .... 
<menu id="feeder-menu" label="rss-feeds" execute="/home/raw/Skripte/feeder.py" />
 
<menu id="root-menu" label="Openbox 3"> 
    <menu id="feeder-menu" /> 
....
Die wichtige Zeile ist
<menu id="root-menu" label="Openbox 3">
die schon in deiner menu.xml steht (schau nach, nicht nur kopieren). Der Scriptaufruf muss vor dieser Zeile stehen, der Menüeintrag danach.

Jean-Paul
danke erstmal für dein willen mir zu helfen 🙂

aber wie du auf dem Foto siehst ist alles richtig. (hoffentlich nicht)

es funktioniert zwar aber mit 30 sek. verzögerung. warum? 🙁

lg tobi
Also das verstehe ich nicht.

Hast du im Script etwas verändert?
Ich gehe mal davon aus, du hast "python-feedparser" installiert und das Script ausführbar gemacht (chmod).

Wenn ich feeder.py im Terminal aufrufe, dann erscheinen nach ca 1-2 sec. die Einträge. Warum das bei dir im Terminal mehr als 30 sec. dauert ist mir ein Rätzel.
Ist deine Internetverbindung okay ? Hast du ipv6 abgeschaltet ?
http://wiki.archlinux.org/index.php/IPv6_-_Disabling_the_Module
http://wiki.archlinux.de/title/Firefox#IPv6_deaktivieren

Jean-Paul