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() |