Commits

Michael Granger committed 76639fc

Checkpoint commit

Comments (0)

Files changed (29)

 # .rvm.gems generated gem export file. Note that any env variable settings will be missing. Append these after using a ';' field separator
+rspec -v2.14.0.rc1 --pre
 hoe-deveiate -v0.2.0
 loggability -v0.6.0
 sequel -v3.45.0

data/newznabr/apps/newznab-service

 # * http://newznab.readthedocs.org/en/latest/misc/api/
 #
 class NewzNabr::NewzNabService < Strelka::App
-	extend Configurability
-
-	# Configurability API -- use the :site section of the config
-	config_key :site
-
 
 	# Strelka App ID
 	ID = 'newznab-service'
 	# The mediatype associated with NZB files
 	NZB_MIMETYPE = 'application/x-nzb'
 
-	# Configurability API -- set configuration defaults
-	DEFAULT_CONFIG = {
-		name: 'Newz Nabber',
-		strapline: '',
-		admin_email: '',
-		logo_image: '',
-		limit: {
-			max: 100,
-			default: 50,
-		},
-		registration: {
-			available: true,
-			open: false,
-		},
-		retention: 400,
-	}
-
 
 	# A container for the XML serializer functions
 	module XMLSerializer
+		extend Loggability
+
+		log_to :newznabr
 
 		###############
 		module_function
 
 		### Add the specified +node+ to the given +xml+ builder and return the result.
 		def add_xml_node( xml, node )
+			self.log.debug "Adding node: %p" % [ node ]
 			node.each do |tag, contents|
+				self.log.debug "  %s => %p" % [ tag, contents ]
+
 				# If it's a Hash, there's only one, so add it directly
 				if contents.respond_to?( :key? )
 					attributes = contents.delete( :@attributes ) || {}
 	end # module XMLSerializer
 
 
-	##
-	# The 'site' config, installed via Configurability
-	singleton_attr_accessor :config
-
-
-	### Configurability API -- called when the 'site' section of the config is installed.
-	def self::configure( config )
-		self.log.debug 'Configured with: %p' % [ config ]
-		self.config = config
-	end
-
-
 	#
 	# Instance methods
 	#
 
-	### Set up some initial application state.
-	def initialize( * )
-		super
-
-		self.log.debug 'Site class config is: %p' % [ self.class.config ]
-		@config = DEFAULT_CONFIG.merge( self.class.config || {} )
-		self.log.debug 'Site config is: %p' % [ @config ]
-	end
-
-
 	######
 	public
 	######
 
