trackchange 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -57,13 +57,15 @@ substituted by the requested site url.
57
57
 
58
58
  The default command is
59
59
 
60
- lynx -dump '%url%' | uniq
60
+ lynx -nolist -dump '%url%' | uniq
61
61
 
62
62
  Here are some alternatives you might want to experiment
63
63
  with. (Unfortunately pandoc only works with http, not with https and
64
64
  does not follow redirects, hence the version with curl.)
65
65
 
66
66
  lynx -dump '%url%' | uniq | sed -e "/References/,/\s+[0-9]+\. h/d"
67
+
68
+ lynx -nolist -dump '%url%' | uniq
67
69
 
68
70
  pandoc '%url%' -t markdown
69
71
 
@@ -71,18 +73,45 @@ does not follow redirects, hence the version with curl.)
71
73
 
72
74
  curl -sL '%url%' | pandoc -t plain
73
75
 
74
- ### rss_path
76
+ phantomjs %queryscript% '%url%' '%selector%'
77
+
78
+
79
+ ### rss_path (optional)
75
80
 
76
81
  ...
77
82
 
78
- ### feed_size
83
+ ### feed_size (optional)
79
84
 
80
85
  ...
81
86
 
82
- ### log_level
87
+ ### log_level (optional)
83
88
 
84
89
  ...
85
90
 
91
+ ### sites (mandatory)
92
+
93
+ A list of sites, with the following properites.
94
+
95
+ #### url (mandatory)
96
+
97
+ The url of the site to be tracked.
98
+
99
+ #### threshold (optional)
100
+
101
+ If a threshold is given, no notification will be sent if the number of
102
+ changed lines is below or equal the given vaule.
103
+
104
+ #### selector (optional)
105
+
106
+ If a selector is given, it will be used as a CSS3 selector to reduce
107
+ the output to. The selector feature is only available if trackchange
108
+ is configured to use phantomjs to fetch the content, i.e.
109
+
110
+ fetch: phantomjs %queryscript% '%url%' '%selector%'
111
+
112
+ The query script will return plain text. If no selector is given, the
113
+ query script will select the body tag by default.
114
+
86
115
 
87
116
  ## Contributing
88
117
 
@@ -5,7 +5,6 @@ module Trackchange
5
5
 
6
6
  def check
7
7
  quit('no diff?') if %x[ which diff ].empty?
8
- quit('no lynx?') if %x[ which lynx ].empty?
9
8
  quit('no mail?') if %x[ which mail ].empty?
10
9
  end
11
10
 
@@ -98,7 +98,7 @@ module Trackchange
98
98
  # upgrade from 0.3.0 to 0.4.0
99
99
  if v(data[:version]) < v('0.4.0')
100
100
  data[:version ] = '0.4.0'
101
- data[:fetch] = "lynx -dump '%url%' | uniq"
101
+ data[:fetch] = "lynx -nolist -dump '%url%' | uniq"
102
102
  data[:feed_size] = 20
103
103
  @config = OpenStruct.new(data)
104
104
  store_config!
@@ -20,7 +20,15 @@ module Trackchange
20
20
  url = site[:url]
21
21
  fname = url.sub(%r{https?://}, '').tr_s('/?&', '...')
22
22
  site_path = File.expand_path(fname, '~/.trackchange')
23
- cmd = config.fetch.gsub('%url%', url) + "> #{site_path}.new"
23
+
24
+ # build cmd
25
+ cmd = config.fetch + "> #{site_path}.new"
26
+ substitutions = {
27
+ url: url,
28
+ queryscript: File.expand_path('../query.coffee', __FILE__),
29
+ selector: site[:selector]
30
+ }
31
+ substitutions.each { |key, value| cmd = cmd.gsub("%#{key}%", value.to_s) }
24
32
  logger.debug "% #{cmd}"
25
33
  system cmd
26
34
 
@@ -0,0 +1,23 @@
1
+ page = require('webpage').create()
2
+ sys = require('system')
3
+
4
+ if (sys.args.length < 2 || sys.args.length > 3)
5
+ console.log 'Usage: select.coffee URL [selector]'
6
+ phantom.exit
7
+
8
+ address = sys.args[1]
9
+ selector = sys.args[2] || 'body'
10
+
11
+ query = (selector) ->
12
+ document.querySelector(selector).innerText
13
+
14
+ storePageAndExit = ->
15
+ result = page.evaluate query, selector
16
+ console.log result
17
+ phantom.exit()
18
+
19
+ page.open address, (status) ->
20
+ if status != 'success'
21
+ console.log 'Unable to load the address!'
22
+ phantom.exit 1
23
+ window.setTimeout storePageAndExit, 200
@@ -1,3 +1,3 @@
1
1
  module Trackchange
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackchange
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-26 00:00:00.000000000 Z
12
+ date: 2015-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cronedit
@@ -77,6 +77,7 @@ files:
77
77
  - lib/trackchange/dependencies.rb
78
78
  - lib/trackchange/exec.rb
79
79
  - lib/trackchange/probe.rb
80
+ - lib/trackchange/query.coffee
80
81
  - lib/trackchange/version.rb
81
82
  - trackchange.gemspec
82
83
  homepage: ''
@@ -94,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
95
  version: '0'
95
96
  segments:
96
97
  - 0
97
- hash: 4114028559978867129
98
+ hash: 1290840265357501692
98
99
  required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  none: false
100
101
  requirements:
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  version: '0'
104
105
  segments:
105
106
  - 0
106
- hash: 4114028559978867129
107
+ hash: 1290840265357501692
107
108
  requirements: []
108
109
  rubyforge_project:
109
110
  rubygems_version: 1.8.23