poddb_client 0.1.4 → 0.1.5
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.
- data/README.markdown +170 -54
- data/Rakefile +2 -1
- data/coverage.markdown +0 -0
- data/lib/interactive.vim +1 -1
- data/lib/poddb_client.rb +12 -3
- data/lib/poddb_client/downloading.rb +1 -1
- data/lib/poddb_client/version.rb +1 -1
- data/links.markdown +4 -0
- metadata +4 -2
data/README.markdown
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
# poddb
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
[screenshots]
|
3
|
+
_Podcatching for nerds, Zen minimalists, and unix fanatics_.
|
6
4
|
|
5
|
+
Poddb lets you browse, search, and download podcasts from the Unix command line
|
6
|
+
and Vim.
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
* Search for podcasts from the command line
|
11
|
-
* Lean Vim interface to navigate, favorite, and download podcasts
|
12
|
-
* Handle podcasts directly as files; use any tool to play them
|
8
|
+
[screenshots]
|
13
9
|
|
14
10
|
|
15
11
|
## Prerequisites
|
@@ -29,6 +25,9 @@ Poddb assumes a Unix (POSIX) environment.
|
|
29
25
|
|
30
26
|
## Install
|
31
27
|
|
28
|
+
Poddb can be installed as a Ruby gem. Please note that while the tool is called
|
29
|
+
**poddb**, the gem is called **poddb_client**.
|
30
|
+
|
32
31
|
gem install poddb_client
|
33
32
|
|
34
33
|
Test your installation by typing `poddb -h`. You should see poddb's help.
|
@@ -36,87 +35,192 @@ Test your installation by typing `poddb -h`. You should see poddb's help.
|
|
36
35
|
On some systems you may run into a PATH issue, where the system can't find the
|
37
36
|
`poddb` command after installation. You might want to try
|
38
37
|
|
39
|
-
sudo gem install
|
38
|
+
sudo gem install poddb_client
|
40
39
|
|
41
40
|
to see if that puts `poddb` on your PATH.
|
42
41
|
|
43
42
|
If you ever want to uninstall Poddb from your system, just execute this command:
|
44
43
|
|
45
|
-
gem uninstall
|
44
|
+
gem uninstall poddb_client
|
46
45
|
|
47
|
-
|
48
|
-
creates
|
46
|
+
This will remove all traces of Poddb, except for the application-specific files
|
47
|
+
it creates in a directory called `~/.poddb`. These you'll have to remove
|
48
|
+
manually.
|
49
49
|
|
50
50
|
|
51
51
|
## How to use it
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
You invoke `poddb` from command line interface, passing it flags and search
|
54
|
+
terms. Poddb will send the query over the internet to the poddb server. (So you
|
55
|
+
must be online to use Poddb, though once you've downloaded some podcast audio
|
56
|
+
or video files you can play them entirely offline.) The server will send back
|
57
|
+
data, and poddb will launch Vim to let you navigate and interact with the query
|
58
|
+
results.
|
57
59
|
|
58
|
-
|
60
|
+
Here is a partial synopsis of the command line interface. A more detailed guide
|
61
|
+
to using Poddb follows.
|
59
62
|
|
60
63
|
Usage: poddb [options] [query]
|
61
64
|
|
62
|
-
-f, --from-favorites Show all recent
|
65
|
+
-f, --from-favorites Show all recent episodes from favorite podcasts
|
63
66
|
-a, --add PODCAST_URL Add podcast with PODCAST_URL to the poddb database
|
64
67
|
-l, --list [QUERY] List all podcasts in the poddb database
|
65
68
|
(If QUERY is supplied, will return matching podcasts)
|
66
69
|
-F, --favorite-podcasts Show favorite podcasts
|
67
70
|
-o, --order ORDER Sort results by ORDER
|
68
71
|
The only option right now is 'popular'. Default order is pubdate.
|
69
|
-
-d, --days DAYS Limit results to
|
70
|
-
-t, --type MEDIA_TYPE Return
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
-d, --days DAYS Limit results to episodes published since DAYS days ago
|
73
|
+
-t, --type MEDIA_TYPE Return episodes of MEDIA_TYPE only (audio,video)
|
74
|
+
|
75
|
+
## Browse and search for podcasts
|
76
|
+
|
77
|
+
To see all the podcasts in the poddb database:
|
75
78
|
|
79
|
+
poddb -l
|
80
|
+
|
81
|
+
Type `poddb -l QUERY` to see if any podcasts matching the QUERY string are in
|
82
|
+
the database. E.g.
|
76
83
|
|
77
|
-
|
84
|
+
poddb -l music
|
78
85
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
86
|
+
will return all the podcasts in the Poddb database with the word "music" in the
|
87
|
+
title or podcast description.
|
88
|
+
|
89
|
+
Press `ENTER` on a podcast to see its episodes. See **Navigate and download
|
90
|
+
podcast episodes** below for instruction on how to view and download episodes.
|
91
|
+
|
92
|
+
|
93
|
+
## Add podcasts to the database
|
94
|
+
|
95
|
+
If you don't see a favorite feed of yours in the list returned by `poddb -l`,
|
96
|
+
you can add the feed to the Poddb database with this command:
|
83
97
|
|
84
98
|
poddb -a PODCAST_URL
|
85
99
|
|
86
|
-
|
100
|
+
E.g.,
|
101
|
+
|
102
|
+
poddb -a http://www.philosophybites.libsyn.com/rss
|
103
|
+
|
104
|
+
The `-a` command will also add the podcast to your favorites.
|
105
|
+
|
106
|
+
|
107
|
+
## Favorite podcasts
|
108
|
+
|
109
|
+
When viewing a list of podcasts returned by `poddb -l`, you can add a podcast
|
110
|
+
to your favorites by putting the cursor over it and pressing `f`. Press `f`
|
111
|
+
again to remove the podcast from your favorite podcasts. Favorite podcasts
|
112
|
+
have a `@` sign in the left margin.
|
113
|
+
|
114
|
+
Once you have a few favorite podcasts, you can list and navigate them with
|
115
|
+
the command
|
116
|
+
|
117
|
+
poddb -F
|
118
|
+
|
119
|
+
You can also aggregate all the most recent episodes from your favorite episodes by
|
120
|
+
launching Poddb with the command
|
121
|
+
|
122
|
+
poddb -f
|
123
|
+
|
124
|
+
Your favorite podcasts are stored in `~/.poddb/favorites` as a simple list of
|
125
|
+
podcast ids. The ids are internal to Poddb's PostgreSQL database.
|
126
|
+
|
127
|
+
## Search for podcast episodes
|
128
|
+
|
129
|
+
With Poddb, you search for podcast episodes from the command line. If there are
|
130
|
+
matches, Poddb will launch the Vim navigation interface. If not, you'll just
|
131
|
+
see a message saying no matches were found.
|
132
|
+
|
133
|
+
A basic search like
|
134
|
+
|
135
|
+
poddb music oud
|
136
|
+
|
137
|
+
will return all podcast episodes that match the query words "music" and "oud."
|
87
138
|
|
88
|
-
|
89
|
-
by putting the cursor over it and pressing `f`. Press `f` again to remove the
|
90
|
-
podcast from your favorite podcasts. Your favorite podcasts are stored in
|
91
|
-
`~/.poddb/favorites` as a simple list of podcast ids.
|
139
|
+
You can also limit the scope of the search by media type:
|
92
140
|
|
93
|
-
|
141
|
+
poddb -t video ruby
|
94
142
|
|
143
|
+
will return all podcast episodes that match the words "food" and "recipe" that
|
144
|
+
are video downloads. You can use `-t audio` to limit search results to audio
|
145
|
+
downloads.
|
95
146
|
|
96
|
-
|
147
|
+
Two other command flags that are useful are `-o` and `-d`. `-d n` lets you
|
148
|
+
limit the scope of the search to episodes published in the last _n_ days. So
|
97
149
|
|
98
|
-
|
99
|
-
key commands apply:
|
150
|
+
poddb -d 7 libya
|
100
151
|
|
101
|
-
|
102
|
-
|
103
|
-
* `D` start downloading item and play with mplayer or `PODDB_MEDIA_PLAYER`
|
104
|
-
* `p` show all items for this podcast
|
105
|
-
* `CTRL-j` show next item
|
106
|
-
* `CTRL-k` show previous item
|
152
|
+
will return all podcast episodes that match the query "libya" published over
|
153
|
+
the last week.
|
107
154
|
|
108
|
-
|
109
|
-
|
155
|
+
To sort the search results by most popular episodes first, use the `-o popular`
|
156
|
+
flag. So
|
157
|
+
|
158
|
+
poddb -d 30 -o popular tiny desk concert
|
159
|
+
|
160
|
+
will show the most popular Tiny Desk Concert episodes in the last month
|
161
|
+
|
162
|
+
Invoking Poddb with no query words will show you all the most recent
|
163
|
+
episodes from all the podcasts in the Poddb database. So to see the most
|
164
|
+
popular downloads in the last week, you can use
|
165
|
+
|
166
|
+
poddb -d 7 -o popular
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
## Navigate and download podcast episodes
|
171
|
+
|
172
|
+
When you see a list of episodes, you can use the following key commands, in
|
173
|
+
addition to Vim's standard cursor commands:
|
174
|
+
|
175
|
+
* `l` or `ENTER` show episode detail
|
176
|
+
* `d` mark episode for download
|
177
|
+
* `D` start downloading episode immediately and play with `mplayer` or `PODDB_MEDIA_PLAYER`
|
178
|
+
* `p` show all episodes for this podcast
|
179
|
+
* `CTRL-j` show next episode
|
180
|
+
* `CTRL-k` show previous episode
|
181
|
+
|
182
|
+
If you press `p` to show all the episodes for the podcast, you can navigate back to the
|
183
|
+
previous screen with `CTRL-o` and return forward again with `CTRL-i`. In other words,
|
184
|
+
feel free to use Vim's jump-list navigation commands.
|
185
|
+
|
186
|
+
When you press `l` or `ENTER`, more information about the episode will appear in a split
|
187
|
+
window below the list.
|
188
|
+
|
189
|
+
If you mark episodes for downloading, Poddb will place a `*` in their left
|
190
|
+
margin and download them as soon as you quit the Vim interface with `:qa` or
|
191
|
+
some similar command.
|
192
|
+
|
193
|
+
Poddb uses `wget` to download episodes. The current version downloads all
|
194
|
+
marked episodes serially. A future version may implement parallel downloading.
|
195
|
+
|
196
|
+
Poddb downloads episodes into the current directory and saves them with
|
197
|
+
filenames that follow the format,
|
198
|
+
|
199
|
+
{title of podcast}.{title of episode}.{poddb internal identifier}.{filetype extension}
|
200
|
+
|
201
|
+
Examples:
|
202
|
+
|
203
|
+
The-Loh-Life.Wisconsin-Wasp-Nest-part-2.poddb42329.mp3
|
204
|
+
Philosophy-Bites.Michael-Sandel-on-Justice.poddb_711_56523.mp3
|
205
|
+
NPR-Tiny-Desk-Concerts-Podcast.Diego-Garcia.poddb_312_48461.m4v
|
110
206
|
|
111
207
|
If you press `D`, Poddb will quit the Vim interface immediately and begin
|
112
|
-
downloading the
|
113
|
-
Poddb will start playing the
|
114
|
-
|
208
|
+
downloading the episode that was under the cursor. After the download is complete,
|
209
|
+
Poddb will automatically start playing the episode with `mplayer`.
|
210
|
+
|
211
|
+
If you don't want to use `mplayer` or don't have it installed. You can make
|
212
|
+
Poddb launch a different media player by setting the `PODDB_MEDIA_PLAYER`
|
213
|
+
environment variable and exporting it. For example, to make Poddb use `totem`:
|
214
|
+
|
215
|
+
export PODDB_MEDIA_PLAYER=totem
|
216
|
+
poddb
|
115
217
|
|
116
|
-
|
117
|
-
|
218
|
+
Put the `export` command in your `.bash_profile` if you don't want to keep
|
219
|
+
typing it.
|
118
220
|
|
119
|
-
|
221
|
+
If you see a `D` on the left margin of an episode while you're looking at a
|
222
|
+
list of episodes, that means that you've already downloaded that episode into
|
223
|
+
the current directory.
|
120
224
|
|
121
225
|
|
122
226
|
## Bug reports and feature requests
|
@@ -126,6 +230,20 @@ Please submit them here:
|
|
126
230
|
* <https://github.com/danchoi/poddb_client/issues>
|
127
231
|
|
128
232
|
|
233
|
+
## About the app
|
234
|
+
|
235
|
+
Poddb has two parts, a client and a server. The client is a hybrid
|
236
|
+
Ruby/VimScript program packaged as a Ruby gem. The server is a Ruby
|
237
|
+
[Sinatra][sinatra] app sitting in front of a [PostgreSQL][postgres] database.
|
238
|
+
Podcast feeds are fetched with [curb][curb] and parsed with
|
239
|
+
[nokogiri][nokogiri].
|
240
|
+
|
241
|
+
[sinatra]:http://www.sinatrarb.com/
|
242
|
+
[postgres]:http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=postgresql
|
243
|
+
[curb]:http://curb.rubyforge.org/
|
244
|
+
[nokogiri]:http://nokogiri.org/
|
245
|
+
|
246
|
+
|
129
247
|
## About the developer
|
130
248
|
|
131
249
|
My name is Daniel Choi. I make software with Ruby, Rails, MySQL, PostgreSQL,
|
@@ -141,5 +259,3 @@ Software](http://kajasoftware.com).
|
|
141
259
|
[twitter]:http://twitter.com/#!/danchoi
|
142
260
|
|
143
261
|
|
144
|
-
|
145
|
-
|
data/Rakefile
CHANGED
@@ -39,8 +39,9 @@ desc "build webpage"
|
|
39
39
|
task :build_webpage do
|
40
40
|
`cp README.markdown ../project-webpages/src/poddb_client.README.markdown`
|
41
41
|
`cp coverage.markdown ../project-webpages/src/poddb_client.coverage.markdown`
|
42
|
+
`cp links.markdown ../project-webpages/src/poddb_client.links.markdown`
|
42
43
|
Dir.chdir "../project-webpages" do
|
43
|
-
puts `ruby gen.rb poddb_client #{
|
44
|
+
puts `ruby gen.rb poddb_client #{PoddbClient::VERSION}`
|
44
45
|
`open out/poddb_client.html`
|
45
46
|
end
|
46
47
|
end
|
data/coverage.markdown
ADDED
File without changes
|
data/lib/interactive.vim
CHANGED
data/lib/poddb_client.rb
CHANGED
@@ -6,7 +6,13 @@ require 'net/http'
|
|
6
6
|
|
7
7
|
class PoddbClient
|
8
8
|
|
9
|
-
#
|
9
|
+
# checks
|
10
|
+
%w( curl wget ).each do |x|
|
11
|
+
if `which #{x}` == ''
|
12
|
+
abort("Missing `#{x}`. Please install it before you start poddb.")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
10
16
|
SERVER = ENV['PODDB_SERVER'] || "http://poddb.com"
|
11
17
|
|
12
18
|
PODDB_DIR = "%s/.poddb" % ENV['HOME']
|
@@ -70,12 +76,15 @@ class PoddbClient
|
|
70
76
|
opts.on("--download-and-play ITEM_ID", "Download item and play with PODDB_MEDIA_PLAYER") do |item_id|
|
71
77
|
puts "Download and play #{item_id}"
|
72
78
|
end
|
73
|
-
opts.on("--
|
74
|
-
|
79
|
+
opts.on("--readme", "Show README") do
|
80
|
+
readme_file = File.expand_path("../../README.markdown", __FILE__)
|
81
|
+
system("less #{readme_file}")
|
75
82
|
exit
|
76
83
|
end
|
77
84
|
opts.on_tail("-h", "--help", "Show this message") do
|
78
85
|
puts opts
|
86
|
+
puts
|
87
|
+
puts "For more detailed help, use `poddb --readme` or visit http://danielchoi.com/software/poddb.html"
|
79
88
|
exit
|
80
89
|
end
|
81
90
|
opts.on_tail("-v", "--version", "Show version number") do
|
data/lib/poddb_client/version.rb
CHANGED
data/links.markdown
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poddb_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
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: 2011-09-
|
12
|
+
date: 2011-09-16 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Podcast aggregation from the command line
|
15
15
|
email:
|
@@ -24,10 +24,12 @@ files:
|
|
24
24
|
- README.markdown
|
25
25
|
- Rakefile
|
26
26
|
- bin/poddb
|
27
|
+
- coverage.markdown
|
27
28
|
- lib/interactive.vim
|
28
29
|
- lib/poddb_client.rb
|
29
30
|
- lib/poddb_client/downloading.rb
|
30
31
|
- lib/poddb_client/version.rb
|
32
|
+
- links.markdown
|
31
33
|
- poddb_client.gemspec
|
32
34
|
homepage: http://danielchoi.com/software/poddb.html
|
33
35
|
licenses: []
|