-	##
-	# The site config, read from the 'site' section of the global config.
-	attr_reader :config
-
 
 	#
 	# Content negotiation
 	def newznab_api_caps( request )
 		return { caps: {
 			server: { :@attributes => self.cap_server_attributes(request) },
-			limits: { :@attributes => self.config[:limit] },
-			retention: { :@attributes => { days: self.config[:retention] } },
-			registration: { :@attributes => yesno_hash(self.config[:registration]) },
+			limits: { :@attributes => NewzNabr.config[:limit].to_hash },
+			retention: { :@attributes => { days: NewzNabr.config[:retention] } },
+			registration: { :@attributes => yesno_hash(NewzNabr.config[:registration].to_hash) },
 			searching: {
 				search: { :@attributes => { available: 'yes'} },
 				'tv-search' => { :@attributes => { available: 'no' } },
 		link = request.base_uri
 		link.path = nil
 
-		sitename = self.config[:name]
+		sitename = NewzNabr.config[:name]
 
 		return { rss: { :@attributes => { version: '2.0' },
 			channel: {
 				description: "#{sitename} Feed",
 				link: link.to_s,
 				language: 'en-US',
-				webMaster: self.config[:admin_email],
+				webMaster: NewzNabr.config[:admin_email],
 				category: {},
 				image: {
-					url: self.config[:logo_image],
+					url: NewzNabr.config[:logo_image],
 					title: sitename,
 					link: link.to_s,
-					description: self.config[:strapline],
+					description: NewzNabr.config[:strapline],
 				},
 				response: {
 					:@attributes => {
 	### Return +limit+ if it's within the constraints imposed by the config,
 	### or the value nearest to +limit+ which matches the constraints if not.
 	def add_search_limit( limit )
-		return self.config[:limit][:default] unless limit
+		return NewzNabr.config[:limit][:default] unless limit
 
 		limit = limit.to_i.abs
-		return limit if limit > 0 && limit <= self.config[:limit][:max]
+		return limit if limit > 0 && limit <= NewzNabr.config[:limit][:max]
 
 		return 1 if limit.zero?
-		return self.config[:limit][:max]
+		return NewzNabr.config[:limit][:max]
 	end
 
 
 	### Return a Hash describing the tree of Categories in a format suitable
 	### for serialization to either XML or JSON.
 	def cap_category_tree
-		dataset = NewzNabr::Category.active.toplevel.eager( :descendants )
+		dataset = NewzNabr::Category.active.toplevel.eager( :subcategories )
 		return {
 			category: dataset.collect do |cat|
 				{
 					:@attributes => cap_category_attributes(cat),
-					:subcat      => cat.descendants.collect do |subcat|
+					:subcat      => cat.subcategories.collect do |subcat|
 						{ :@attributes => cap_category_attributes(subcat) }
 					end
 				}
 		return {
 			appversion: NewzNabr::VERSION,
 			version:    API_VERSION_NUM,
-			title:      self.config[:name],
-			strapline:  self.config[:strapline],
-			email:      self.config[:admin_email],
+			title:      NewzNabr.config[:name],
+			strapline:  NewzNabr.config[:strapline],
+			email:      NewzNabr.config[:admin_email],
 			url:        site_url.to_s,
-			image:      self.config[:logo_image],
+			image:      NewzNabr.config[:logo_image],
 		}
 	end
 

data/newznabr/apps/newznabr-rest-service

 	#
 
 	param :last_updated, lambda {|string| Time.parse(string) }
+	param :keywords, /^(?<keywords>\w+(?:[ +]+\w+)*)$/, "Search keywords"
 
 
 	#
 
 	# api_description "A REST service for a NewzNabr index"
 
+	FT_QUERY = (<<-END_QUERY).strip.gsub( /\n\s*/, ' ' )
+		to_tsvector('english', searchname)
+		@@
+		to_tsquery('english', ?)
+	END_QUERY
+
+	get '/releases/search' do |req|
+		keywords = req.params[:keywords].split( /[ +]+/ )
+		self.log.debug "Searching for releases with keywords: %p" % [ keywords ]
+		dataset = NewzNabr::Release.dataset.filter( FT_QUERY, keywords.compact.join(' & ') )
+
+		if limit = req.params[:limit]
+			offset = req.params[:offset]
+			dataset = dataset.limit( limit, offset || 0 )
+		end
+
+		self.log.debug "Query is: %s" % [ dataset.sql ]
+
+		res = req.response
+		res.for( :json, :yaml ) { dataset.all }
+
+		return res
+	end
 
 end # class NewzNabr::RESTService
 

data/newznabr/defaultcategories.yml

-1000: 'Console'
-1010: 'NDS'
-1020: 'PSP'
-1030: 'Wii'
-1040: 'Xbox'
-1050: 'Xbox 360'
-1060: 'WiiWare/VC'
-1070: 'XBOX 360 DLC'
-1080: 'PS3'
-
-2000: 'Movies'
-2010: 'Foreign'
-2020: 'Other'
-2030: 'SD'
-2040: 'HD'
-
-3000: 'Audio'
-3010: 'MP3'
-3020: 'Video'
-3030: 'Audiobook'
-3040: 'Lossless'
-
-4000: 'PC'
-4010: '0day'
-4020: 'ISO'
-4030: 'Mac'
-4040: 'Phone'
-4050: 'Games'
-
-5000: 'TV'
-5020: 'Foreign'
-5030: 'SD'
-5040: 'HD'
-5050: 'Other'
-5060: 'Sport'
-
-6000: 'XXX'
-6010: 'DVD'
-6020: 'WMV'
-6030: 'XviD'
-6040: 'x264'
-
-7000: 'Other'
-7010: 'Misc'
-7020: 'Ebook'
-7030: 'Comics'
-7040: 'Anime'
-
+---
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1000
+    :parent_id: 
+    :name: Console
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1010
+    :parent_id: 1000
+    :name: NDS
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1020
+    :parent_id: 1000
+    :name: PSP
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1030
+    :parent_id: 1000
+    :name: Wii
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1040
+    :parent_id: 1000
+    :name: Xbox
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1050
+    :parent_id: 1000
+    :name: Xbox 360
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1060
+    :parent_id: 1000
+    :name: WiiWare/VC
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1070
+    :parent_id: 1000
+    :name: XBOX 360 DLC
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 1080
+    :parent_id: 1000
+    :name: PS3
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 2000
+    :parent_id: 
+    :name: Movies
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 2010
+    :parent_id: 2000
+    :name: Foreign
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 2020
+    :parent_id: 2000
+    :name: Other
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 2030
+    :parent_id: 2000
+    :name: SD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 2040
+    :parent_id: 2000
+    :name: HD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 3000
+    :parent_id: 
+    :name: Audio
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 3010
+    :parent_id: 3000
+    :name: MP3
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 3020
+    :parent_id: 3000
+    :name: Video
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 3030
+    :parent_id: 3000
+    :name: Audiobook
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 3040
+    :parent_id: 3000
+    :name: Lossless
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4000
+    :parent_id: 
+    :name: PC
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4010
+    :parent_id: 4000
+    :name: 0day
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4020
+    :parent_id: 4000
+    :name: ISO
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4030
+    :parent_id: 4000
+    :name: Mac
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4040
+    :parent_id: 4000
+    :name: Phone
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 4050
+    :parent_id: 4000
+    :name: Games
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5000
+    :parent_id: 
+    :name: TV
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5020
+    :parent_id: 5000
+    :name: Foreign
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5030
+    :parent_id: 5000
+    :name: SD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5040
+    :parent_id: 5000
+    :name: HD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5050
+    :parent_id: 5000
+    :name: Other
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 5060
+    :parent_id: 5000
+    :name: Sport
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 6000
+    :parent_id: 
+    :name: XXX
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 6010
+    :parent_id: 6000
+    :name: DVD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 6020
+    :parent_id: 6000
+    :name: WMV
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 6030
+    :parent_id: 6000
+    :name: XviD
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 6040
+    :parent_id: 6000
+    :name: x264
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 7000
+    :parent_id: 
+    :name: Other
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 7010
+    :parent_id: 7000
+    :name: Misc
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 7020
+    :parent_id: 7000
+    :name: Ebook
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 7030
+    :parent_id: 7000
+    :name: Comics
+    :description: 
+    :active: true
+- !ruby/object:NewzNabr::Category
+  values:
+    :id: 7040
+    :parent_id: 7000
+    :name: Anime
+    :description: 
+    :active: true

data/newznabr/defaultgroups.yml

-alt.binaries.dvdr: "This group contains DVD Movies."
-alt.binaries.boneless: "This group contains XVID and X264 Movies. Some Foreign."
-alt.binaries.multimedia: "This group contains TV, Movies, and Music."
-alt.binaries.movies.divx: "This group contains XVID Movies"
-alt.binaries.games.xbox: "This group contains original XBOX Games."
-alt.binaries.movies.xvid: "This group contains XVID Movies."
-alt.binaries.sony.psp: "This group contains PSP Games."
-alt.binaries.nintendo.ds: "This group contains Nintendo DS Games"
-alt.binaries.games.nintendods: "This group contains Nintendo DS Games "
-alt.binaries.hdtv.x264: "This group contains X264 Movies and HDTV."
-alt.binaries.games.xbox360: "This group contains XBOX 360 Games and DLC."
-alt.binaries.games.wii: "This group contains Nintendo WII Games, WII-Ware, and VC."
-alt.binaries.wmvhd: "This group contains WMVHD Movies."
-alt.binaries.x264: "This group contains X264 Movies and TV."
-alt.binaries.wii: "This group contains Nintendo WII Games, WII-Ware, and VC."
-alt.binaries.moovee: "This group contains XVID and X264 Movies."
-alt.binaries.inner-sanctum: "This group contains PC and Music."
-alt.binaries.warez.smartphone: "This group contains Mobile Phone Apps."
-alt.binaries.teevee: "This group contains X264 and XVID TV."
-alt.binaries.warez: "This group contains PC 0DAY, PC ISO, and PC PHONE."
-alt.binaries.sounds.mp3.complete_cd: "This group contains a variety of Music."
-alt.binaries.mpeg.video.music: "This group contains a variety of Music Videos."
-alt.binaries.mp3: "This group contains a variety of Music."
-alt.binaries.mma: "This group contains MMA/TNA Sport TV."
-alt.binaries.sounds.mp3.classical: "This group contains Classical Music."
-alt.binaries.mac: "This group contains MAC/OSX Software."
-alt.binaries.e-book: "This group contains E-Books."
-alt.binaries.warez.ibm-pc.0-day: "This group contains PC-0Day."
-alt.binaries.tvseries: "This group contains X264 and XVID TV."
-alt.binaries.ath: "This group contains a variety of Music. Some Foreign."
-alt.binaries.ftn: "This group contains a variety of Music and TV."
-alt.binaries.erotica: "This group contains XXX."
-alt.binaries.games: "This group contains PC and Console Games."
-alt.binaries.cores: "This group contains a variety including Nintendo DS. Lots of Foreign."
-alt.binaries.country.mp3: "This group contains Country Music."
-alt.binaries.sounds.mp3.1990s: "This group contains Music from the 1990s."
-alt.binaries.console.ps3: "This group contains PS3 Games."
-alt.binaries.scary.exe.files: "This group contains XVID and X264 Movies."
-alt.binaries.cd.image: "This group contains PC-ISO."
-alt.binaries.e-book.technical: "This group contains E-Books."
-alt.binaries.erotica.divx: "This group contains XXX."
-alt.binaries.test: "This group contains a variety of content."
-alt.binaries.x: "This group contains a variety of content. Some Foreign."
-alt.binaries.hou: "This group contains a variety of content. Mostly Foreign."
-alt.binaries.pro-wrestling: "This group contains WWE Sport TV."
-alt.binaries.sounds.lossless: "This group contains a variety of Lossless Music."
-alt.binaries.comp: "This group contains Warez. Mostly Foreign."
-alt.binaries.warez.quebec-hackers: "This group contains PC-0day. Some Foreign."
-alt.binaries.sounds.mp3.bluegrass: "This group contains Bluegrass Music."
-alt.binaries.sounds.radio.bbc: "This group contains BBC Radio Music"
-alt.binaries.e-book.flood: "This group contains E-Books."
-alt.binaries.movies.erotica: "This group contains XXX"
-alt.binaries.multimedia.documentaries: "This group contains Documentary Movies and TV."
-alt.binaries.sounds.mp3.jazz: "This group contains Jazz Music."
-alt.binaries.multimedia.erotica.amateur: "This group contains XXX."
-alt.binaries.sounds.1960s.mp3: "This group contains Music from the 1960's."
-alt.binaries.sounds.1970s.mp3: "This group contains Music from the 1970's."
-alt.binaries.sounds.mp3.comedy: "This group contains Comedy Audio."
-alt.binaries.sounds.mp3.2000s: "This group contains Music from the 2000's."
-alt.binaries.sounds.mp3.christian: "This group contains Christian Music."
-alt.binaries.sounds.mp3.1950s: "This group contains Music from the 1950's."
-alt.binaries.sounds.mp3.1970s: "This group contains Music from the 1970's."
-alt.binaries.sounds.mp3.1980s: "This group contains Music from the 1980's."
-alt.binaries.mp3.bootlegs: "This group contains Bootleg Music."
-alt.binaries.sounds.mp3: "This group contains a variety of Music."
-alt.binaries.mp3.audiobooks: "This group contains Audio Books."
-alt.binaries.sounds.mp3.rap-hiphop.full-albums: "This group contains Rap and Hip-Hop Music."
-alt.binaries.sounds.mp3.full_albums: "This group contains a variety of Music."
-alt.binaries.multimedia.teen-idols: "This group contains Music from Teen Idols"
-alt.binaries.sounds.mp3.dance: "This group contains Dance Music."
-alt.binaries.warez.uk.mp3: "This group contains a variety of Music."
-alt.binaries.sounds.mp3.heavy-metal: "This group contains Heavy Metal Music."
-alt.binaries.multimedia.cartoons: "This group contains Cartoon TV and Movies."
-alt.binaries.multimedia.sports: "This group contains Sports TV and Movies."
-alt.binaries.multimedia.anime: "This group contains Anime TV and Movies."
-alt.binaries.sounds.lossless.classical: "This group contains lossless Classical Music."
-alt.binaries.multimedia.disney: "This group contains Disney TV and Movies."
-alt.binaries.sounds.mp3.nospam: "This group contains a variety of Music."
-alt.binaries.multimedia.sitcoms: "This group contains Sitcom TV."
-alt.binaries.sounds.radio.british: "This group contains British Radio Music."
-alt.binaries.multimedia.comedy.british: "This group contains British Comedy TV and Movies."
-alt.binaries.etc: "This group contains a variety of items."
-alt.binaries.misc: "This group contains a variety of items."
-alt.binaries.sounds.mp3.rock: "This group contains Rock Music."
-alt.binaries.dc: "This group contains XVID and X264 Movies and TV. Mostly Foreign."
-alt.binaries.documentaries: "This group contains Documentaries TV and Movies."
-alt.binaries.cd.lossless: "This group contains a variety of lossless Music."
-alt.binaries.sounds.audiobooks.repost: "This group contains Audiobooks."
-alt.binaries.highspeed: "This group contains XVID Movies. Mostly Foreign."
-alt.binaries.bloaf: "This group contains a variety. Mostly Foreign."
-alt.binaries.big: "This group contains XVID Movies. Mostly Foreign."
-alt.binaries.sounds.mp3.musicals: "This group contains Musicals Music."
-alt.binaries.sound.mp3: "This group contains a variety of Music."
-alt.binaries.sounds.mp3.jazz.vocals: "This group contains Jazz Vocal Music."
-alt.binaries.dvd.movies: "This group contains DVDR Movies."
-alt.binaries.ebook: "This group contains Ebook\'s."
-alt.binaries.sounds.mp3.disco: "This group contains Disco Music."
-alt.binaries.mp3.full_albums: "This group contains a variety of Music."
-alt.binaries.tv: "This group contains XVID TV."
-alt.binaries.sounds.lossless.country: "This group contains lossless Country Music."
-alt.binaries.uzenet: "This group contains XXX. Some Foreign."
-alt.binaries.mom: "This group contains a variety. Mostly Foreign."
-alt.binaries.ijsklontje: "This group contains XXX."
-alt.binaries.sounds.lossless.1960s: "This group contains lossless 1960\'s Music."
-alt.binaries.sounds.mp3.emo: "This group contains Emo Music."
-alt.binaries.classic.tv.shows: "This group contains Classic TV and Movies."
-alt.binaries.dgma: "This group contains XVID Movies. Mostly Foreign."
-alt.binaries.sounds.mp3.opera: "This group contains Opera Music."
-alt.binaries.ipod.videos: "This group contains Mobile TV and Movies."
-alt.binaries.music.opera: "This group contains Opera Music."
-alt.binaries.sounds.flac.jazz: "This group contains lossless Jazz Music."
-alt.binaries.multimedia.tv: "This group contains XVID and X264 TV."
-alt.binaries.sounds.whitburn.pop: "This group contains Pop Music."
-alt.binaries.sound.audiobooks: "This group contains Audiobooks."
-alt.binaries.sounds.mp3.acoustic: "This group contains Accoustic Music."
-alt.binaries.u-4all: "This group contains XVID TV and Movies. Mostly Foreign."
-alt.binaries.sounds.mp3.progressive-country: "This group contains Country Music."
-alt.binaries.multimedia.classic-films: "This group contains Classic TV and Movies."
-alt.binaries.music.flac: "This group contains a variety of lossless Music"
-alt.binaries.ghosts: "This group contains XVID TV and Movies. Mostly Foreign."
-alt.binaries.town: "This group contains XVID TV and Movies. Mostly Foreign."
+---
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 3
+    :name: alt.binaries.multimedia
+    :description: TV, Movies, and Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 2
+    :name: alt.binaries.boneless
+    :description: XVID and X264 Movies. Some Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 45
+    :name: alt.binaries.pro-wrestling
+    :description: WWE Sport TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 6
+    :name: alt.binaries.movies.xvid
+    :description: XVID Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 5
+    :name: alt.binaries.games.xbox
+    :description: original XBOX Games.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 51
+    :name: alt.binaries.e-book.flood
+    :description: E-Books.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 4
+    :name: alt.binaries.movies.divx
+    :description: XVID Movies
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 48
+    :name: alt.binaries.warez.quebec-hackers
+    :description: PC-0day. Some Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 49
+    :name: alt.binaries.sounds.mp3.bluegrass
+    :description: Bluegrass Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 50
+    :name: alt.binaries.sounds.radio.bbc
+    :description: BBC Radio Music
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 53
+    :name: alt.binaries.multimedia.documentaries
+    :description: Documentary Movies and TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 54
+    :name: alt.binaries.sounds.mp3.jazz
+    :description: Jazz Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 55
+    :name: alt.binaries.multimedia.erotica.amateur
+    :description: XXX.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 56
+    :name: alt.binaries.sounds.1960s.mp3
+    :description: Music from the 1960's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 57
+    :name: alt.binaries.sounds.1970s.mp3
+    :description: Music from the 1970's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 58
+    :name: alt.binaries.sounds.mp3.comedy
+    :description: Comedy Audio.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 59
+    :name: alt.binaries.sounds.mp3.2000s
+    :description: Music from the 2000's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 60
+    :name: alt.binaries.sounds.mp3.christian
+    :description: Christian Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 61
+    :name: alt.binaries.sounds.mp3.1950s
+    :description: Music from the 1950's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 62
+    :name: alt.binaries.sounds.mp3.1970s
+    :description: Music from the 1970's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 63
+    :name: alt.binaries.sounds.mp3.1980s
+    :description: Music from the 1980's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 64
+    :name: alt.binaries.mp3.bootlegs
+    :description: Bootleg Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 65
+    :name: alt.binaries.sounds.mp3
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 66
+    :name: alt.binaries.mp3.audiobooks
+    :description: Audio Books.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 67
+    :name: alt.binaries.sounds.mp3.rap-hiphop.full-albums
+    :description: Rap and Hip-Hop Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 68
+    :name: alt.binaries.sounds.mp3.full_albums
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 69
+    :name: alt.binaries.multimedia.teen-idols
+    :description: Music from Teen Idols
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 70
+    :name: alt.binaries.sounds.mp3.dance
+    :description: Dance Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 71
+    :name: alt.binaries.warez.uk.mp3
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 72
+    :name: alt.binaries.sounds.mp3.heavy-metal
+    :description: Heavy Metal Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 73
+    :name: alt.binaries.multimedia.cartoons
+    :description: Cartoon TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 74
+    :name: alt.binaries.multimedia.sports
+    :description: Sports TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 52
+    :name: alt.binaries.movies.erotica
+    :description: XXX
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 75
+    :name: alt.binaries.multimedia.anime
+    :description: Anime TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 76
+    :name: alt.binaries.sounds.lossless.classical
+    :description: lossless Classical Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 77
+    :name: alt.binaries.multimedia.disney
+    :description: Disney TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 78
+    :name: alt.binaries.sounds.mp3.nospam
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 79
+    :name: alt.binaries.multimedia.sitcoms
+    :description: Sitcom TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 47
+    :name: alt.binaries.comp
+    :description: Warez. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 46
+    :name: alt.binaries.sounds.lossless
+    :description: a variety of Lossless Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 36
+    :name: alt.binaries.sounds.mp3.1990s
+    :description: Music from the 1990s.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 35
+    :name: alt.binaries.country.mp3
+    :description: Country Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 103
+    :name: alt.binaries.ijsklontje
+    :description: XXX.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 104
+    :name: alt.binaries.sounds.lossless.1960s
+    :description: lossless 1960's Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 37
+    :name: alt.binaries.console.ps3
+    :description: PS3 Games.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 38
+    :name: alt.binaries.scary.exe.files
+    :description: XVID and X264 Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 39
+    :name: alt.binaries.cd.image
+    :description: PC-ISO.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 40
+    :name: alt.binaries.e-book.technical
+    :description: E-Books.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 80
+    :name: alt.binaries.sounds.radio.british
+    :description: British Radio Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 82
+    :name: alt.binaries.etc
+    :description: a variety of items.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 96
+    :name: alt.binaries.ebook
+    :description: Ebook's.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 97
+    :name: alt.binaries.sounds.mp3.disco
+    :description: Disco Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 30
+    :name: alt.binaries.ath
+    :description: a variety of Music. Some Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 33
+    :name: alt.binaries.games
+    :description: PC and Console Games.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 31
+    :name: alt.binaries.ftn
+    :description: a variety of Music and TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 99
+    :name: alt.binaries.tv
+    :description: XVID TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 98
+    :name: alt.binaries.mp3.full_albums
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 81
+    :name: alt.binaries.multimedia.comedy.british
+    :description: British Comedy TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 95
+    :name: alt.binaries.dvd.movies
+    :description: DVDR Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 32
+    :name: alt.binaries.erotica
+    :description: XXX.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 34
+    :name: alt.binaries.cores
+    :description: a variety including Nintendo DS. Lots of Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 19
+    :name: alt.binaries.teevee
+    :description: X264 and XVID TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 29
+    :name: alt.binaries.tvseries
+    :description: X264 and XVID TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 10
+    :name: alt.binaries.hdtv.x264
+    :description: X264 Movies and HDTV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 8
+    :name: alt.binaries.nintendo.ds
+    :description: Nintendo DS Games
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 11
+    :name: alt.binaries.games.xbox360
+    :description: XBOX 360 Games and DLC.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 16
+    :name: alt.binaries.moovee
+    :description: XVID and X264 Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 9
+    :name: alt.binaries.games.nintendods
+    :description: 'Nintendo DS Games '
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 12
+    :name: alt.binaries.games.wii
+    :description: Nintendo WII Games, WII-Ware, and VC.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 13
+    :name: alt.binaries.wmvhd
+    :description: WMVHD Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 14
+    :name: alt.binaries.x264
+    :description: X264 Movies and TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 15
+    :name: alt.binaries.wii
+    :description: Nintendo WII Games, WII-Ware, and VC.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 17
+    :name: alt.binaries.inner-sanctum
+    :description: PC and Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 18
+    :name: alt.binaries.warez.smartphone
+    :description: Mobile Phone Apps.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 20
+    :name: alt.binaries.warez
+    :description: PC 0DAY, PC ISO, and PC PHONE.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 21
+    :name: alt.binaries.sounds.mp3.complete_cd
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 22
+    :name: alt.binaries.mpeg.video.music
+    :description: a variety of Music Videos.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 23
+    :name: alt.binaries.mp3
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 24
+    :name: alt.binaries.mma
+    :description: MMA/TNA Sport TV.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 25
+    :name: alt.binaries.sounds.mp3.classical
+    :description: Classical Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 26
+    :name: alt.binaries.mac
+    :description: MAC/OSX Software.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 27
+    :name: alt.binaries.e-book
+    :description: E-Books.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 28
+    :name: alt.binaries.warez.ibm-pc.0-day
+    :description: PC-0Day.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 83
+    :name: alt.binaries.misc
+    :description: a variety of items.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 84
+    :name: alt.binaries.sounds.mp3.rock
+    :description: Rock Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 87
+    :name: alt.binaries.cd.lossless
+    :description: a variety of lossless Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 88
+    :name: alt.binaries.sounds.audiobooks.repost
+    :description: Audiobooks.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 90
+    :name: alt.binaries.bloaf
+    :description: a variety. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 92
+    :name: alt.binaries.sounds.mp3.musicals
+    :description: Musicals Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 93
+    :name: alt.binaries.sound.mp3
+    :description: a variety of Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 94
+    :name: alt.binaries.sounds.mp3.jazz.vocals
+    :description: Jazz Vocal Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 85
+    :name: alt.binaries.dc
+    :description: XVID and X264 Movies and TV. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 91
+    :name: alt.binaries.big
+    :description: XVID Movies. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 86
+    :name: alt.binaries.documentaries
+    :description: Documentaries TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 89
+    :name: alt.binaries.highspeed
+    :description: XVID Movies. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 41
+    :name: alt.binaries.erotica.divx
+    :description: XXX.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 42
+    :name: alt.binaries.test
+    :description: a variety of content.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 43
+    :name: alt.binaries.x
+    :description: a variety of content. Some Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 44
+    :name: alt.binaries.hou
+    :description: a variety of content. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 100
+    :name: alt.binaries.sounds.lossless.country
+    :description: lossless Country Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 101
+    :name: alt.binaries.uzenet
+    :description: XXX. Some Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 102
+    :name: alt.binaries.mom
+    :description: a variety. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 105
+    :name: alt.binaries.sounds.mp3.emo
+    :description: Emo Music.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 106
+    :name: alt.binaries.classic.tv.shows
+    :description: Classic TV and Movies.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
+- !ruby/object:NewzNabr::Group
+  values:
+    :id: 107
+    :name: alt.binaries.dgma
+    :description: XVID Movies. Mostly Foreign.
+    :first_article: 0
+    :first_article_postdate: 
+    :last_article: 0
+    :last_article_postdate: 
+    :last_article_read: 0
+    :backfill_target: true
+    :min_release_size: 2
+    :active: false
<