Complete migration to new resources framework

This commit is contained in:
Kovid Goyal 2009-09-08 10:37:30 -06:00
parent f2cc9ebf0b
commit 66a6887fc1
7 changed files with 80 additions and 7 deletions

View File

@ -9,6 +9,8 @@ dist
docs docs
resources/localization resources/localization
resources/images.qrc resources/images.qrc
resources/recipes.pickle
resources/scripts.pickle
installer/windows/calibre/build.log installer/windows/calibre/build.log
src/calibre/translations/.errors src/calibre/translations/.errors
src/cssutils/.svn/ src/cssutils/.svn/

View File

@ -11,6 +11,7 @@ __all__ = [
'build', 'build',
'gui', 'gui',
'develop', 'develop',
'resources',
'check', 'check',
] ]
@ -33,6 +34,9 @@ gui = GUI()
from setup.check import Check from setup.check import Check
check = Check() check = Check()
from setup.resources import Resources
resources = Resources()
commands = {} commands = {}
for x in __all__: for x in __all__:
commands[x] = locals()[x] commands[x] = locals()[x]

57
setup/resources.py Normal file
View File

@ -0,0 +1,57 @@
#!/usr/bin/env python
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement
__license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
import os, cPickle
from setup import Command, basenames
class Resources(Command):
def get_recipes(self):
sdir = os.path.join('src', 'calibre', 'web', 'feeds', 'recipes')
resources= {}
files = []
for f in os.listdir(sdir):
if f.endswith('.py') and f != '__init__.py':
files.append(os.path.join(sdir, f))
resources[f.replace('.py', '')] = open(files[-1], 'rb').read()
return resources, files
def run(self, opts):
scripts = {}
for x in ('console', 'gui'):
for name in basenames[x]:
if name in ('calibre-complete', 'calibre_postinstall'):
continue
scripts[name] = x
dest = self.j(self.RESOURCES, 'scripts.pickle')
if self.newer(dest, self.j(self.SRC, 'calibre', 'linux.py')):
self.info('\tCreating scripts.pickle')
f = open(dest, 'wb')
cPickle.dump(scripts, f, -1)
recipes, files = self.get_recipes()
dest = self.j(self.RESOURCES, 'recipes.pickle')
if self.newer(dest, files):
self.info('\tCreating recipes.pickle')
f = open(dest, 'wb')
cPickle.dump(recipes, f, -1)
def clean(self):
for x in ('scripts', 'recipes'):
x = self.j(self.RESOURCES, x+'.pickle')
if os.path.exists(x):
os.remove(x)

View File

@ -46,6 +46,7 @@ def get_metadata(stream):
_('Unknown'))))[0] _('Unknown'))))[0]
for x in XPath('//fb2:book-title')(root): for x in XPath('//fb2:book-title')(root):
title = tostring(x) title = tostring(x)
break
comments = '' comments = ''
for x in XPath('//fb2:annotation')(root): for x in XPath('//fb2:annotation')(root):
comments += tostring(x) comments += tostring(x)

View File

@ -1,6 +1,6 @@
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import time, os import time, os, cPickle
from PyQt4.QtCore import SIGNAL, QUrl from PyQt4.QtCore import SIGNAL, QUrl
from PyQt4.QtGui import QDesktopServices from PyQt4.QtGui import QDesktopServices
@ -185,9 +185,10 @@ class %(classname)s(%(base_class)s):
def add_builtin_recipe(self): def add_builtin_recipe(self):
from calibre.web.feeds.recipes import recipes, recipe_modules, english_sort from calibre.web.feeds.recipes import recipes, recipe_modules, english_sort
from calibre.resources import recipes as rdat
from PyQt4.Qt import QInputDialog from PyQt4.Qt import QInputDialog
rdat = cPickle.load(open(P('recipes.pickle'), 'rb'))
class Recipe(object): class Recipe(object):
def __init__(self, title, id, recipes): def __init__(self, title, id, recipes):
self.title = unicode(title) self.title = unicode(title)

View File

@ -6,7 +6,7 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import sys, os import sys, os, cPickle
AUTHTOOL="""#!/usr/bin/python AUTHTOOL="""#!/usr/bin/python
import os import os
@ -29,8 +29,11 @@ DEST_PATH = '/usr/bin'
def create_symlinks(): def create_symlinks():
return create_symlinks_new() if getattr(sys, 'new_app_bundle', False) else create_symlinks_old() return create_symlinks_new() if getattr(sys, 'new_app_bundle', False) else create_symlinks_old()
def get_scripts():
return cPickle.load(open(P('scripts.pickle'), 'rb'))
def create_symlinks_new(): def create_symlinks_new():
from calibre.resources import scripts scripts = get_scripts()
links = [os.path.join(DEST_PATH, i) for i in scripts] links = [os.path.join(DEST_PATH, i) for i in scripts]
scripts = [os.path.join( scripts = [os.path.join(
@ -40,7 +43,7 @@ def create_symlinks_new():
def create_symlinks_old(): def create_symlinks_old():
from calibre.resources import scripts scripts = get_scripts()
resources_path = os.environ['RESOURCEPATH'] resources_path = os.environ['RESOURCEPATH']
links = [os.path.join(DEST_PATH, i) for i in scripts] links = [os.path.join(DEST_PATH, i) for i in scripts]

View File

@ -17,9 +17,8 @@ class cdnet(BasicNewsRecipe):
timefmt = ' [%d %b %Y]' timefmt = ' [%d %b %Y]'
max_articles_per_feed = 50 max_articles_per_feed = 50
no_stylesheets = True no_stylesheets = True
language = 'de'
encoding = 'utf-8' encoding = 'utf-8'
language = 'de'
remove_tags = [dict(id='outside-advert'), remove_tags = [dict(id='outside-advert'),
@ -39,8 +38,14 @@ class cdnet(BasicNewsRecipe):
dict(id='bookmarkTools'), dict(id='bookmarkTools'),
dict(id='printTools'), dict(id='printTools'),
dict(id='header-nextNews'), dict(id='header-nextNews'),
dict(id='commentsBox'),
dict(id='showComments'),
dict(id='footer'),
dict(id=''), dict(id=''),
dict(name='div', attrs={'class':'pyjama'}), dict(name='div', attrs={'class':'pyjama'}),
dict(name='div', attrs={'class':'basicCentral'}),
dict(name='li', attrs={'class':'simplePagination-previous'}),
dict(name='form', attrs={'id':'commentForm'}),
dict(name='href', attrs={'class':'comment'}), dict(name='href', attrs={'class':'comment'}),
dict(name='div', attrs={'class':'greyBoxR clearfix'}), dict(name='div', attrs={'class':'greyBoxR clearfix'}),
dict(name='div', attrs={'class':'greyBoxL clearfix'}), dict(name='div', attrs={'class':'greyBoxL clearfix'}),