autoaudio 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f246e56c1fb76a81a197843e8701ba0be372a443
4
+ data.tar.gz: 1cefafcdbbe19f503e1011400ae26d6055f02f0e
5
+ SHA512:
6
+ metadata.gz: 7b99ffc1308814a18ae8eb3c5eaf161df25cbb94788bf45a7b6372709c89874f5b1f2628e973d968e9ee764ffa8b78ef4be334614c4f959248e46913d8b7d6d9
7
+ data.tar.gz: 0c3945c6592fa8ca79e02aa98e97dd2973ff41e4ff252cfbc44ed61f4bbcd7e93983276c3ceeb5c87648a3b44531b2a2014481c612a8d1a1f0530f4c77b4142e
data/.gitignore ADDED
@@ -0,0 +1,28 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ *.log
20
+ .idea
21
+ .DS_Store
22
+ .DS_Store?
23
+ ._*
24
+ .Spotlight-V100
25
+ .Trashes
26
+ Thumbs.db
27
+
28
+ tmp/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in autoaudio.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Gene Locklin
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # Autoaudio
2
+
3
+ Autoaudio parses [http://nfodb.net.ru/rss.php](http://nfodb.net.ru/rss.php) for the latest Scene audio releases. Then, it queries [http://nzbindex.nl/](http://nzbindex.nl/) for the release and creates an `.nzb`.
4
+
5
+ Releases are sorted by genre and album title and folders are created which hold `.nfo` and `.nzb` files for each release. A zip is created of each folder and is uploaded to [https://anonfiles.com/](https://anonfiles.com/). The resulting list is uploaded as an anonymous gist. A file called `download.thor`, which is a tiny robot that parses the anonymous gist and redownloads the files from [https://anonfiles.com/](https://anonfiles.com/), is uploaded with the album links. Finally, the gist url is tweeted.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'autoaudio'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install autoaudio
20
+
21
+ ## Usage
22
+
23
+ Setings can be found in `/lib/autoaudio/settings.rb`. `NZB_DOWNLOAD_LOCATION` is where to set where you want to store your `.nzb` and `.nfo` files. `TWITTER_SETTINGS` has two options. Set `:tweet_nzbs` to true, if you want to tweet your results. And your Twitter username is stored in `:username`.
24
+
25
+ Autoaudio has a set of terminal commands:
26
+
27
+ * `display_configuration_settings` Displays application configuration settings
28
+ * `make_feeds` Downloads all feeds into the database
29
+ * `display_feeds` Displays all feeds
30
+ * `destroy_feeds` Destroys all feeds
31
+ * `download` Downloads all feeds, creates `.nzb` and `.nfo` files, zips and uploads to [https://anonfiles.com/](https://anonfiles.com/), creates a list of upload urls and tweets an the url of anonymous gist containing the upload urls.
32
+ * `download_genre GENRE` This command will open a single genre's `.nzb` files in your chosen newsreader, and update the database to reflect the change.
33
+
34
+ If you wish to tweet your results, you will need to install and set up [t](https://github.com/sferik/t). Autoaudio will automatically set your Twitter username, before tweeting.
35
+
36
+ ## Gems Used
37
+ * [mongoid](https://github.com/mongoid/mongoid)
38
+ * [mechanize](https://github.com/sparklemotion/mechanize/)
39
+ * [gist](https://github.com/defunkt/gist)
40
+ * [thor](https://github.com/erikhuda/thor)
41
+ * [t](https://github.com/sferik/t)
42
+
43
+ ## To do:
44
+
45
+ * write a more understandable readme
46
+ * clean up the code - at the moment, it's a huge ball of crap
47
+ * error handling
48
+ * multithreading
49
+ * tests
50
+ * include a launchd plst for for running locally
51
+ * more upload options
52
+ * more search and source options
53
+ * [tor-privoxy](https://github.com/pirj/tor-privoxy)
54
+
55
+ ## License
56
+
57
+ Copyright (c) 2014 Gene Locklin
58
+
59
+ MIT License
60
+
61
+ Permission is hereby granted, free of charge, to any person obtaining
62
+ a copy of this software and associated documentation files (the
63
+ "Software"), to deal in the Software without restriction, including
64
+ without limitation the rights to use, copy, modify, merge, publish,
65
+ distribute, sublicense, and/or sell copies of the Software, and to
66
+ permit persons to whom the Software is furnished to do so, subject to
67
+ the following conditions:
68
+
69
+ The above copyright notice and this permission notice shall be
70
+ included in all copies or substantial portions of the Software.
71
+
72
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
73
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
74
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
75
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
76
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
77
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
78
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
79
+
80
+ ## Contributing
81
+
82
+ 1. Fork it
83
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
84
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
85
+ 4. Push to the branch (`git push origin my-new-feature`)
86
+ 5. Create new Pull Request
data/Thorfile ADDED
@@ -0,0 +1,29 @@
1
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
2
+
3
+ require 'bundler'
4
+ require 'thor/rake_compat'
5
+
6
+ class Default < Thor
7
+ include Thor::RakeCompat
8
+ Bundler::GemHelper.install_tasks
9
+
10
+ desc 'build', "Build autoaudio-#{Autoaudio::VERSION}.gem into the pkg directory"
11
+ def build
12
+ Rake::Task['build'].execute
13
+ end
14
+
15
+ desc 'install', "Build and install autoaudio-#{Autoaudio::VERSION}.gem into system gems"
16
+ def install
17
+ Rake::Task['install'].execute
18
+ end
19
+
20
+ desc 'release', "Create tag v#{Autoaudio::VERSION} and build and push autoaudio-#{Autoaudio::VERSION}.gem to Rubygems"
21
+ def release
22
+ Rake::Task['release'].execute
23
+ end
24
+
25
+ desc 'spec', 'Run RSpec code examples - These don\'t exist yet...'
26
+ def spec
27
+ exec 'rspec spec'
28
+ end
29
+ end
data/autoaudio.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'autoaudio/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'autoaudio'
8
+ spec.version = Autoaudio::VERSION
9
+ spec.authors = ['Gene Locklin']
10
+ spec.email = ['gene.locklin@gmail.com']
11
+ spec.description = %q{Automatically download scene .nfo and .nzb files}
12
+ spec.summary = spec.description
13
+ spec.homepage = 'https://github.com/GeneLocklin/autoaudio'
14
+ spec.license = 'MIT'
15
+ # spec.post_install_message = ''
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = %w[lib]
21
+
22
+ spec.add_dependency 'mechanize'
23
+ spec.add_dependency 'mongoid'
24
+ spec.add_dependency 'thor'
25
+ spec.add_dependency 'gist'
26
+ spec.add_dependency 't'
27
+
28
+ spec.add_development_dependency 'bundler', '~> 1.3'
29
+ spec.add_development_dependency 'rake'
30
+ spec.add_development_dependency 'rspec'
31
+ spec.add_development_dependency 'guard'
32
+ spec.add_development_dependency 'guard-rspec'
33
+ spec.add_development_dependency 'guard-bundler'
34
+ end
35
+
data/bin/autoaudio ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'autoaudio'
4
+
5
+ Autoaudio::Cli::Application.start(ARGV)
@@ -0,0 +1,6 @@
1
+ development:
2
+ sessions:
3
+ default:
4
+ database: autoaudio
5
+ hosts:
6
+ - localhost:27017
data/etc/aa.jpg ADDED
Binary file
data/etc/download.thor ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'mechanize'
4
+ require 'thor'
5
+
6
+ # ---------------------------------------------
7
+
8
+ class Download < Thor
9
+ desc "anonymous_gist GIST_HASH", "Example: thor download:anonymous_gist 7da2f5e6bf31b3ec4eee"
10
+
11
+ def anonymous_gist(gist_hash)
12
+ anon_regex = /https:\/\/anonfiles.com\/file\/\b[A-Za-z0-9]{32}\b/
13
+ agent = Mechanize.new
14
+ page = agent.get("https://gist.github.com/anonymous/#{gist_hash}/raw/")
15
+ song_links = page.body.scan(anon_regex)
16
+
17
+ song_links.each do |link|
18
+ page = agent.get(link)
19
+ download_link = page.link_with(:class => /download_button/, :text => /Download/)
20
+ title = page.title.gsub('AnonFiles.com - ', '')
21
+ download_link.click.save! "#{Dir.home}/Downloads/AnonNZB/#{title}"
22
+ end
23
+ end
24
+ end
data/lib/autoaudio.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'mechanize'
2
+ require 'open-uri'
3
+ require 'mongoid'
4
+ require 'gist'
5
+ require 't'
6
+
7
+ require 'autoaudio/version'
8
+ require 'autoaudio/settings'
9
+ require 'autoaudio/cli/application'
10
+
11
+ require 'autoaudio/utility'
12
+ require 'autoaudio/feed'
13
+ require 'autoaudio/download'
14
+
15
+ module Autoaudio
16
+ extend self
17
+ Mongoid.load!("config/mongoid.yml", :development)
18
+ end
19
+
20
+
21
+
@@ -0,0 +1,73 @@
1
+ require 'thor'
2
+
3
+ module Autoaudio
4
+ module Cli
5
+ class Application < Thor
6
+
7
+ desc 'display_configuration_settings', 'Displays the application configuration settings'
8
+ def display_configuration_settings
9
+ puts "Autoaudio::VERSION = #{Autoaudio::VERSION}"
10
+ puts "Download location = #{Autoaudio::Config::NZB_DOWNLOAD_LOCATION[:directory]}"
11
+ puts "Tweet = #{Autoaudio::Config::TWITTER_SETTINGS[:tweet_nzbs]}"
12
+ if Autoaudio::Config::TWITTER_SETTINGS[:tweet_nzbs] == true
13
+ puts "Twitter Username = #{Autoaudio::Config::TWITTER_SETTINGS[:username]}"
14
+ end
15
+ end
16
+
17
+ desc 'make_feeds', 'Make all feeds'
18
+ def make_feeds
19
+ Feed.make
20
+ end
21
+
22
+ desc 'display_feeds', 'Display all feeds'
23
+ def display_feeds
24
+ Feed.each { |f| pp f }
25
+ end
26
+
27
+ desc 'destroy_feeds', 'Destroy all feeds'
28
+ def destroy_feeds
29
+ Feed.each { |f| f.destroy }
30
+ end
31
+
32
+ desc 'download', 'Downloads all feeds'
33
+ def download
34
+ Feed.make
35
+ feeds = Feed.where(downloaded: false).each.to_a
36
+ i = (feeds.length / 5)
37
+ while i > 0
38
+ new_array = Array.new
39
+ 5.times do
40
+ new_array << feeds.pop
41
+ end
42
+ new_array.each { |feed| Download.album(feed) }
43
+ sleep 20
44
+ i -= 1
45
+ end
46
+ unless File.zero?('./log/gist.txt')
47
+ system("gist -c -p -d \"#{DateTime.now}\" -f \"#{DateTime.now}\" './log/gist.txt' -f download.thor './etc/download.thor'")
48
+ if Autoaudio::Config::TWITTER_SETTINGS[:tweet_nzbs] == true
49
+ system("t set active #{Autoaudio::Config::TWITTER_SETTINGS[:username]}")
50
+ system("t update `pbpaste`")
51
+ end
52
+ end
53
+ File.truncate('./log/gist.txt', 0)
54
+ end
55
+
56
+ desc 'download_genre GENRE', 'Download a specific genre'
57
+ def download_genre(genre_formatted)
58
+ genre = Feed.where(
59
+ # audio_format: "MP3",
60
+ genre_formatted: genre_formatted,
61
+ nzb_opened: false
62
+ )
63
+ genre.each do |feed|
64
+ if feed.nzb != nil
65
+ system("open #{feed.nzb}")
66
+ feed.update_attribute(:nzb_opened, true)
67
+ end
68
+ end
69
+ end
70
+
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,126 @@
1
+ require 'autoaudio/utility'
2
+
3
+ module Autoaudio
4
+ class Download
5
+ extend Utility
6
+ def self.album(feed)
7
+
8
+ hash_regex = Regexp.new('\b[A-Za-z0-9]{32}\b')
9
+ psydealer_regex = Regexp.new('PsyDealer')
10
+ town_regex = Regexp.new('town\.ag')
11
+ flac_regex = Regexp.new('a\.b\.flac|a\.b\.sounds\.flac')
12
+
13
+ download_location = "#{Autoaudio::Config::NZB_DOWNLOAD_LOCATION[:directory]}/#{feed.genre_formatted}/#{sanitize_filename(feed.album_title)}"
14
+ nzb = "#{download_location}/#{sanitize_filename(feed.album_title)}.nzb"
15
+ nfo = "#{download_location}/#{sanitize_filename(feed.album_title)}.nfo"
16
+ zip = "#{download_location}/#{sanitize_filename(feed.album_title)}.zip"
17
+
18
+ agent = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' }
19
+ cookie = HTTP::Cookie.new(
20
+ :domain => 'nzbindex.nl',
21
+ :name => "agreed",
22
+ :value => "true",
23
+ :path => '/',
24
+ :expires => (Date.today + 1).to_s)
25
+ agent.cookie_jar.add(cookie)
26
+
27
+ page = agent.get('http://nzbindex.nl/')
28
+ search_form = page.form
29
+ search_form.q = feed.album_title
30
+ results_page = agent.submit(search_form, search_form.buttons.first)
31
+
32
+ if !feed.downloaded && results_page.links_with(:text => 'Download', :href => town_regex).any? do |link|
33
+ agent.get(link.click).save! nzb
34
+ puts success("Town = #{feed.album_title}")
35
+ feed.update_attributes(
36
+ downloaded: true,
37
+ download_method: "Town",
38
+ nzb: nzb
39
+ )
40
+ end
41
+ end
42
+ if results_page.links_with(:text => 'Download', :href => hash_regex).any? do |link|
43
+ search_term = hash_regex.match(link.href)
44
+ page = agent.get("http://nzbindex.nl/groups/alt.binaries.inner-sanctum/?q=#{search_term}")
45
+ form = page.form_with(:action => 'http://nzbindex.nl/download/')
46
+ form.checkboxes.each { |checkbox| checkbox.check if hash_regex.match(checkbox.text) }
47
+ form.submit.save! nzb
48
+ puts success("inner-sanctum => #{hash_regex.match(link.href)} = #{feed.album_title}")
49
+ feed.update_attributes(
50
+ downloaded: true,
51
+ download_method: "inner-sanctum #{hash_regex.match(link.href)}",
52
+ nzb: nzb
53
+ )
54
+ end
55
+ end
56
+ if !feed.downloaded && results_page.links_with(:text => 'Download', :href => hash_regex).any? do |link|
57
+ search_form = page.form
58
+ search_form.q = hash_regex.match(link.href)
59
+ results_page = agent.submit(search_form, search_form.buttons.first)
60
+ form = results_page.form_with(:action => 'http://nzbindex.nl/download/')
61
+ form.checkboxes.each { |checkbox| checkbox.check if hash_regex.match(checkbox.text) }
62
+ form.submit.save! nzb
63
+ puts success("#{hash_regex.match(link.href)} = #{feed.album_title}")
64
+ feed.update_attributes(
65
+ downloaded: true,
66
+ download_method: hash_regex.match(link.href),
67
+ nzb: nzb
68
+ )
69
+ end
70
+ end
71
+ if !feed.downloaded && results_page.links_with(:text => 'Download', :href => psydealer_regex).any? do |link|
72
+ agent.get(link.click).save! nzb
73
+ puts success("Town = #{feed.album_title}")
74
+ feed.update_attributes(
75
+ downloaded: true,
76
+ download_method: "Psydealer",
77
+ nzb: nzb
78
+ )
79
+ end
80
+ end
81
+ if !feed.downloaded && results_page.links_with(:text => 'Download', :href => flac_regex).each do |link|
82
+ form = results_page.form_with(:action => 'http://nzbindex.nl/download/')
83
+ form.checkboxes.each { |checkbox| checkbox.check if flac_regex.match(link.href) }
84
+ form.submit.save! nzb
85
+ puts success("FLAC = #{feed.album_title}")
86
+ feed.update_attributes(
87
+ downloaded: true,
88
+ download_method: "FLAC",
89
+ nzb: nzb
90
+ )
91
+ end
92
+ end
93
+ if !feed.downloaded
94
+ feed.update_attribute(:download_attempts, (feed.download_attempts + 1))
95
+ puts failure("NOPE = #{feed.album_title}")
96
+ end
97
+
98
+ if feed.downloaded
99
+ nfo_agent = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' }
100
+ nfo_page = nfo_agent.get("http://nfodb.net.ru/get_nfo-#{feed.release_number}.php")
101
+ nfo_page.save! nfo
102
+ puts success(".nfo created - #{feed.album_title}")
103
+ feed.update_attribute(:nfo, nfo)
104
+ end
105
+
106
+ if feed.nzb && feed.nfo
107
+ system("zip -vjr #{zip} #{download_location}/* -x \"*.DS_Store\"" )
108
+ feed.update_attribute(:zip, zip)
109
+ puts success(".zip created - #{feed.album_title}")
110
+
111
+ reply = './log/reply.txt'
112
+ system("curl -kF \"file=@#{zip}\" https://anonfiles.com/api/hotlink -o \"#{reply}\"")
113
+ zip_location = IO.readlines(reply)[0]
114
+ anon_hash = /\b[A-Za-z0-9]{32}\b/.match(zip_location)
115
+ feed.update_attribute(:zip_uploaded_url, "https://anonfiles.com/file/#{anon_hash}")
116
+ puts success("#{feed.album_title} = https://anonfiles.com/file/#{anon_hash}")
117
+ if Autoaudio::Config::TWITTER_SETTINGS[:tweet_nzbs] == true
118
+ write_gist("#{feed.album_title} = https://anonfiles.com/file/#{anon_hash}")
119
+ end
120
+ File.truncate(reply, 0)
121
+ end
122
+
123
+ end
124
+
125
+ end
126
+ end
@@ -0,0 +1,77 @@
1
+ module Autoaudio
2
+ class Feed
3
+ include Mongoid::Document
4
+ include Mongoid::Timestamps
5
+
6
+ field :release_date, type: DateTime
7
+ field :release_number, type: Integer
8
+ field :genre, type: String
9
+ field :genre_formatted, type: String
10
+ field :album_title, type: String
11
+ field :downloaded, type: Boolean
12
+ field :download_attempts, type: Integer
13
+ field :download_method, type: String
14
+ field :audio_format, type: String
15
+ field :nzb, type: String
16
+ field :nzb_opened, type: Boolean
17
+ field :nfo, type: String
18
+ field :zip, type: String
19
+ field :zip_uploaded_url, type: String
20
+
21
+ def self.make
22
+ feeds = parse
23
+ feeds.each do |f|
24
+ unless Feed.where(album_title: f[:album]).exists?
25
+ feed = Feed.create(
26
+ :release_date => f[:date],
27
+ :release_number => f[:release_number],
28
+ :genre => f[:genre],
29
+ :genre_formatted => format_string(f[:genre]),
30
+ :album_title => f[:album],
31
+ :downloaded => false,
32
+ :download_attempts => 0,
33
+ :download_method => nil,
34
+ :audio_format => test_audio_format(f[:album]),
35
+ :nzb => nil,
36
+ :nzb_opened => false,
37
+ :nfo => nil,
38
+ :zip => nil,
39
+ :zip_uploaded_url => nil
40
+ )
41
+ feed.save
42
+ end
43
+ end
44
+ end
45
+
46
+ class << self
47
+ private
48
+
49
+ def parse(feed="http://nfodb.net.ru/rss.php")
50
+ doc = Nokogiri::XML(open(feed))
51
+ doc.search('item').map do |doc_item|
52
+ item = {}
53
+ item[:link] = doc_item.at('link').text
54
+ item[:album] = doc_item.at('title').text.gsub(/\[(.*?)\]./, '')
55
+ item[:genre] = doc_item.at('title').text[/[^\[]+[^\\]\]/].gsub(/[\[(.*?)\]]/,'')
56
+ item[:date] = doc_item.at('description').text.gsub(/Date:./,'')
57
+ item[:release_number] = doc_item.at('link').text.match(/(http:\/\/nfodb.net.ru\/nfo-)(.*?)(.html)/)[2]
58
+ item
59
+ end
60
+ end
61
+ def format_string(string)
62
+ string = string.dup
63
+ string.gsub!(/&/, '_and_') if string.match(/\w&\w/)
64
+ string.gsub!(/\+/, '_and_')
65
+ string.gsub!(/&/, 'and')
66
+ string.gsub!(/-/, '_')
67
+ string.gsub!(/ / ,'_')
68
+ string.downcase!
69
+ string
70
+ end
71
+ def test_audio_format(string)
72
+ string = string.dup
73
+ string.match(/FLAC/) ? string = "FLAC" : string = "MP3"
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,6 @@
1
+ module Autoaudio
2
+ module Config
3
+ NZB_DOWNLOAD_LOCATION = {:directory => "#{Dir.home}/Downloads/Albums"}
4
+ TWITTER_SETTINGS = {:tweet_nzbs => true, :username => 'usenetdecoded'}
5
+ end
6
+ end
@@ -0,0 +1,24 @@
1
+ require 'autoaudio'
2
+
3
+ module Utility
4
+
5
+ def success(string)
6
+ %Q(\e[32m#{string}\e[0m)
7
+ end
8
+
9
+ def failure(string)
10
+ %Q(\e[1;41;37m#{string}\e[0m)
11
+ end
12
+
13
+ def write_gist(string)
14
+ File.open('./log/gist.txt', 'a') { |f| f.write "* #{string}\n" }
15
+ end
16
+
17
+ def sanitize_filename(filename)
18
+ fn = filename.split(/(?<=.)\.(?=[^.])(?!.*\.[^.])/m)
19
+ fn.map! { |s| s.gsub( /[^a-z0-9\-]+/i, '_') }
20
+ return fn.join('.')
21
+ end
22
+
23
+ end
24
+
@@ -0,0 +1,3 @@
1
+ module Autoaudio
2
+ VERSION = "0.0.1"
3
+ end
data/log/gist.txt ADDED
File without changes
data/log/reply.txt ADDED
File without changes
metadata ADDED
@@ -0,0 +1,218 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autoaudio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Gene Locklin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mechanize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mongoid
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: gist
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: t
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: guard-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard-bundler
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Automatically download scene .nfo and .nzb files
168
+ email:
169
+ - gene.locklin@gmail.com
170
+ executables:
171
+ - autoaudio
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - ".gitignore"
176
+ - Gemfile
177
+ - LICENSE.txt
178
+ - README.md
179
+ - Thorfile
180
+ - autoaudio.gemspec
181
+ - bin/autoaudio
182
+ - config/mongoid.yml
183
+ - etc/aa.jpg
184
+ - etc/download.thor
185
+ - lib/autoaudio.rb
186
+ - lib/autoaudio/cli/application.rb
187
+ - lib/autoaudio/download.rb
188
+ - lib/autoaudio/feed.rb
189
+ - lib/autoaudio/settings.rb
190
+ - lib/autoaudio/utility.rb
191
+ - lib/autoaudio/version.rb
192
+ - log/gist.txt
193
+ - log/reply.txt
194
+ homepage: https://github.com/GeneLocklin/autoaudio
195
+ licenses:
196
+ - MIT
197
+ metadata: {}
198
+ post_install_message:
199
+ rdoc_options: []
200
+ require_paths:
201
+ - lib
202
+ required_ruby_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ required_rubygems_version: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
212
+ requirements: []
213
+ rubyforge_project:
214
+ rubygems_version: 2.1.11
215
+ signing_key:
216
+ specification_version: 4
217
+ summary: Automatically download scene .nfo and .nzb files
218
+ test_files: []