LINUX.ORG.RU

Python + DCOP ?


0

0

Здравствуй :) !

мечтаю сваять простенький скрипт на Python'е для взаимодействия XChat<-->Amarok(v1.2). Идея проста: "легким движением руки"(с) необходимо отослать в канал/приват то, что в данный момент проигрывает amarok. На Perl'е получение информации через DCOP выглядит следующим образом:

... title = `dcop amarok player title` artist = `dcop amarok player artist` ...

Попытки реализовать нечто подобное на Python'е пока безуспешны. Например, вариант

title = os.system("dcop amarok player title")

пишет в консоли название трэка, но в переменную title ничего не передает. Ну ты понял, я полнейший ламак... надеюсь что не на вечно..

PS: любые линки,предложения,пожелания и оскорбления в мой адрес крайне приветствуются PPS: удиви меня

anonymous

когда ковырялся в питоне, столкнулся с такой же проблемой, только надо было получить данные, возвращаемые командами "who" и "uptime". ответа так и не нашел :((( теплицца маленькая надежда на этот трэд

anonymous
()
Ответ на: комментарий от K_X_XyHTA

> popen2?

может я чего-то не так понял, но вот цитата из официальных доков по Python'у:

The only way to retrieve the return codes for the child processes is by using the poll() or wait() methods on the Popen3 and Popen4 classes; these are only available on Unix. This information is not available when using the popen2(), popen3(), and popen4() functions, or the equivalent functions in the os module.

если я прально понимаю, возвращаемая информация (return codes) недоступна, если юзать popen*

PS: удиви меня

anonymous
()
Ответ на: комментарий от anonymous

> popen2?

терь понял о чем ты :) тестовый примерчик...наверное уродский, но все же:

cmd = "dcop amarok player title\n"

r, w, e = popen2.popen3(cmd)

info = r.readline() print info[:-1]

r.close() e.close() w.close()

anonymous
()
Ответ на: комментарий от anonymous

Ну вот видишь :)

По поводу того, что в popen* недоступен код возврата, в Unix, в принципе, довольно легко написать свой вариант, который делает код возврата доступнум. Все эти popen* написаны на Python и просты.

Use source, Luck! (c) Star Wars :)

K_X_XyHTA
()

import commands

title = commands.getoutput("dcop amarok player title")

А вообще-то есть pydcop.

smartly ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.