Code Monkey home page Code Monkey logo

bccc's Introduction

bccc

Welcome to bccc, the buddycloud console client.

Screenshot

They say it's worth a thousand words, so here it is.

Screenshot

There's even a screencast on YouTube.

Installation

bccc is written in Python 3, and is known to work with Python 3.1 and 3.2. It probably won't work with previous versions of Python 3, and it definitely won't work with Python 2.

bccc uses the following libraries:

  • Urwid, a console user interface library (tested with v1.0.1)
  • SleekXMPP, a library for XMPP (tested with v1.1.0)
  • dateutil, everything you need for manipulating dates and times in Python (tested with v2.0)
  • dnspython3, a DNS toolkit (optional)
  • pyasn1 and pyasn1-modules, a library used by SleekXMPP to verify SSL certificates (optional)

You can install them using pip3 (python-pip package in Arch Linux) or easy_install3 (python3-setuptools package in Debian/Ubuntu):

# Global installation (in /usr or /usr/local):
sudo pip3 install urwid sleekxmpp python-dateutil dnspython3 pyasn1{,-modules}
# or
sudo easy_install3 urwid sleekxmpp python-dateutil dnspython3 pyasn1{,-modules}

# User installation (in $HOME):
pip3 install --user urwid sleekxmpp python-dateutil dnspython3 pyasn1{,-modules}
# or
sudo easy_install3 --user urwid sleekxmpp python-dateutil dnspython3 pyasn1{,-modules}

(If you're using Debian/Ubuntu, you will need to install python3-dev and gcc first.)

If you use Arch Linux, you're awesome! And if you have installed yaourt (or any other AUR helper), you can install all of these with the following command:

yaourt -S python-{urwid,sleekxmpp-git,dateutil,dnspython,pyasn1,pyasn1-modules}

After doing all of this, you can install bccc from its Git repository:

git clone git://github.com/Schnouki/bccc.git
cd bccc
python3 setup.py build

# Global installation (in /usr or /usr/local):
sudo python3 setup.py install
# User installation (in $HOME):
python3 setup.py install --user

If you want to hack on bccc, you should install it with develop. It will be installed globally, but will still use the files in your Git checkout, making it easier to test your changes:

# Global "develop" installation (in /usr or /usr/local):
sudo python3 setup.py develop
# User "develop" installation (in $HOME):
python3 setup.py develop --user

If you installed bccc with --user, you must add $HOME/.local/bin to your $PATH.

You should now be able to run bccc by just typing bccc in a terminal emulator. If it complain about a missing configuration file, congratulations, your installation probably works :)

Uninstall

If you don't like bccc, you can uninstall it with pip3:

pip3 uninstall bccc

There may be some leftover files after that if you did a --user or develop install: $HOME/.local/bin/bccc and /usr/bin/bccc. You will have to remove them by hand.

