| Index: filters/get_subscriptions.py |
| =================================================================== |
| --- a/filters/get_subscriptions.py |
| +++ b/filters/get_subscriptions.py |
| @@ -12,31 +12,39 @@ |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| import codecs |
| import os |
| import tarfile |
| import urllib |
| +from ConfigParser import SafeConfigParser |
| def get_subscriptions(_): |
| - from sitescripts.subscriptions.subscriptionParser import parse_file, calculate_supplemented |
| + import sitescripts.subscriptions.subscriptionParser as subscriptionParser |
|
Sebastian Noack
2015/03/13 19:51:45
Nit: from ... import
Wladimir Palant
2015/03/13 19:58:51
Done.
|
| result = {} |
| utf8_reader = codecs.getreader('utf8') |
| source = urllib.urlopen("https://hg.adblockplus.org/subscriptionlist/archive/default.tar.gz") |
| + orig_get_settings = subscriptionParser.get_settings |
| try: |
| + # Hack: monkey-patch subscriptionParser.get_settings() |
| + settings = SafeConfigParser() |
| + settings.readfp(utf8_reader(urllib.urlopen("https://hg.adblockplus.org/subscriptionlist/rawfile/default/settings"))) |
|
Sebastian Noack
2015/03/13 19:51:45
The file-like object returned by urllib.urlopen()
Wladimir Palant
2015/03/13 19:58:51
Done.
Sebastian Noack
2015/03/13 20:06:34
I verified that __enter__/__exit__ isnt't implemen
|
| + subscriptionParser.get_settings = lambda: settings |
| + |
| with tarfile.open(fileobj=source, mode="r|gz") as archive: |
| for fileinfo in archive: |
| if os.path.splitext(fileinfo.name)[1] != ".subscription": |
| continue |
| - filedata = parse_file(fileinfo.name, utf8_reader(archive.extractfile(fileinfo))) |
| + filedata = subscriptionParser.parse_file(fileinfo.name, utf8_reader(archive.extractfile(fileinfo))) |
| if filedata.unavailable: |
| continue |
| result[filedata.name] = filedata |
| finally: |
| source.close() |
| + subscriptionParser.get_settings = orig_get_settings |
| - calculate_supplemented(result) |
| + subscriptionParser.calculate_supplemented(result) |
| return result.values() |