leonjza / tli

Twitter (command) Line Interface
MIT License
4 stars 1 forks source link

Python 3 ready? #1

Open kseistrup opened 8 years ago

kseistrup commented 8 years ago

Is this app Python 3 ready?

I had do make the following changes in order to install with Python 3.5 and run the script:

diff --git a/tli/cli.py b/tli/cli.py
index f1a3add..8e917fe 100644
--- a/tli/cli.py
+++ b/tli/cli.py
@@ -21,8 +21,8 @@
 # SOFTWARE.

 import click
-from util.config import readconfig
-from util.twitter import Twitter
+from .util.config import readconfig
+from .util.twitter import Twitter

 def banner():
diff --git a/tli/util/config.py b/tli/util/config.py
index 4fb04b3..75778ca 100644
--- a/tli/util/config.py
+++ b/tli/util/config.py
@@ -20,11 +20,16 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 # SOFTWARE.

-from ConfigParser import SafeConfigParser
+import sys
+
+if sys.version_info < (3, 5):
+    from ConfigParser import SafeConfigParser
+else:
+    from configparser import SafeConfigParser

 import click
 import os
-from crypto import encrypt, decrypt
+from .crypto import encrypt, decrypt

 userhome = os.path.expanduser('~')
 confighome = os.path.join(userhome, '.tli.conf')

And even so the script failed when trying to print the first tweet it had fetched:

[*] First time setup complete.

2016-02-23 18:00:14 [en] @b'AJENews' (b'AJE News') via 'b'SocialFlow'' | https://twitter.com/statuses/702191248539525120
 "b"Obama's plan to close Guantanamo submitted to Congress https://t.co/VllEkUZ5gu https://t.co/xL3KK9uhhn""
Traceback (most recent call last):
  File "/usr/bin/tli", line 9, in <module>
    load_entry_point('tli==2.0', 'console_scripts', 'tli')()
  File "/usr/lib/python3.5/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.5/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.5/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/usr/lib/python3.5/site-packages/tli/cli.py", line 86, in timeline
    twitter.stream.userstream()
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 394, in userstream
    self._start(async)
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 361, in _start
    self._run()
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 294, in _run
    raise exception
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 263, in _run
    self._read_loop(resp)
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 324, in _read_loop
    self._data(next_status_obj)
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 297, in _data
    if self.listener.on_data(data) is False:
  File "/usr/lib/python3.5/site-packages/tweepy/streaming.py", line 54, in on_data
    if self.on_status(status) is False:
  File "/usr/lib/python3.5/site-packages/tli/util/twitter.py", line 97, in on_status
    self._print_status(status)
  File "/usr/lib/python3.5/site-packages/tli/util/twitter.py", line 151, in _print_status
    self._print_urls(status.entities['urls'])
  File "/usr/lib/python3.5/site-packages/tli/util/twitter.py", line 168, in _print_urls
    urls = '\n'.join(['Url: ' + x['expanded_url'].encode('utf-8') for x in urls])
  File "/usr/lib/python3.5/site-packages/tli/util/twitter.py", line 168, in <listcomp>
    urls = '\n'.join(['Url: ' + x['expanded_url'].encode('utf-8') for x in urls])
TypeError: Can't convert 'bytes' object to str implicitly
leonjza commented 8 years ago

I have not tested on Python 3 yet but getting it to work shouldn't be much of a problem.