diff --git a/src/libprs500/ebooks/lrf/web/__init__.py b/src/libprs500/ebooks/lrf/web/__init__.py
index 97ad144cc4..a110ca5d4d 100644
--- a/src/libprs500/ebooks/lrf/web/__init__.py
+++ b/src/libprs500/ebooks/lrf/web/__init__.py
@@ -13,3 +13,20 @@
## with this program; if not, write to the Free Software Foundation, Inc.,
## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+from libprs500.ebooks.lrf.web.profiles.nytimes import NYTimes
+from libprs500.ebooks.lrf.web.profiles.bbc import BBC
+from libprs500.ebooks.lrf.web.profiles.newsweek import Newsweek
+from libprs500.ebooks.lrf.web.profiles.economist import Economist
+from libprs500.ebooks.lrf.web.profiles.newyorkreview import NewYorkReviewOfBooks
+from libprs500.ebooks.lrf.web.profiles.spiegelde import SpiegelOnline
+from libprs500.ebooks.lrf.web.profiles.zeitde import ZeitNachrichten
+from libprs500.ebooks.lrf.web.profiles.faznet import FazNet
+from libprs500.ebooks.lrf.web.profiles.wsj import WallStreetJournal
+from libprs500.ebooks.lrf.web.profiles.barrons import Barrons
+from libprs500.ebooks.lrf.web.profiles.portfolio import Portfolio
+
+builtin_profiles = [Barrons, BBC, Economist, FazNet, Newsweek, NewYorkReviewOfBooks, NYTimes, \
+ Portfolio, SpiegelOnline, WallStreetJournal, ZeitNachrichten, \
+ ]
+
+available_profiles = [i.__module__.rpartition('.')[2] for i in builtin_profiles]
\ No newline at end of file
diff --git a/src/libprs500/ebooks/lrf/web/convert_from.py b/src/libprs500/ebooks/lrf/web/convert_from.py
index 046c17b8ab..38939e8ade 100644
--- a/src/libprs500/ebooks/lrf/web/convert_from.py
+++ b/src/libprs500/ebooks/lrf/web/convert_from.py
@@ -24,22 +24,8 @@ from libprs500.ebooks.lrf.html.convert_from import process_file
from libprs500.web.fetch.simple import create_fetcher
from libprs500.ebooks.lrf.web.profiles import DefaultProfile
-from libprs500.ebooks.lrf.web.profiles.nytimes import NYTimes
-from libprs500.ebooks.lrf.web.profiles.bbc import BBC
-from libprs500.ebooks.lrf.web.profiles.newsweek import Newsweek
-from libprs500.ebooks.lrf.web.profiles.economist import Economist
-from libprs500.ebooks.lrf.web.profiles.newyorkreview import NewYorkReviewOfBooks
-from libprs500.ebooks.lrf.web.profiles.spiegelde import SpiegelOnline
-from libprs500.ebooks.lrf.web.profiles.zeitde import ZeitNachrichten
-from libprs500.ebooks.lrf.web.profiles.faznet import FazNet
-from libprs500.ebooks.lrf.web.profiles.wsj import WallStreetJournal
-from libprs500.ebooks.lrf.web.profiles.barrons import Barrons
-from libprs500.ebooks.lrf.web.profiles.portfolio import Portfolio
-
-builtin_profiles = [NYTimes, BBC, Newsweek, Economist, NewYorkReviewOfBooks, \
- SpiegelOnline, ZeitNachrichten, FazNet, WallStreetJournal, \
- Barrons, Portfolio]
-available_profiles = [i.__module__.rpartition('.')[2] for i in builtin_profiles]
+from libprs500.ebooks.lrf.web import builtin_profiles, available_profiles
+
def option_parser():
parser = lrf_option_parser(usage='''%prog [options] website_profile\n\n'''
diff --git a/src/libprs500/ebooks/lrf/web/profiles/__init__.py b/src/libprs500/ebooks/lrf/web/profiles/__init__.py
index e84fb981a9..4e21873a00 100644
--- a/src/libprs500/ebooks/lrf/web/profiles/__init__.py
+++ b/src/libprs500/ebooks/lrf/web/profiles/__init__.py
@@ -38,7 +38,8 @@ class DefaultProfile(object):
pubdate_fmt = None # The format string used to parse the publication date in the RSS feed. If set to None some default heuristics are used, these may fail, in which case set this to the correct string or re-implement strptime in your subclass.
use_pubdate = True, # If True will look for a publication date for each article. If False assumes the publication date is the current time.
no_stylesheets = False # Download stylesheets only if False
- allow_duplicates = False # If False articles with the same title in the same feed are not downloaded multiple times
+ allow_duplicates = False # If False articles with the same title in the same feed are not downloaded multiple times
+ needs_subscription = False # If True the GUI will ask the userfor a username and password to use while downloading
match_regexps = [] # List of regular expressions that determines which links to follow
filter_regexps = [] # List of regular expressions that determines which links to ignore
# Only one of match_regexps or filter_regexps should be defined
@@ -51,7 +52,8 @@ class DefaultProfile(object):
preprocess_regexps = []
# See the built-in profiles for examples of these settings.
-
+
+
def get_feeds(self):
'''
Return a list of RSS feeds to fetch for this profile. Each element of the list
diff --git a/src/libprs500/ebooks/lrf/web/profiles/barrons.py b/src/libprs500/ebooks/lrf/web/profiles/barrons.py
index 2791b5c008..87749c9a19 100644
--- a/src/libprs500/ebooks/lrf/web/profiles/barrons.py
+++ b/src/libprs500/ebooks/lrf/web/profiles/barrons.py
@@ -15,6 +15,7 @@ class Barrons(DefaultProfile):
title = 'Barron\'s'
max_recursions = 3
max_articles_per_feed = 50
+ needs_subscription = True
timefmt = ' [%a, %b %d, %Y]'
html_description = True
no_stylesheets = False
diff --git a/src/libprs500/ebooks/lrf/web/profiles/nytimes.py b/src/libprs500/ebooks/lrf/web/profiles/nytimes.py
index ae780a7973..cc40652fc0 100644
--- a/src/libprs500/ebooks/lrf/web/profiles/nytimes.py
+++ b/src/libprs500/ebooks/lrf/web/profiles/nytimes.py
@@ -24,6 +24,7 @@ class NYTimes(DefaultProfile):
title = 'The New York Times'
timefmt = ' [%a, %d %b, %Y]'
+ needs_subscription = True
max_recursions = 2
preprocess_regexps = \
diff --git a/src/libprs500/ebooks/lrf/web/profiles/wsj.py b/src/libprs500/ebooks/lrf/web/profiles/wsj.py
index feb1015f60..5294130d93 100644
--- a/src/libprs500/ebooks/lrf/web/profiles/wsj.py
+++ b/src/libprs500/ebooks/lrf/web/profiles/wsj.py
@@ -13,7 +13,8 @@ from libprs500.ebooks.lrf.web.profiles import DefaultProfile
class WallStreetJournal(DefaultProfile):
title = 'Wall Street Journal'
- max_recursions = 2
+ max_recursions = 2
+ needs_subscription = True
max_articles_per_feed = 50
timefmt = ' [%a, %b %d, %Y]'
html_description = True
diff --git a/src/libprs500/gui2/images.qrc b/src/libprs500/gui2/images.qrc
index c5879a3d68..4ea40a0dd0 100644
--- a/src/libprs500/gui2/images.qrc
+++ b/src/libprs500/gui2/images.qrc
@@ -39,8 +39,8 @@
Please enter your username and password for nytimes.com
If you do not have an account, you can register for free.
Without a registration, some articles will not be downloaded correctly. Click OK to proceed.')
- d.exec_()
- if d.result() == QDialog.Accepted:
- un, pw = d.username(), d.password()
- self.fetch_news('nytimes', 'New York Times', username=un, password=pw)
- def fetch_news_wsj(self, checked):
- d = PasswordDialog(self, 'wsj info dialog',
- '
Please enter your username and password for wsj.com
Click OK to proceed.')
- d.exec_()
- if d.result() == QDialog.Accepted:
- un, pw = d.username(), d.password()
- self.fetch_news('wsj', 'Wall Street Journal', username=un, password=pw)
-
- def fetch_news_barrons(self, checked):
- d = PasswordDialog(self, 'barrons info dialog',
- '
Please enter your username and password for barrons.com
Click OK to proceed.')
- d.exec_()
- if d.result() == QDialog.Accepted:
- un, pw = d.username(), d.password()
- self.fetch_news('barrons', 'Barrons', username=un, password=pw)
\ No newline at end of file
+ def fetch_news(self, profile, module):
+ username = password = None
+ fetch = True
+ if profile.needs_subscription:
+ d = PasswordDialog(self, module + ' info dialog',
+ '
Please enter your username and password for %s
If you do not have one, please subscribe to get access to the articles.
Click OK to proceed.'%(profile.title,))
+ d.exec_()
+ if d.result() == QDialog.Accepted:
+ username, password = d.username(), d.password()
+ else:
+ fetch = False
+ if fetch:
+ data = dict(profile=module, title=profile.title, username=username, password=password)
+ self.emit(SIGNAL('fetch_news(PyQt_PyObject)'), data)
+
+
\ No newline at end of file