Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: README.md

Issue 29884571: Issue 6945 - Add script to make filter list diffs (Closed) Base URL: https://hg.adblockplus.org/python-abp/
Patch Set: Address comments on PS4 Created Sept. 25, 2018, 1:52 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | abp/filters/diff_script.py » ('j') | abp/filters/diff_script.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # python-abp 1 # python-abp
2 2
3 This repository contains a library for working with Adblock Plus filter lists 3 This repository contains a library for working with Adblock Plus filter lists
4 and the script that is used for building Adblock Plus filter lists from the 4 and the script that is used for building Adblock Plus filter lists from the
5 form in which they are authored into the format suitable for consumption by the 5 form in which they are authored into the format suitable for consumption by the
6 adblocking software. 6 adblocking software.
7 7
8 ## Installation 8 ## Installation
9 9
10 Prerequisites: 10 Prerequisites:
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 If you don't know all the source names that are needed to render some list, 79 If you don't know all the source names that are needed to render some list,
80 just run `flrender` and it will report what it's missing: 80 just run `flrender` and it will report what it's missing:
81 81
82 $ flrender easylist.txt output/easylist.txt 82 $ flrender easylist.txt output/easylist.txt
83 Unknown source: 'easylist' when including 'easylist:easylist/easylist_gener 83 Unknown source: 'easylist' when including 'easylist:easylist/easylist_gener
84 al_block.txt' from 'easylist.txt' 84 al_block.txt' from 'easylist.txt'
85 85
86 You can clone the necessary repositories to a local directory and add `-i` 86 You can clone the necessary repositories to a local directory and add `-i`
87 options accordingly. 87 options accordingly.
88 88
89 ## Rendering diffs
90
91 A diff allows a client running ad blocking software such as Adblock Plus to upda te
92 the filter lists incrementally, instead of downloading a new copy of a full list
93 during each update. This is meant to lessen the amount of resources used when up dating
94 filter lists (e.g. network data, memory usage, battery consumption, etc.), allow ing
95 clients to update their lists more frequently using less resources.
96
97 Python-abp contains a script that produces the diff between two versions of a
98 filter list called `fldiff`:
99
100 $ fldiff base.txt latest.txt output.txt
101
102 This will produce a diff that shows how a client may get from `base.txt` to
103 `latest.txt`, and write the output to `output.txt`. The output argument is
104 optional. If ommitted, the data will be written to `stdout`.
105
106 The script produces three types of lines, as specified in the [technical specifi cation][5]:
107 * Special comments of the form `! <name>:[ <value>]`
108 * Added filters of the form `+ <filter-text>`
109 * Removed filter of the form `- <filter-text>`
110
111 The diff is generated such that the removed filters are listed before the added
Sebastian Noack 2018/09/25 17:00:39 Maybe this is a bit too much detail, if we refer t
rhowell 2018/09/25 23:01:45 Yeah, I see your point. Maybe it would be better t
112 filters. This covers the case where a filter is both removed and added. The
113 client should process the diffs in order, so if this conflict happens, the rule
114 will be added.
115
89 ## Library API 116 ## Library API
90 117
91 Python-abp can also be used as a library for parsing filter lists. For example 118 Python-abp can also be used as a library for parsing filter lists. For example
92 to read a filter list (we use Python 3 syntax here but the API is the same): 119 to read a filter list (we use Python 3 syntax here but the API is the same):
93 120
94 from abp.filters import parse_filterlist 121 from abp.filters import parse_filterlist
95 122
96 with open('filterlist.txt') as filterlist: 123 with open('filterlist.txt') as filterlist:
97 for line in parse_filterlist(filterlist): 124 for line in parse_filterlist(filterlist):
98 print(line) 125 print(line)
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 > abp <- import("abp.filters.rpy") 202 > abp <- import("abp.filters.rpy")
176 203
177 Now you can use the functions with `abp$functionname`, e.g. 204 Now you can use the functions with `abp$functionname`, e.g.
178 `abp.line2dict("@@||g.doubleclick.net/pagead/$subdocument,domain=hon30.org")` 205 `abp.line2dict("@@||g.doubleclick.net/pagead/$subdocument,domain=hon30.org")`
179 206
180 207
181 [1]: https://adblockplus.org/filters#special-comments 208 [1]: https://adblockplus.org/filters#special-comments
182 [2]: http://pytest.org/ 209 [2]: http://pytest.org/
183 [3]: https://tox.readthedocs.org/ 210 [3]: https://tox.readthedocs.org/
184 [4]: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt 211 [4]: https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
212 [5]: https://docs.google.com/document/d/1SoEqaOBZRCfkh1s5Kds5A5RwUC_nqbYYlGH72s bsSgQ/
OLDNEW
« no previous file with comments | « no previous file | abp/filters/diff_script.py » ('j') | abp/filters/diff_script.py » ('J')

Powered by Google App Engine
This is Rietveld