Giter VIP home page Giter VIP logo

leselys's Introduction

Hello World!

toxinu's Twitter toxinu's Linkdein toxinu's Gitlab toxinu's Github toxinu's Gitlab toxinu's Github

I am toxinu

Hej, I’m Geoffrey L., Fullstack Software Engineer / DevOps working remotely from Stockholm, Sweden πŸ‡ΈπŸ‡ͺ.

My work is full of Python, Django, Javascript, React, Vue.js, Linux and Sysop. <3 Open source.

🧐 About

I post stuff on my blog. I love to share my photographs on Instagram, play video games and watch anime.

⚑ Technologies

Talk to me about

  • Backend development using Python & Golang
  • Front-end development using React, Vue.js, Typescript
  • Devops using Terraform, Kubernetes, AWS, GCP, Consul, Ansible
Want to see some of my photography? πŸ“Έ Photography example 1 Photography example 2

leselys's People

Contributors

mblakele avatar prologic avatar toxinu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leselys's Issues

Things to do on responsive design

  • Bigger icons at the top of the screen
  • Bigger typo on feeds list
  • Maybe remove html content of story after collapse it ?
  • Better visual separator between feeds
  • Better visual separator between feed list and stories

Websocket for Refresher

Actual refresh module is not very nice, this is the internal job:

  • Ajax send a request for each feed to Web server
  • Web server do all the job in a specific thread and response to request (seems legit)

But during this time, UI is frozen until all requests have it's response from web server.

I think, do all the job in async and leave the Web Ui waiting for webscocket response could increase user experience.

Any idea or comment ?

undocumented dependency on sofart

Users following the brief 'tutorial' on setting up locally (the sequence ending in leselys serve) will also need to pip install sofart, or they will get an ImportError when backends._sofart tries to import from the sofart module. Either sofart should be installed along with other dependencies from the setup.py install_requires, or at least the need to install it should be documented along with the local testing instructions.

Prettier syntax for generating the config

Instead of

echo_leselys_conf > leselys.ini

It would be nice to wrap this into the leselys command, e.g.

leselys init --config leselys.ini

this is cosmetic: one less command and looks slightly cleaner in the doc. Not very important

Requirements to build leselys

Hi,

I am the same [johnchristopher][https://news.ycombinator.com/item?id=5396199] from hackernews.

I double-checked the requirements I gave you earlier for building and running leselys in a virtual ubuntu 12.10 32bits.

I found out python-libxml2/libxslt1 packages are not needed:

~ $ sudo apt-get install build-essential python-pip python-dev libxml2-dev libxslt1-dev
~ $ sudo pip install sofart    # order matters
~ $ sudo pip install leselys

Sorry for letting that one slips.

Add some caches

Prevent refresh button spam which cause huge server charge.

Freeze when importing opml file

Hey there.
When I import my OPML file, the button stays on the "loading" state and freeze. I have to manually refresh the page to see my feeds imported. It works, but this is the server log :

127.0.0.1 - - [20/Mar/2013 23:02:51] "POST /api/import/opml HTTP/1.1" 200 -
Exception in thread Thread-9:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 111, in save
    self.db._add_id(record_id)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 84, in _add_id
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 78, in _update
    raise DatabaseError('Update problem')
DatabaseError: 'Update problem'

Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 111, in save
    self.db._add_id(record_id)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 84, in _add_id
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 78, in _update
    raise DatabaseError('Update problem')
DatabaseError: 'Update problem'

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 110, in save
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 84, in _update
    raise CollectionException('Seems to be invalid (%s)' % err)
CollectionException: Seems to be invalid (dictionary changed size during iteration)

Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 110, in save
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 84, in _update
    raise CollectionException('Seems to be invalid (%s)' % err)
CollectionException: Seems to be invalid (dictionary changed size during iteration)

Exception in thread Thread-10:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 110, in save
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 84, in _update
    raise CollectionException('Seems to be invalid (%s)' % err)
CollectionException: Seems to be invalid (dictionary changed size during iteration)

Exception in thread Thread-11:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/grena/workspace/web/leselys/leselys/reader.py", line 160, in add
    'last_update': feed_update})
  File "/home/grena/workspace/web/leselys/leselys/backends/storage/_sofart.py", line 55, in add_feed
    return self.db.feeds.save(content)
  File "/usr/local/lib/python2.7/dist-packages/sofart/collection.py", line 111, in save
    self.db._add_id(record_id)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 84, in _add_id
    self._update(tmp)
  File "/usr/local/lib/python2.7/dist-packages/sofart/database.py", line 78, in _update
    raise DatabaseError('Update problem')
DatabaseError: 'Update problem'

Feed or story url handler

Be able to handle url like http://localhost:5000/#6e48ee8f1b134f80bf5f12ae23d76c2a and automagically guess story.

Feed guesser relative url

I've try the feed guesser you just pull requested @orva and it cant handle relative url like on my website.

The Reader object just try the get feed at http:///atom.xml I think.

So maybe it's just invalid to put relative path in this meta tag? I don't really know what's the standard about it.

Feed guesser

Be able to guess feed when you give:

http://socketubs.net

Right:
http://socketubs.net/feed.xml

Change refresher system

The refresh all javascript button must send request for every feed and not full batch to server to allow a more dynamical display of unreaded story.

Feed return with content-type: "text/html"

So ok, we gonna hate webserver programmers.
Some of my feeds return content-type: text/html instead of of content-type: application/rss+atom for example.

Maybe it's not a good thing to believe webservers content type guessers and we have could try ourselves to detect if it's a xml (feed) file before trying a HTTP request to find meta tags ?

Python 3 support

It would nice to be able to run this on Python 3.

However, I believe that this would be prevented by the lag in Flask/Werkzeug being ported to Python 3, unless they decide to port it.

Star story

It could be cool to be able to "star" story, like on google reader.

Feed guesser system proxy

@orva

You use httplib for feed guesser but it don't handle HTTP/HTTPS proxies configured on system (with http_proxy variable for example). I admit it's a special situation.

There are two solutions, switch to requests library which automagically handle it, or handle it with os.environ and httplib2 internals Proxy support.

I think it could be better to use requests, it will allow use to reduce deps by one and by more homogeneous.

Edit: I just see that we don't use requests module. But I still prefer switch httplib2 by requests. πŸ˜„

SQLAlchemy storage backend

It could be cool to have a sqlite storage backend for the quick start installation.
Instead of sofart which is more a personal quick and dirty in-memory database.

And in-memory is totally not for an RSS reader.

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.