At the moment easy_install does not seem to be capable of uninstalling modules. So if pip3 is not available on your platform (and can't be installed with easy_install3 pip), you will have to uninstall bccc by hand. On my computer I can do it with these commands (as root):

rm /usr/lib/python3.2/site-packages/bccc*
rm /usr/bin/bccc
nano /usr/lib/python3.2/site-packages/easy-install.pth
# remove bccc lines in easy-install.pth

You will probably have to adapt them on your system, for example by using /usr/local instead of /usr.

Troubleshooting

When using easy_install3 or some old versions of setuptools or distribute, bccc won't run but will fail with the following message:

Traceback (most recent call last):
  File "/usr/local/bin/bccc", line 7, in <module>
    execfile(__file__)
NameError: name 'execfile' is not defined

This is due to these versions of setuptools/distribute not being correctly updated for Python 3, where the execfile function is no longer available.

To fix it, edit your /usr/local/bin/bccc file and replace the execfile(__file__) line with the following one:

exec(compile(open(__file__).read(), __file__, 'exec'))

Configuration

Before being able to use bccc, you will need to write a configuration file. The easiest way to do so is actually to run bccc: if no configuration file is found, it will ask for your credentials and create a configuration file using the default one.

If you want to write the configuration file by hand, a good sample is available in the Git repository, in bccc/bccc.conf.sample. You should copy it to ~/.config/bccc/bccc.conf, make sure it is only readable by you (chmod 600 ~/.config/bccc/bccc.conf), and edit it to adjust your login and password.

This configuration file also contains the name of the theme used to render the UI. Two sample themes are bundled with bccc: "dark" for terminals with a dark background, and "light" for terminals with a light backgrounds. You can of course write your own theme; feel free to share it here if you write a nice one!

Basic usage

  • Use the arrow keys to navigate through the interface.
  • Channels are displayed in the sidebar on the left, and their content in the main panel on the right.
  • Channels are sorted by the date of the most recent item in the channel, i.e. most recently updated channels first. Your personal channel will always be the first one at the top.
  • The info bar (top of the main panel) has information about the active channel.
  • The status bar (bottom of the screen) displays relevant messages and can be used for some inputs (see below).

  • When the sidebar is focused, you can browse through your subscribed channels. Press Enter to select one and display it in the main panel.
  • You can go to an arbitrary channel by pressing g and typing the name of the channel. When a post or reply in the main panel is focused, you can press G to go to the author's channel. If you're not subscribed to this channel, its current content will be displayed but it won't update automatically as new content is posted.

  • In the main panel, you can start writing a new post by pressing n, or you can start replying to the focused post/reply by pressing r. After you have typed your message, press Alt+Enter to send it or Escape to cancel.
  • You can also edit an existing post/reply by pressing e.
  • In the main panel, you can press = to force reloading the channel. This is mostly useful when debugging, not for general usage :)
  • In the main panel, you can update the active channel title, status message and description by typing t, s or d.
  • If the focused post/reply contain URLs, you can open them in your browser by pressing o. This is especially useful for URLs longer than one line (other URLs may be handled correctly by your terminal emulator).
  • You can delete the focused post/reply with the delete key.

Posts and replies in the active channel are grouped by thread: first the post, then its replies in chronological order. Most recently updated threads are listed first.

When new content is posted to the active channel, the corresponding thread will be moved to the top, and the view will scroll so that you can see it. If it can't scroll enough without hiding the currently focused item, a message will be displayed in the status bar instead.

When new content is posted to an inactive channel, the channel will be moved to the top of the sidebar and the number of unread items will be displayed next to the channel name.

TODO

  • get PubSub notifications for unsubscribed channels displayed with g/G
  • better handling of Atom elements: should be done in SleekXMPP by registering new stanza types
  • handle errors: private channels, posting forbidden, etc.
  • handle subscriptions, affiliations, moderators, etc.

Patches welcome! :)

Hacking

bccc is free software, available under the terms of the Apache License, version 2.0. You are encouraged to redistribute and modify it as you need. If you wish to contribute to it (by reporting bugs, writing doc or submitting patches), the easiest way is to use the GitHub page.

Contact

If you need help setting up, using or hacking bccc, feel free to contact me:

bccc's People

Contributors

schnouki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bccc's Issues

launch fails on Ubuntu 11.04

bccc
Traceback (most recent call last):
File "/usr/local/bin/bccc", line 5, in
pkg_resources.run_script('bccc==0.0.1', 'bccc')
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 467, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1200, in run_script
exec(compile(open(script_filename).read(), script_filename, 'exec'), namespace, namespace)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/EGG-INFO/scripts/bccc", line 22, in
import bccc.client, bccc.ui
ImportError: No module named client

Instructions don't work on Ubuntu 11.04

