junkie 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,7 @@ module Junkie
|
|
11
11
|
|
12
12
|
DEFAULT_CONFIG = {
|
13
13
|
watchdog_refresh: 10, # interval the watchdog_timer is fired
|
14
|
+
dont_add_episodes_to_queue: false,
|
14
15
|
}
|
15
16
|
|
16
17
|
def initialize(channels)
|
@@ -27,13 +28,13 @@ module Junkie
|
|
27
28
|
@ready_for_new_links = true
|
28
29
|
@watchdog_enabled = false
|
29
30
|
@skipped_timer_at_first_complete_detection = false
|
31
|
+
@should_stat_queued_episodes = false
|
30
32
|
|
31
33
|
@channels[:episodes].subscribe do |episode|
|
32
34
|
next unless episode.status == :found
|
33
35
|
|
34
36
|
log.info("Got episode from Channel: #{episode}")
|
35
37
|
@found_episodes.push(episode)
|
36
|
-
stat_queued_episodes
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
@@ -51,7 +52,14 @@ module Junkie
|
|
51
52
|
EM.add_periodic_timer(@config[:watchdog_refresh]) do
|
52
53
|
monitor_progress if @watchdog_enabled
|
53
54
|
|
54
|
-
|
55
|
+
if @should_stat_queued_episodes
|
56
|
+
stat_queued_episodes
|
57
|
+
@should_stat_queued_episodes = false
|
58
|
+
end
|
59
|
+
|
60
|
+
if not @config[:dont_add_episodes_to_queue]
|
61
|
+
in_fiber { add_next_episode_to_pyload }
|
62
|
+
end
|
55
63
|
end
|
56
64
|
end
|
57
65
|
|
@@ -91,7 +99,8 @@ module Junkie
|
|
91
99
|
@channels[:info].push({
|
92
100
|
key: "Pending episodes",
|
93
101
|
desc: "Number of episodes queued for download",
|
94
|
-
value: @found_episodes.size
|
102
|
+
value: @found_episodes.size,
|
103
|
+
additional: @found_episodes.map { |e| e.to_s }
|
95
104
|
})
|
96
105
|
end
|
97
106
|
|
data/lib/junkie/version.rb
CHANGED
@@ -0,0 +1,73 @@
|
|
1
|
+
function format_stat(stat, internal_page_id) {
|
2
|
+
internal_page_id = internal_page_id || ""
|
3
|
+
|
4
|
+
return '<li data-key="' + stat.key + '">' +
|
5
|
+
'<a href="#' + internal_page_id + '" data-ajax="false">' +
|
6
|
+
'<span class="ui-li-heading">' + stat.key +
|
7
|
+
'</span><span class="ui-li-desc">' + stat.desc +
|
8
|
+
'</span><span class="ui-li-count bigger">' + stat.value +
|
9
|
+
'</span></a></li>';
|
10
|
+
}
|
11
|
+
|
12
|
+
function format_inpage(stat, inpage_id) {
|
13
|
+
var s = $('#_InpageDataTemplate').clone();
|
14
|
+
|
15
|
+
$(s).attr('id', inpage_id);
|
16
|
+
$(s).data('url', inpage_id);
|
17
|
+
$('.header', s).text(stat.key);
|
18
|
+
$(stat.additional).each(function(index, value) {
|
19
|
+
$('.content', s).append('<li>' + value + '</li>');
|
20
|
+
});
|
21
|
+
|
22
|
+
return s;
|
23
|
+
}
|
24
|
+
|
25
|
+
function addOrUpdateStat(stat) {
|
26
|
+
|
27
|
+
// check if the stat contains additional data that should be
|
28
|
+
// displayed in a sub listview
|
29
|
+
var inpage_id = "";
|
30
|
+
var has_inpage = false;
|
31
|
+
|
32
|
+
if (stat.additional !== undefined) {
|
33
|
+
inpage_id = stat.key.replace(/ /g, '');
|
34
|
+
has_inpage = true;
|
35
|
+
}
|
36
|
+
|
37
|
+
var statHtml = format_stat(stat, inpage_id);
|
38
|
+
|
39
|
+
// add or update the stat in the DOM
|
40
|
+
$('#main_page #data li[data-key="' + stat.key + '"]').remove();
|
41
|
+
$(statHtml).insertAfter('#stats');
|
42
|
+
$('#main_page #data').listview('refresh');
|
43
|
+
|
44
|
+
// add or update the inpage for additional data if available
|
45
|
+
if (has_inpage) {
|
46
|
+
var additionalPageHtml = format_inpage(stat, inpage_id);
|
47
|
+
$('body #' + inpage_id).remove();
|
48
|
+
$('body').append(additionalPageHtml);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
function updateUpdatedAt() {
|
53
|
+
var time = new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
|
54
|
+
$("#last_update").text(time);
|
55
|
+
}
|
56
|
+
|
57
|
+
$(function () {
|
58
|
+
var ws = new WebSocket('ws://' + window.location.host + window.location.pathname);
|
59
|
+
ws.onopen = function() {
|
60
|
+
console.log('websocket opened');
|
61
|
+
$('#connection_status').text('connected');
|
62
|
+
};
|
63
|
+
ws.onclose = function() {
|
64
|
+
console.log('websocket closed');
|
65
|
+
$('#connection_status').text('disconnected');
|
66
|
+
};
|
67
|
+
ws.onmessage = function(m) {
|
68
|
+
console.log(m);
|
69
|
+
updateUpdatedAt();
|
70
|
+
var obj = $.parseJSON(m.data);
|
71
|
+
addOrUpdateStat(obj);
|
72
|
+
};
|
73
|
+
});
|
@@ -3,29 +3,28 @@
|
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8" />
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
6
|
-
<title>
|
7
|
-
</title>
|
6
|
+
<title>Junkie Webapp</title>
|
8
7
|
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
|
9
8
|
<style>
|
10
9
|
.bigger {
|
11
10
|
font-size: 100% !important;
|
12
11
|
}
|
13
12
|
</style>
|
14
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
|
15
|
-
|
16
|
-
<script src="
|
17
|
-
</script>
|
13
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
|
14
|
+
<script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
|
15
|
+
<script src="/js/index.js"></script>
|
18
16
|
</head>
|
19
17
|
<body>
|
20
|
-
|
21
|
-
|
18
|
+
|
19
|
+
<!-- Main page -->
|
20
|
+
<div data-role="page" id="main_page">
|
22
21
|
<div data-theme="a" data-role="header">
|
23
22
|
<h3 id="header_title">
|
24
23
|
Junkie Webapp (<%= @junkie_version %>)
|
25
24
|
</h3>
|
26
25
|
</div>
|
27
26
|
<div data-role="content">
|
28
|
-
<ul data-role="listview" id="data">
|
27
|
+
<ul data-role="listview" data-inset="true" id="data">
|
29
28
|
<li data-role="list-divider" id="stats">Stats</li>
|
30
29
|
|
31
30
|
<li data-role="list-divider">About</li>
|
@@ -35,45 +34,16 @@
|
|
35
34
|
</ul>
|
36
35
|
</div>
|
37
36
|
</div>
|
38
|
-
</body>
|
39
|
-
|
40
|
-
<script type="text/javascript">
|
41
|
-
|
42
|
-
function format_stat(stat) {
|
43
|
-
return '<li data-key="' + stat.key +
|
44
|
-
'"><span class="ui-li-heading">' + stat.key +
|
45
|
-
'</span><span class="ui-li-desc">' + stat.desc +
|
46
|
-
'</span><span class="ui-li-count bigger">' + stat.value +
|
47
|
-
'</span></li>';
|
48
|
-
}
|
49
|
-
|
50
|
-
function addOrUpdateStat(stat) {
|
51
|
-
var statHtml = format_stat(stat);
|
52
|
-
$('li[data-key="' + stat.key + '"]').remove();
|
53
|
-
$(statHtml).insertAfter('#stats');
|
54
|
-
$('#data').listview('refresh');
|
55
|
-
}
|
56
|
-
|
57
|
-
function updateUpdatedAt() {
|
58
|
-
var time = new Date().toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
|
59
|
-
$("#last_update").text(time);
|
60
|
-
}
|
61
37
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
updateUpdatedAt();
|
74
|
-
var obj = $.parseJSON(m.data);
|
75
|
-
addOrUpdateStat(obj);
|
76
|
-
};
|
77
|
-
});
|
78
|
-
</script>
|
38
|
+
<!-- Template that is cloned fo all stats that carry additional data-->
|
39
|
+
<div data-role="page" id="_InpageDataTemplate">
|
40
|
+
<div data-theme="b" data-role="header">
|
41
|
+
<h3 class="header"></h3>
|
42
|
+
</div>
|
43
|
+
<div data-role="content">
|
44
|
+
<ul data-role="listview" data-inset="true" class="content">
|
45
|
+
</ul>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</body>
|
79
49
|
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: junkie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
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: 2012-12-
|
12
|
+
date: 2012-12-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
@@ -249,6 +249,7 @@ files:
|
|
249
249
|
- lib/junkie/reactor.rb
|
250
250
|
- lib/junkie/version.rb
|
251
251
|
- lib/junkie/webinterface/interface.rb
|
252
|
+
- lib/junkie/webinterface/public/js/index.js
|
252
253
|
- lib/junkie/webinterface/views/index.erb
|
253
254
|
- spec/config_spec.rb
|
254
255
|
- spec/environment_spec.rb
|