dropcaster 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.document CHANGED
@@ -1,5 +1,5 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
- source :rubygems
2
-
3
- gem 'ruby-mp3info'
4
- gem 'activesupport'
5
-
6
- group :development do
7
- gem "bundler", "~> 1.0.0"
8
- gem "jeweler", "~> 1.6.4"
9
- gem 'libxml-ruby'
10
- gem 'rdoc'
11
- end
1
+ source :rubygems
2
+
3
+ gem 'ruby-mp3info'
4
+ gem 'activesupport'
5
+
6
+ group :development do
7
+ gem "bundler", "~> 1.0.0"
8
+ gem "jeweler", "~> 1.6.4"
9
+ gem 'libxml-ruby'
10
+ gem 'rdoc'
11
+ end
data/Gemfile.lock CHANGED
@@ -1,26 +1,26 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activesupport (3.0.10)
5
- git (1.2.5)
6
- jeweler (1.6.4)
7
- bundler (~> 1.0)
8
- git (>= 1.2.5)
9
- rake
10
- libxml-ruby (2.2.1)
11
- libxml-ruby (2.2.1-x86-mingw32)
12
- rake (0.9.2)
13
- rdoc (3.9.3)
14
- ruby-mp3info (0.6.15)
15
-
16
- PLATFORMS
17
- ruby
18
- x86-mingw32
19
-
20
- DEPENDENCIES
21
- activesupport
22
- bundler (~> 1.0.0)
23
- jeweler (~> 1.6.4)
24
- libxml-ruby
25
- rdoc
26
- ruby-mp3info
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.0.10)
5
+ git (1.2.5)
6
+ jeweler (1.6.4)
7
+ bundler (~> 1.0)
8
+ git (>= 1.2.5)
9
+ rake
10
+ libxml-ruby (2.2.1)
11
+ libxml-ruby (2.2.1-x86-mingw32)
12
+ rake (0.9.2)
13
+ rdoc (3.9.3)
14
+ ruby-mp3info (0.6.15)
15
+
16
+ PLATFORMS
17
+ ruby
18
+ x86-mingw32
19
+
20
+ DEPENDENCIES
21
+ activesupport
22
+ bundler (~> 1.0.0)
23
+ jeweler (~> 1.6.4)
24
+ libxml-ruby
25
+ rdoc
26
+ ruby-mp3info
data/LICENSE.txt CHANGED
@@ -1,20 +1,20 @@
1
- Copyright (c) 2011 Nicolas E. Rabenau
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2011 Nicolas E. Rabenau
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,147 +1,155 @@
1
- Dropcaster - Simple Podcast Publishing with Dropbox
2
- ===================================================
3
- [Dropcaster](http://nerab.github.com/dropcaster) is a podcast feed generator for the command line. It is most simple to use with Dropbox, but works equally well with any other hoster.
4
-
5
- Author: Nicolas E. Rabenau <nerab@gmx.at>
6
-
7
- What is the problem Dropcaster is trying to solve?
8
- ==================================================
9
- You have a number of podcast episodes that you would like to publish as a feed. Nothing else - no fancy website, no stats, nothing but the pure podcast.
10
-
11
- With Dropcaster, you simply put the mp3 files into the Public folder of your [Dropbox](http://www.dropbox.com/). Then run the Dropcaster script that generates the feed, writing it to a file in your Dropbox, e.g. index.rss. All mp3 files in the Public folder of your Dropbox are already accessible via HTTP, and so will the RSS file. You can then take the RSS file's URL and publish it (again, this is because any file in the Public folder of a Dropbox automatically gets a public, HTTP-accessible URL).
12
-
13
- The feed URL can be consumed by any podcatcher, e.g. [iTunes](http://www.apple.com/itunes/) or [Juice](http://juicereceiver.sourceforge.net/).
14
-
15
- Installation
16
- ============
17
- To get started, use RubyGems to install Dropcaster:
18
-
19
- $ gem install dropcaster
20
-
21
- With Dropcaster installed, you can use the `dropcaster` command to generate a new podcast feed document.
22
-
23
- Basic Usage
24
- ===========
25
- Once Dropcaster is installed, the only two other things you will need are a channel definition and one or more mp3 files to publish.
26
-
27
- Let's start with the channel definition. It is a simple [YAML](http://yaml.org/) file that holds the general information about your podcast channel. According to the [RSS 2.0 spec](http://feedvalidator.org/docs/rss2.html#requiredChannelElements), the only mandatory information that your channel absolutely needs are a title, a description and a link to a web site where the channel belongs to.
28
-
29
- The simplest channel file looks like this:
30
-
31
- :title: 'All About Everything'
32
- :subtitle: 'A show about everything'
33
- :url: 'http://www.example.com/podcasts/everything/index.html'
34
-
35
- Store this file as channel.yml in the same directory where the mp3 files of your podcast reside. The channel definition is expected to be present in the same directory as your mp3 files, but this can be overridden using a command line switch. You can find a [more elaborate example](http://github.com/nerab/dropcaster/blob/master/doc/sample-channel.yml) for the channel definition in the doc folder of the Dropcaster gem. You can find it by running `gem open dropcaster`. Instead of writing these title, subtitle, etc. to the channel.yml, you may also spedify them on the command line. For details, just run
36
-
37
- $ dropcaster --help
38
-
39
- Now that we have the podcast channel defined, we need at least one episode (an audio file) in it. From Dropcaster's perspective, it does not matter how the episode was produced, but the critical information is the meta data in the mp3 file, because that is the authoritative source for the episode information. Almost all audio editors can write metadata, usually called ID3 tags. Dropcaster reads these tags from the mp3 files and fills the item element in the feed (that's how an episode is defined, technically) from it.
40
-
41
- With all required pieces in place, we could generate the podcast feed. Just before we do that, we will inspect the feed by running the following commands:
42
-
43
- $ cd ~/Dropbox/Public
44
- $ dropcaster
45
-
46
- (The above lines assume that you are using Dropbox, and that there is at least one mp3 file in ~/Dropbox/Public).
47
-
48
- Dropcaster will print the feed to standard-out, without writing it to disk. When you are happy with the results, call Dropcaster again, but redirect the output to a file, this time:
49
-
50
- $ dropcaster > index.rss
51
-
52
- If all went well, you will now have a valid podcast feed in your Dropbox, listing all mp3 files as podcast episodes. Please see the section [Publish Your Feed] for details on how to find the public URL of your feed.
53
-
54
- Use Cases
55
- =========
56
- Publish a New Episode
57
- ---------------------
58
- 1. Drop the mp3 file into the Dropbox Public folder (e.g. ~/Dropbox/Public), and then run the following command in the directory where the mp3 files reside:
59
-
60
- $ dropcaster > index.rss
61
-
62
- 1. Dropbox will sync the updated index.rss file to its web server and any podcast client will download the new episode as soon as it has loaded the updated index.rss.
63
-
64
- Delete an Episode
65
- -----------------
66
- Remove the mp3 you want to delete from the Dropbox Public folder, and then run the following command in the directory where the remaining mp3 files reside:
67
-
68
- $ dropcaster > index.rss
69
-
70
- Replace an Episode With an Updated File
71
- ---------------------------------------
72
- In the Dropbox Public folder, replace the mp3 you want to update with a new version, and then run the following command in the directory where the mp3 files reside:
73
-
74
- $ dropcaster > index.rss
75
-
76
- Publish Your Feed
77
- -----------------
78
- 1. Re-generate the feed to make sure the it is up to date (see above):
79
-
80
- $ dropcaster > index.rss
81
-
82
- 1. In your Dropbox Public folder, right-click the index.rss and select "Dropbox / Copy public link". This copies the public, HTTP-addressable link to your podcast into the clipboard.
83
- 1. Publish this link and tell people to subscribe to it.
84
-
85
- Generate a Podcast Feed for a Subset of the Available MP3 Files
86
- ---------------------------------------------------------------
87
- Dropcaster accepts any number of files or directories as episodes. For directories, all files ending in .mp3 will be included. For advanced filtering, you can use regular shell patterns to further specify which files will be included. These patterns will be resolved by the shell itself (e.g. bash), and not by Dropcaster.
88
-
89
- For example, in order to generate a feed that only publishes MP3 files where the name starts with 'A', call Dropcaster like this:
90
-
91
- $ dropcaster A*.mp3 > index.rss
92
-
93
- Publish More than One Feed
94
- --------------------------
95
-
96
- $ dropcaster project1 > project1.rss
97
- $ dropcaster project2 > project2.rss
98
-
99
- or
100
-
101
- $ cd project1
102
- $ dropcaster > index.rss
103
- $ cd ../project2
104
- $ dropcaster > index.rss
105
-
106
- Include Episodes From Two Subdirectories Into a Single Feed
107
- -----------------------------------------------------------
108
-
109
- $ dropcaster project1 project2 > index.rss
110
-
111
- Advanced features
112
- =================
113
- Sidecar files
114
- -------------
115
- You may override the meta data for any episode by providing a YAML file with the same name as the mp3 file, but with an extension of yml or yaml (ususally refered to as [sidecar file](http://en.wikipedia.org/wiki/Sidecar_file)). Any attributes specified in this file override the ID tags in the mp3 file.
116
-
117
- Dropcaster will only write the sidecar file if the appropriate command line option was passed, and it will use the information in it only for generating new files like the index.rss. It will not write back to mp3 files.
118
-
119
- A Note on iTunes
120
- ----------------
121
- The generated XML file contains all elements required for iTunes. However, Dropcaster will not notify the iTunes store about new episodes.
122
-
123
- Using Dropcaster Without Dropbox
124
- --------------------------------
125
- The whole concept of Dropcaster works perfectly fine without Dropbox. Just run the Dropcaster script in a directory of mp3 files and upload the files as well as the generated index.rss to a web server. Leave the relative position of the index and mp3 files as is, otherwise the path to the mp3 files in index.rss will become invalid.
126
-
127
- Episode Identifier (uuid)
128
- -------------------------
129
- Dropcaster uses a rather simple approach to uniquely identify the episodes. It simply generates a SHA1 hash of the mp3 file. If it changes, for whatever reason (even if only a tag was changes), the episode will get a new UUID, and any podcatcher will fetch the episode again (which is what you want, in most cases).
130
-
131
- Modifying the sidecar file does not change the UUID, because it only affects the feed and not the episode itself.
132
-
133
- Contributing to Dropcaster
134
- ==========================
135
- Dropcaster is hosted at [Github](http://github.com/nerab/dropcaster):
136
-
137
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
138
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
139
- * Fork the project
140
- * Start a feature/bugfix branch
141
- * Commit and push until you are happy with your contribution
142
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
143
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
144
-
145
- Copyright
146
- =========
147
- Copyright (c) 2011 Nicolas E. Rabenau. See LICENSE.txt for further details.
1
+ Dropcaster - Simple Podcast Publishing with Dropbox
2
+ ===================================================
3
+ [Dropcaster](http://nerab.github.com/dropcaster) is a podcast feed generator for the command line. It is most simple to use with Dropbox, but works equally well with any other hoster.
4
+
5
+ Author: Nicolas E. Rabenau <nerab@gmx.at>
6
+
7
+ What is the problem Dropcaster is trying to solve?
8
+ ==================================================
9
+ You have a number of podcast episodes that you would like to publish as a feed. Nothing else - no fancy website, no stats, nothing but the pure podcast.
10
+
11
+ With Dropcaster, you simply put the mp3 files into the Public folder of your [Dropbox](http://www.dropbox.com/). Then run the Dropcaster script that generates the feed, writing it to a file in your Dropbox, e.g. index.rss. All mp3 files in the Public folder of your Dropbox are already accessible via HTTP, and so will the RSS file. You can then take the RSS file's URL and publish it (again, this is because any file in the Public folder of a Dropbox automatically gets a public, HTTP-accessible URL).
12
+
13
+ The feed URL can be consumed by any podcatcher, e.g. [iTunes](http://www.apple.com/itunes/) or [Juice](http://juicereceiver.sourceforge.net/).
14
+
15
+ Installation
16
+ ============
17
+ To get started, use RubyGems to install Dropcaster:
18
+
19
+ $ gem install dropcaster
20
+
21
+ With Dropcaster installed, you can use the `dropcaster` command to generate a new podcast feed document.
22
+
23
+ Basic Usage
24
+ ===========
25
+ Once Dropcaster is installed, the only two other things you will need are a channel definition and one or more mp3 files to publish.
26
+
27
+ Let's start with the channel definition. It is a simple [YAML](http://yaml.org/) file that holds the general information about your podcast channel. According to the [RSS 2.0 spec](http://feedvalidator.org/docs/rss2.html#requiredChannelElements), the only mandatory information that your channel absolutely needs are a title, a description and a link to a web site where the channel belongs to.
28
+
29
+ The simplest channel file looks like this:
30
+
31
+ :title: 'All About Everything'
32
+ :subtitle: 'A show about everything'
33
+ :url: 'http://www.example.com/podcasts/everything/index.html'
34
+
35
+ Store this file as channel.yml in the same directory where the mp3 files of your podcast reside. The channel definition is expected to be present in the same directory as your mp3 files, but this can be overridden using a command line switch. You can find a [more elaborate example](http://github.com/nerab/dropcaster/blob/master/doc/sample-channel.yml) for the channel definition in the doc folder of the Dropcaster gem. You can find it by running `gem open dropcaster`.
36
+
37
+ Now that we have the podcast channel defined, we need at least one episode (an audio file) in it. From Dropcaster's perspective, it does not matter how the episode was produced, but the critical information is the meta data in the mp3 file, because that is the authoritative source for the episode information. Almost all audio editors can write metadata, usually called ID3 tags. Dropcaster reads these tags from the mp3 files and fills the item element in the feed (that's how an episode is defined, technically) from it.
38
+
39
+ With all required pieces in place, we could generate the podcast feed. Just before we do that, we will inspect the feed by running the following commands:
40
+
41
+ $ cd ~/Dropbox/Public
42
+ $ dropcaster
43
+
44
+ (The above lines assume that you are using Dropbox, and that there is at least one mp3 file in ~/Dropbox/Public).
45
+
46
+ Dropcaster will print the feed to standard-out, without writing it to disk. When you are happy with the results, call Dropcaster again, but redirect the output to a file, this time:
47
+
48
+ $ dropcaster > index.rss
49
+
50
+ If all went well, you will now have a valid podcast feed in your Dropbox, listing all mp3 files as podcast episodes. Please see the section [Publish Your Feed] for details on how to find the public URL of your feed.
51
+
52
+ Use Cases
53
+ =========
54
+ Publish a New Episode
55
+ ---------------------
56
+ 1. Drop the mp3 file into the Dropbox Public folder (e.g. ~/Dropbox/Public), and then run the following command in the directory where the mp3 files reside:
57
+
58
+ $ dropcaster > index.rss
59
+
60
+ 1. Dropbox will sync the updated index.rss file to its web server and any podcast client will download the new episode as soon as it has loaded the updated index.rss.
61
+
62
+ Delete an Episode
63
+ -----------------
64
+ Remove the mp3 you want to delete from the Dropbox Public folder, and then run the following command in the directory where the remaining mp3 files reside:
65
+
66
+ $ dropcaster > index.rss
67
+
68
+ Replace an Episode With an Updated File
69
+ ---------------------------------------
70
+ In the Dropbox Public folder, replace the mp3 you want to update with a new version, and then run the following command in the directory where the mp3 files reside:
71
+
72
+ $ dropcaster > index.rss
73
+
74
+ Publish Your Feed
75
+ -----------------
76
+ 1. Re-generate the feed to make sure the it is up to date (see above):
77
+
78
+ $ dropcaster > index.rss
79
+
80
+ 1. In your Dropbox Public folder, right-click the index.rss and select "Dropbox / Copy public link". This copies the public, HTTP-addressable link to your podcast into the clipboard.
81
+ 1. Publish this link and tell people to subscribe to it.
82
+
83
+ Generate a Podcast Feed for a Subset of the Available MP3 Files
84
+ ---------------------------------------------------------------
85
+ Dropcaster accepts any number of files or directories as episodes. For directories, all files ending in .mp3 will be included. For advanced filtering, you can use regular shell patterns to further specify which files will be included. These patterns will be resolved by the shell itself (e.g. bash), and not by Dropcaster.
86
+
87
+ For example, in order to generate a feed that only publishes MP3 files where the name starts with 'A', call Dropcaster like this:
88
+
89
+ $ dropcaster A*.mp3 > index.rss
90
+
91
+ Publish More than One Feed
92
+ --------------------------
93
+
94
+ $ dropcaster project1 > project1.rss
95
+ $ dropcaster project2 > project2.rss
96
+
97
+ or
98
+
99
+ $ cd project1
100
+ $ dropcaster > index.rss
101
+ $ cd ../project2
102
+ $ dropcaster > index.rss
103
+
104
+ Include Episodes From Two Subdirectories Into a Single Feed
105
+ -----------------------------------------------------------
106
+
107
+ $ dropcaster project1 project2 > index.rss
108
+
109
+ Advanced features
110
+ =================
111
+ Overriding defaults
112
+ -------------------
113
+ Dropcaster is opinionated software. That means, it makes a number of assumptions about names, files, and directory strictures. Dropcaster will be most easy to use if these assumptions and opinions apply to your way of using the program.
114
+
115
+ However, it is still possible to override Dropcaster's behavior in many ways. You can, for instance, host your episode files on a different URL than the channel. Instead of writing title, subtitle, etc. to a channel.yml, you may also spedify them on the command line.
116
+
117
+ In order to find out about all the options, simply run
118
+
119
+ $ dropcaster --help
120
+
121
+ Sidecar files
122
+ -------------
123
+ You may override the meta data for any episode by providing a YAML file with the same name as the mp3 file, but with an extension of yml or yaml (ususally refered to as [sidecar file](http://en.wikipedia.org/wiki/Sidecar_file)). Any attributes specified in this file override the ID tags in the mp3 file.
124
+
125
+ Dropcaster will only write the sidecar file if the appropriate command line option was passed, and it will use the information in it only for generating new files like the index.rss. It will not write back to mp3 files.
126
+
127
+ A Note on iTunes
128
+ ----------------
129
+ The generated XML file contains all elements required for iTunes. However, Dropcaster will not notify the iTunes store about new episodes.
130
+
131
+ Using Dropcaster Without Dropbox
132
+ --------------------------------
133
+ The whole concept of Dropcaster works perfectly fine without Dropbox. Just run the Dropcaster script in a directory of mp3 files and upload the files as well as the generated index.rss to a web server. Leave the relative position of the index and mp3 files as is, otherwise the path to the mp3 files in index.rss will become invalid.
134
+
135
+ Episode Identifier (uuid)
136
+ -------------------------
137
+ Dropcaster uses a rather simple approach to uniquely identify the episodes. It simply generates a SHA1 hash of the mp3 file. If it changes, for whatever reason (even if only a tag was changes), the episode will get a new UUID, and any podcatcher will fetch the episode again (which is what you want, in most cases).
138
+
139
+ Modifying the sidecar file does not change the UUID, because it only affects the feed and not the episode itself.
140
+
141
+ Contributing to Dropcaster
142
+ ==========================
143
+ Dropcaster is hosted at [Github](http://github.com/nerab/dropcaster):
144
+
145
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
146
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
147
+ * Fork the project
148
+ * Start a feature/bugfix branch
149
+ * Commit and push until you are happy with your contribution
150
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
151
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
152
+
153
+ Copyright
154
+ =========
155
+ Copyright (c) 2011 Nicolas E. Rabenau. See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -1,47 +1,47 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "dropcaster"
18
- gem.homepage = "http://github.com/nerab/dropcaster"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Simple Podcast Publishing with Dropbox}
21
- gem.description = %Q{Dropcaster is a podcast feed generator for the command line. It is most simple to use with Dropbox, but works equally well with any other hoster.}
22
- gem.email = "nerab@gmx.at"
23
- gem.authors = ["nerab"]
24
- gem.executables << 'dropcaster'
25
- gem.executables << 'lstags'
26
- # dependencies defined in Gemfile
27
- end
28
- Jeweler::RubygemsDotOrgTasks.new
29
-
30
- require 'rake/testtask'
31
- Rake::TestTask.new(:test) do |test|
32
- test.libs << 'lib' << 'test'
33
- test.pattern = 'test/**/test_*.rb'
34
- test.verbose = true
35
- end
36
-
37
- task :default => :test
38
-
39
- require 'rdoc/task'
40
- RDoc::Task.new do |rdoc|
41
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
-
43
- rdoc.rdoc_dir = 'rdoc'
44
- rdoc.title = "dropcaster #{version}"
45
- rdoc.rdoc_files.include('README*')
46
- rdoc.rdoc_files.include('lib/**/*.rb')
47
- end
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "dropcaster"
18
+ gem.homepage = "http://nerab.github.com/dropcaster"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Simple Podcast Publishing with Dropbox}
21
+ gem.description = %Q{Dropcaster is a podcast feed generator for the command line. It is most simple to use with Dropbox, but works equally well with any other hoster.}
22
+ gem.email = "nerab@gmx.at"
23
+ gem.authors = ["nerab"]
24
+ gem.executables << 'dropcaster'
25
+ gem.executables << 'lstags'
26
+ # dependencies defined in Gemfile
27
+ end
28
+ Jeweler::RubygemsDotOrgTasks.new
29
+
30
+ require 'rake/testtask'
31
+ Rake::TestTask.new(:test) do |test|
32
+ test.libs << 'lib' << 'test'
33
+ test.pattern = 'test/**/test_*.rb'
34
+ test.verbose = true
35
+ end
36
+
37
+ task :default => :test
38
+
39
+ require 'rdoc/task'
40
+ RDoc::Task.new do |rdoc|
41
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
+
43
+ rdoc.rdoc_dir = 'rdoc'
44
+ rdoc.title = "dropcaster #{version}"
45
+ rdoc.rdoc_files.include('README*')
46
+ rdoc.rdoc_files.include('lib/**/*.rb')
47
+ end
data/TODO CHANGED
@@ -1,13 +1,14 @@
1
- * Take the the channel's URL as enclosure_url and make enclosure_url an optional parameter
2
- * In verbose mode, log warnings to STDERR for all the opinionated decisions and fallbacks that Dropcaster takes
3
- * Allow overriding the path to the ERB template (and document the available template variables)
4
- * Support a tree of iTunes categories: <itunes:category text="Technology"><itunes:category text="Gadgets"/></itunes:category>
5
- * If an index.html.erb is present, generate an index.html from it
6
- ** In addition to that, if an item.html.erb is present, generate individual html for each item from it and link to it from the index.html
7
- * Print warnings when one of the specs from http://www.apple.com/itunes/podcasts/specs.html is violated
8
- * Allow muting of the iTunes warnings (see above) using a commandline switch
9
- * Implement sidecar files
10
- * Support other file types than mp3 (e.g. ogg or pdf)
11
- * Treat lyrics as plain text for the episode page, and with an optional command line switch we could also support markdown etc.
12
- * Potential optimization for large numbers of mp3 files: If there is an existing index.rss file, do not re-read the information from those files that are still there and still have the same hash value.
13
- * It feels pretty awkward to refer to the ID3v2 frame names all the time. After all, this is an implementation detail. Maybe we can wrap the frames with a nicer name, but still allow access to the underlying mp3info library? Maybe all we need is some aliasing and / or delegation?
1
+ * Handle channel URLs not ending with a slash (may be required for hosts not discovering an index.html, like Dropbox)
2
+ * In verbose mode, log warnings to STDERR for all the opinionated decisions and fallbacks that Dropcaster takes
3
+ * Allow overriding the path to the ERB template (and document the available template variables)
4
+ * Support a tree of iTunes categories: <itunes:category text="Technology"><itunes:category text="Gadgets"/></itunes:category>
5
+ * If an index.html.erb is present, generate an index.html from it
6
+ ** In addition to that, if an item.html.erb is present, generate individual html for each item from it and link to it from the index.html
7
+ * Print warnings when one of the specs from http://www.apple.com/itunes/podcasts/specs.html is violated
8
+ * Allow muting of the iTunes warnings (see above) using a commandline switch
9
+ * Implement sidecar files
10
+ * Support other file types than mp3 (e.g. ogg or pdf)
11
+ * Treat lyrics as plain text for the episode page, and with an optional command line switch we could also support markdown etc.
12
+ * Potential optimization for large numbers of mp3 files: If there is an existing index.rss file, do not re-read the information from those files that are still there and still have the same hash value.
13
+ * It feels pretty awkward to refer to the ID3v2 frame names all the time. After all, this is an implementation detail. Maybe we can wrap the frames with a nicer name, but still allow access to the underlying mp3info library? Maybe all we need is some aliasing and / or delegation?
14
+ * Potentially replace the ERB template with Builder::XmlMarkup, see http://builder.rubyforge.org/ (the same that Rails uses)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3