$ sudo apt-get install python3-setuptools
[sudo] password for tkoski:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libdb5.1 python3 python3-minimal python3-pkg-resources python3.2
python3.2-minimal
Suggested packages:
python3-doc python3-tk python3-profiler python3.2-doc python3.2-profiler
The following NEW packages will be installed:
libdb5.1 python3 python3-minimal python3-pkg-resources python3-setuptools
python3.2 python3.2-minimal
0 upgraded, 7 newly installed, 0 to remove and 7 not upgraded.
Need to get 6,818 kB of archives.
After this operation, 24.8 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://fr.archive.ubuntu.com/ubuntu/ natty/main libdb5.1 amd64 5.1.19-2ubuntu1 [702 kB]
Get:2 http://fr.archive.ubuntu.com/ubuntu/ natty-updates/main python3.2-minimal amd64 3.2-1ubuntu1.1 [1,821 kB]
Get:3 http://fr.archive.ubuntu.com/ubuntu/ natty-updates/main python3.2 amd64 3.2-1ubuntu1.1 [4,082 kB]
Get:4 http://fr.archive.ubuntu.com/ubuntu/ natty/main python3-minimal all 3.2-1ubuntu1 [12.1 kB]
Get:5 http://fr.archive.ubuntu.com/ubuntu/ natty/main python3 all 3.2-1ubuntu1 [33.1 kB]
Get:6 http://fr.archive.ubuntu.com/ubuntu/ natty/main python3-pkg-resources all 0.6.15-1ubuntu1 [31.8 kB]
Get:7 http://fr.archive.ubuntu.com/ubuntu/ natty/main python3-setuptools all 0.6.15-1ubuntu1 [136 kB]
Fetched 6,818 kB in 10s (622 kB/s)
Selecting previously deselected package libdb5.1.
(Reading database ... 264052 files and directories currently installed.)
Unpacking libdb5.1 (from .../libdb5.1_5.1.19-2ubuntu1_amd64.deb) ...
Selecting previously deselected package python3.2-minimal.
Unpacking python3.2-minimal (from .../python3.2-minimal_3.2-1ubuntu1.1_amd64.deb) ...
Selecting previously deselected package python3.2.
Unpacking python3.2 (from .../python3.2_3.2-1ubuntu1.1_amd64.deb) ...
Selecting previously deselected package python3-minimal.
Unpacking python3-minimal (from .../python3-minimal_3.2-1ubuntu1_all.deb) ...
Selecting previously deselected package python3.
Unpacking python3 (from .../python3_3.2-1ubuntu1_all.deb) ...
Selecting previously deselected package python3-pkg-resources.
Unpacking python3-pkg-resources (from .../python3-pkg-resources_0.6.15-1ubuntu1_all.deb) ...
Selecting previously deselected package python3-setuptools.
Unpacking python3-setuptools (from .../python3-setuptools_0.6.15-1ubuntu1_all.deb) ...
Processing triggers for man-db ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for python-gmenu ...
Rebuilding /usr/share/applications/desktop.en_US.utf8.cache...
Processing triggers for python-support ...
Setting up libdb5.1 (5.1.19-2ubuntu1) ...
Setting up python3.2-minimal (3.2-1ubuntu1.1) ...
Setting up python3.2 (3.2-1ubuntu1.1) ...
Setting up python3-minimal (3.2-1ubuntu1) ...
Setting up python3 (3.2-1ubuntu1) ...
running python rtupdate hooks for python3.2...
running python post-rtupdate hooks for python3.2...
Setting up python3-pkg-resources (0.6.15-1ubuntu1) ...
Setting up python3-setuptools (0.6.15-1ubuntu1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

$ sudo easy_install3 urwid sleekxmpp python-dateutil dnspython3
Searching for urwid
Reading http://pypi.python.org/simple/urwid/
Reading http://excess.org/urwid/
Best match: urwid 1.0.1
Downloading http://excess.org/urwid/urwid-1.0.1.tar.gz
Processing urwid-1.0.1.tar.gz
Running urwid-1.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ch7l0a/urwid-1.0.1/egg-dist-tmp-gbgm95
source/str_util.c:25:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: Setup script exited with error: command 'gcc' failed with exit status 1

Crash when replying to a channel post.

bccc$ bccc

Traceback (most recent call last):
File "/usr/local/bin/bccc", line 8, in
exec(compile(open(file).read(), file, 'exec'))
File "/home/tkoski/tmp/bccc/bin/bccc", line 97, in
ui.run()
File "/home/tkoski/tmp/bccc/bccc/ui/ui.py", line 101, in run
self.loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 274, in run
self.screen.run_wrapper(self._run)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/raw_display.py", line 237, in run_wrapper
return fn()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 307, in _run
self.event_loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 682, in run
self._loop()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 720, in _loop
self._watch_filesfd
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 358, in _update
self.process_input(keys)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 447, in process_input
k = self._topmost_widget.keypress(self.screen_size, k)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/container.py", line 641, in keypress
return self.body.keypress( (maxcol, remaining), key )
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/container.py", line 1390, in keypress
key = w.keypress( (mc,)+size[1:], key )
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/container.py", line 641, in keypress
return self.body.keypress( (maxcol, remaining), key )
File "/home/tkoski/tmp/bccc/bccc/ui/thread.py", line 365, in keypress
key = super().keypress(size, key)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/listbox.py", line 764, in keypress
key = focus_widget.keypress((maxcol,),key)
File "/home/tkoski/tmp/bccc/bccc/ui/util.py", line 41, in keypress
self.validate()
File "/home/tkoski/tmp/bccc/bccc/ui/item.py", line 168, in validate
return super().validate(_args, in_reply_to=self.thread_id, *_kwds)
File "/home/tkoski/tmp/bccc/bccc/ui/item.py", line 151, in validate
self.channel.publish(text, _args, *_kwds)
File "/home/tkoski/tmp/bccc/bccc/client/channel.py", line 245, in publish
res = self.client.ps.publish(self.client.channels_jid, node, payload=entry)
File "/usr/local/lib/python3.2/dist-packages/sleekxmpp-1.0-py3.2.egg/sleekxmpp/plugins/xep_0060/pubsub.py", line 340, in publish
return iq.send(block=block, callback=callback, timeout=timeout)
File "/usr/local/lib/python3.2/dist-packages/sleekxmpp-1.0-py3.2.egg/sleekxmpp/stanza/iq.py", line 205, in send
raise IqError(result)
sleekxmpp.exceptions.IqError

I can reproduce this.

Non-Unicode locales are not supported

schnouki@odin % LC_ALL=C bccc
Traceback (most recent call last):
  File "/usr/bin/bccc", line 7, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/schnouki/dev/bccc/bin/bccc", line 60, in <module>
    if not client.connect():
  File "/usr/lib/python3.2/site-packages/sleekxmpp/clientxmpp.py", line 143, in connect
    reattempt=reattempt)
  File "/usr/lib/python3.2/site-packages/sleekxmpp/xmlstream/xmlstream.py", line 387, in connect
    func=self._connect)
  File "/usr/lib/python3.2/site-packages/sleekxmpp/thirdparty/statemachine.py", line 68, in transition
    func=func, args=args, kwargs=kwargs)
  File "/usr/lib/python3.2/site-packages/sleekxmpp/thirdparty/statemachine.py", line 106, in transition_any
    return_val = func(*args,**kwargs) if func is not None else True
  File "/usr/lib/python3.2/site-packages/sleekxmpp/xmlstream/xmlstream.py", line 398, in _connect
    self.address[1])
  File "/usr/lib/python3.2/site-packages/sleekxmpp/xmlstream/xmlstream.py", line 838, in pick_dns_answer
    self.dns_answers = self.get_dns_records(domain, port)
  File "/usr/lib/python3.2/site-packages/sleekxmpp/clientxmpp.py", line 157, in get_dns_records
    for answer in dns.resolver.query(record, dns.rdatatype.SRV):
  File "/usr/lib/python3.2/site-packages/dns/resolver.py", line 890, in query
    return get_default_resolver().query(qname, rdtype, rdclass, tcp, source,
  File "/usr/lib/python3.2/site-packages/dns/resolver.py", line 879, in get_default_resolver
    default_resolver = Resolver()
  File "/usr/lib/python3.2/site-packages/dns/resolver.py", line 448, in __init__
    self.read_resolv_conf(filename)
  File "/usr/lib/python3.2/site-packages/dns/resolver.py", line 485, in read_resolv_conf
    for l in f:
  File "/usr/lib/python3.2/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 42: ordinal not in range(128)

bccc crashes after a few seconds

I'm using Ubuntu

08:24:39 [zbrown] ~/Desktop/bccc/bccc/bccc$ uname -a
Linux zbrown-desktop 3.0.0-12-generic-pae #20-Ubuntu SMP Fri Oct 7 16:37:17 UTC 2011 i686 i686 i386 GNU/Linux
08:30:09 [zbrown] ~/Desktop/bccc/bccc/bccc$

I followed the instructions on https://github.com/Schnouki/bccc to build and install bccc. But when I run it, I get the following error:

06:34:23 [zbrown] ~/Desktop/bccc/bccc/bccc$ bccc

Traceback (most recent call last):
File "/usr/local/bin/bccc", line 5, in
pkg_resources.run_script('bccc==0.0.1', 'bccc')
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 499, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1236, in run_script
exec(compile(open(script_filename).read(), script_filename, 'exec'), namespace, namespace)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/EGG-INFO/scripts/bccc", line 70, in
ui.run()
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/ui.py", line 101, in run
self.loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/main_loop.py", line 274, in run
self.screen.run_wrapper(self._run)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/raw_display.py", line 237, in run_wrapper
return fn()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/main_loop.py", line 307, in _run
self.event_loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/main_loop.py", line 682, in run
self._loop()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/main_loop.py", line 720, in _loop
self._watch_filesfd
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-i686.egg/urwid/main_loop.py", line 187, in cb
rval = callback(data)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/ui.py", line 135, in _handle_callback
func(_args, *_kwargs)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/sidebar.py", line 76, in pubsub_posts_callback
if atom_pub > self.most_recent_activity:
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/util.py", line 33, in utcoffset
if self._isdst(dt):
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/util.py", line 51, in _isdst
stamp = time.mktime(tt)
OverflowError: mktime argument out of range
08:24:32 [zbrown] ~/Desktop/bccc/bccc/bccc$

Maybe log in status should be displayed

I just configured new bccc installation to my machine.

Of course I did a typo in the username so the machine did not connect to the right server.

Should the "log in workflow" be a bit more verbose? What do you think?

No indication of bad password

If logging in with a wrong password, the only displayed message is

[ERROR] No appropriate login method.
[ERROR] Can not read from closed socket.

There should be something more explicit...

Crash when changing status

I try to change my status (being on my channel, i press 'S', type new status "Allez les Bleus", I press "enter") and bccc crashes. This is the output:

$ bccc

Traceback (most recent call last):
File "/usr/local/bin/bccc", line 7, in
exec(compile(open(file).read(), file, 'exec'))
File "/home/tkoski/tmp/bccc/bin/bccc", line 97, in
ui.run()
File "/home/tkoski/tmp/bccc/bccc/ui/ui.py", line 101, in run
self.loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 274, in run
self.screen.run_wrapper(self._run)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/raw_display.py", line 237, in run_wrapper
return fn()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 307, in _run
self.event_loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 682, in run
self._loop()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 720, in _loop
self._watch_filesfd
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 358, in _update
self.process_input(keys)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 447, in process_input
k = self._topmost_widget.keypress(self.screen_size, k)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/container.py", line 629, in keypress
return self.footer.keypress((maxcol,),key)
File "/home/tkoski/tmp/bccc/bccc/ui/util.py", line 91, in keypress
log.debug("Status bar answer: %s", self.edit.edit_text)
AttributeError: 'SmartStatusBar' object has no attribute 'edit'

On debian, after following the instruction, following fail occurs

$ bccc
Traceback (most recent call last):
File "/usr/local/bin/bccc", line 5, in
pkg_resources.run_script('bccc==0.0.1', 'bccc')
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 467, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1200, in run_script
exec(compile(open(script_filename).read(), script_filename, 'exec'), namespace, namespace)
File "/usr/local/lib/python3.1/dist-packages/bccc-0.0.1-py3.1.egg/EGG-INFO/scripts/bccc", line 39, in
if "log" in conf and "filename" in conf["log"] and len(conf["log"]["filename"]) > 0:
TypeError: argument of type 'ConfigParser' is not iterable

When opening channel of [email protected] -> client crashed

$ bccc

Traceback (most recent call last):
File "/usr/local/bin/bccc", line 5, in
pkg_resources.run_script('bccc==0.0.1', 'bccc')
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 467, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1200, in run_script
exec(compile(open(script_filename).read(), script_filename, 'exec'), namespace, namespace)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/EGG-INFO/scripts/bccc", line 70, in
ui.run()
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/ui.py", line 101, in run
self.loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 274, in run
self.screen.run_wrapper(self._run)
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/raw_display.py", line 237, in run_wrapper
return fn()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 307, in _run
self.event_loop.run()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 682, in run
self._loop()
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 720, in _loop
self._watch_filesfd
File "/usr/local/lib/python3.2/dist-packages/urwid-1.0.1-py3.2-linux-x86_64.egg/urwid/main_loop.py", line 187, in cb
rval = callback(data)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/ui.py", line 135, in _handle_callback
func(_args, *_kwargs)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/sidebar.py", line 87, in pubsub_posts_callback
self.ui.threads_list.add_new_items(atoms)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/thread.py", line 311, in add_new_items
self.content.add(item)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/thread.py", line 197, in add
thr[0] = PostWidget(item)
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/ui/item.py", line 87, in init
text = post.content
File "/usr/local/lib/python3.2/dist-packages/bccc-0.0.1-py3.2.egg/bccc/client/atom.py", line 55, in content
text = self.get_child("content").text
AttributeError: 'NoneType' object has no attribute 'text'

Handle private channels

There should be an indication that a channel is private instead of just showing it as empty. It should also be possible to try to follow it (#10).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.