aboutsummaryrefslogtreecommitdiff
path: root/xboomx
diff options
context:
space:
mode:
authorVictor Häggqvist <[email protected]>2015-05-18 19:12:50 +0200
committerVictor Häggqvist <[email protected]>2015-05-18 19:12:50 +0200
commit0ee00536e6c1a64dadc4da17a545d3c17165fa64 (patch)
tree1be37d5e535bf438f47a225ac86973aa6b58cb33 /xboomx
parentc73fb7a540da704ddf5195e4f5261db853166061 (diff)
update to support python 3v0.7.0
Diffstat (limited to 'xboomx')
-rw-r--r--xboomx/bin/web_xboomx13
-rwxr-xr-xxboomx/bin/xboomx53
-rwxr-xr-xxboomx/bin/xboomx_path.py22
-rwxr-xr-x[-rw-r--r--]xboomx/bin/xboomx_sort.py35
-rw-r--r--xboomx/bin/xboomx_update.py34
-rw-r--r--xboomx/bin/xboomx_urls.py15
-rw-r--r--xboomx/db.py13
-rw-r--r--xboomx/sqlitemgr.py38
8 files changed, 116 insertions, 107 deletions
diff --git a/xboomx/bin/web_xboomx b/xboomx/bin/web_xboomx
deleted file mode 100644
index 67baba3..0000000
--- a/xboomx/bin/web_xboomx
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-from xboomx.config import config
-
-
-DMENU_LAUNCHER = 'dmenu ' + config.get("dmenu_params", "")
-
-subprocess.call("""xboomx_urls.py | xboomx_sort.py urls | \
- """ + DMENU_LAUNCHER + """| \
- xboomx_update.py urls | \
- xargs -I {} sh -c \'exec firefox {} &\'""",
- shell=True)
diff --git a/xboomx/bin/xboomx b/xboomx/bin/xboomx
index c8865dc..98641ee 100755
--- a/xboomx/bin/xboomx
+++ b/xboomx/bin/xboomx
@@ -1,35 +1,38 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+__author__ = 'Victor Häggqvist, Yuriy Netesov'
+__copyright__ = 'Copyright 2014-2015, Victor Häggqvist'
+__credits__ = ['Victor Häggqvist', 'Yuriy Netesov']
+__license__ = 'GPL-2.0'
+__version__ = '0.7.0'
+__maintainer__ = 'Victor Häggqvist <[email protected]>'
+
import subprocess
from xboomx.config import config
-import xboomx.db
+from xboomx.sqlitemgr import get_session, PathItem
import sys
+def main():
+ if len(sys.argv) > 1 and sys.argv[1] == "--stats":
+ session = get_session()
+ items = session.query(PathItem).order_by(PathItem.count.desc())
-if len(sys.argv) > 1 and sys.argv[1] == "--stats":
- db = xboomx.db.open_shelve('')
-
- items = []
-
- keys = db.keys()
-
- for x in keys:
- items.append([x, db.get(x, "")])
-
- db.close()
+ print('Application\tLaunches')
+ for item in items:
+ if item.count < 3:
+ continue
- # sort items
- items.sort(key=lambda x: x[1], reverse=True)
+ if len(item.name) < 8:
+ print('%s\t\t%s' % (item.name, item.count))
+ else:
+ print('%s\t%s' % (item.name, item.count))
- # print items
- print "Application\tLaunches"
- for item in items:
- if len(item[0]) < 8:
- print item[0]+"\t\t"+str(item[1])
- else:
- print item[0]+"\t"+str(item[1])
+ exit(0)
- exit(0)
+ dmenu_launcher = 'dmenu ' + config.get("dmenu_params", "")
-DMENU_LAUNCHER = 'dmenu ' + config.get("dmenu_params", "")
+ subprocess.call('xboomx_path.py | xboomx_sort.py | ' + dmenu_launcher + "| xboomx_update.py | xargs -I {} sh -c \'exec {} &\'", shell=True)
-subprocess.call("xboomx_path.py | xboomx_sort.py | " + DMENU_LAUNCHER + "| xboomx_update.py | xargs -I {} sh -c \'exec {} &\'", shell=True)
+if __name__ == '__main__':
+ main()
diff --git a/xboomx/bin/xboomx_path.py b/xboomx/bin/xboomx_path.py
index 56779b3..4a5e87c 100755
--- a/xboomx/bin/xboomx_path.py
+++ b/xboomx/bin/xboomx_path.py
@@ -1,23 +1,27 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+# coding=utf-8
import os
from xboomx.config import config
+__author__ = 'Victor Häggqvist'
+
def main():
- pathes = os.environ['PATH'].split(':')
+ paths = os.environ['PATH'].split(':')
items = []
- for path in pathes:
+ for path in paths:
if os.path.isdir(path):
for f in os.listdir(path):
items.append(f)
- uniqeitems = list(set(items))
+ unique_items = list(set(items))
- ignorelist = config.get("ignorelist","");
- for item in uniqeitems:
- if item not in ignorelist:
- print item
+ ignore_list = config.get("ignorelist", "")
+ for item in unique_items:
+ if item not in ignore_list:
+ print(item)
-main() \ No newline at end of file
+if __name__ == '__main__':
+ main()
diff --git a/xboomx/bin/xboomx_sort.py b/xboomx/bin/xboomx_sort.py
index a30c362..3b78d83 100644..100755
--- a/xboomx/bin/xboomx_sort.py
+++ b/xboomx/bin/xboomx_sort.py
@@ -1,36 +1,37 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
import fileinput
-import sys
-import xboomx.db
+from xboomx.sqlitemgr import get_session, PathItem
def main():
+ session = get_session()
+ dbitems = session.query(PathItem).all()
- # get db type
- db_type = ''
- if len(sys.argv) > 1:
- db_type = sys.argv[1]
-
- # open shelve
- db = xboomx.db.open_shelve(db_type)
+ items = {}
+ for i in dbitems:
+ items[i.name] = i.count
# read lines and set weight according to db
items = []
-
for input_item in fileinput.input([]):
input_item = input_item.strip('\n')
- items.append((db.get(input_item, 0), input_item))
+
+ try:
+ count = items[input_item]
+ items.append((count, input_item))
+ except KeyError:
+ items.append((0, input_item))
# sort items
items.sort(key=lambda x: x[0], reverse=True)
- # print items
+ # print items to be shown on dmenu
for item in items:
- print item[1]
+ print(item[1])
- # clean up
- db.close()
+ session.close()
-main()
+if __name__ == '__main__':
+ main()
diff --git a/xboomx/bin/xboomx_update.py b/xboomx/bin/xboomx_update.py
index 708c0b8..4b5d98e 100644
--- a/xboomx/bin/xboomx_update.py
+++ b/xboomx/bin/xboomx_update.py
@@ -1,7 +1,9 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+from pprint import pprint
import sys
import fileinput
-import xboomx.db
+from sqlalchemy.orm.exc import NoResultFound
+from xboomx.sqlitemgr import get_session, PathItem
def main():
@@ -10,22 +12,24 @@ def main():
if len(sys.argv) > 1 and sys.argv[1] != "--stats":
db_type = sys.argv[1]
- # open db
- db = xboomx.db.open_shelve(db_type)
+ item = fileinput.input()[0]
+ pprint(item)
- # get item to update
- item = fileinput.input([]).next()
item = item.strip('\n')
- # update item
- db[item] = db.get(item, 0) + 1
+ session = get_session()
+ try:
+ dbitem = session.query(PathItem).filter_by(name=item).one()
+ dbitem.count = dbitem.count + 1
+ session.add(dbitem)
+ except NoResultFound:
+ dbi = PathItem(name=item, couunt=0)
+ session.add(dbi)
- # print it
- print item
+ session.commit()
+ session.close()
- # clean up
- db.sync()
- db.close()
+ print(item)
-
-main()
+if __name__ == '__main__':
+ main()
diff --git a/xboomx/bin/xboomx_urls.py b/xboomx/bin/xboomx_urls.py
deleted file mode 100644
index 211c98c..0000000
--- a/xboomx/bin/xboomx_urls.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/python
-
-import xboomx.db
-DB_TYPE = 'urls'
-
-
-def main():
- db = xboomx.db.open_shelve(DB_TYPE)
- for url in db.keys():
- print url
-
- db.close()
-
-
-main()
diff --git a/xboomx/db.py b/xboomx/db.py
deleted file mode 100644
index fd099e3..0000000
--- a/xboomx/db.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import shelve
-import os
-
-
-def open_shelve(db_type=''):
- # create dir if not exists
- try:
- os.makedirs(os.getenv("HOME") + '/.xboomx')
- except:
- pass
-
- # open shelve
- return shelve.open(os.getenv("HOME") + '/.xboomx/xboomx%s.db' % db_type)
diff --git a/xboomx/sqlitemgr.py b/xboomx/sqlitemgr.py
new file mode 100644
index 0000000..6e05bb2
--- /dev/null
+++ b/xboomx/sqlitemgr.py
@@ -0,0 +1,38 @@
+# coding=utf-8
+import os
+from sqlalchemy import create_engine
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import sessionmaker
+from sqlalchemy import Column, Integer, String
+
+__author__ = 'Victor Häggqvist'
+
+# create dir if not exists
+try:
+ os.makedirs(os.getenv("HOME") + '/.xboomx')
+except:
+ pass
+
+dbname = 'xboomx_sqlite.db'
+dbpath = os.path.join(os.getenv("HOME"), '.xboomx', dbname)
+dsn = 'sqlite:///%s' % dbpath
+
+engine = create_engine(dsn, echo=False)
+Base = declarative_base()
+
+
+class PathItem(Base):
+ __tablename__ = 'pathitems'
+ id = Column(Integer, primary_key=True)
+ name = Column(String)
+ count = Column(Integer)
+
+ def __repr__(self):
+ return "<PathItem(name='%s', count='%s')>" % (self.name, self.count)
+
+
+def get_session():
+ Base.metadata.create_all(engine)
+ Session = sessionmaker(bind=engine)
+ session = Session()
+ return session