mediaman 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,26 @@
1
1
  module Mediaman
2
2
 
3
+ require "to_name"
4
+
3
5
  class MediaFilename
4
-
6
+
5
7
  attr_accessor :filename
6
8
 
7
9
  def initialize(filename)
8
10
  self.filename = filename
9
- parse_name!
10
- formatted_name # To init year
11
+ @parsed_name = self.to_name
12
+ end
13
+
14
+ def to_name
15
+ fn = ToName.to_name(filename)
16
+ {
17
+ name: fn.name,
18
+ year: fn.year,
19
+ raw_name: fn.raw_name,
20
+ location: fn.location,
21
+ season_number: fn.series,
22
+ episode_number: fn.episode
23
+ }
11
24
  end
12
25
 
13
26
  def to_hash
@@ -25,69 +38,15 @@ module Mediaman
25
38
  }
26
39
  end
27
40
 
28
- def parse_name!
29
- name = self.filename + ".mov"
30
-
31
- # Normal matching
32
- normal_matches = name.match(/^([a-zA-Z0-9.]*)\.S([0-9]{1,2})E([0-9]{1,2}).*$/i)
33
- if normal_matches
34
- @item_name = normal_matches[1]
35
- @season = normal_matches[2].to_i
36
- @episode = normal_matches[3].to_i
37
- end
38
-
39
- unless @item_name && @season && @episode
40
- # Mythbusters hack
41
- mythbusters_matches = name.match(/(myth.*)([0-9][0-9])([0-9][0-9])/i)
42
- if mythbusters_matches && mythbusters_matches[1].downcase.include?("myth")
43
- @item_name = "Mythbusters"
44
- @season = mythbusters_matches[2].to_i
45
- @episode = mythbusters_matches[3].to_i
46
- end
47
- end
48
-
49
- end
50
-
51
41
  def raw_name
52
- @item_name || self.filename
42
+ self.filename
53
43
  end
54
44
 
55
45
  def formatted_name
56
- perioded_name = []
57
-
58
- name =
59
-
60
- name_string = raw_name.gsub("'", "")
61
- name_string = raw_name.gsub(";", "")
62
-
63
- splitsies = name_string.split(/[ -.\[\]]/)
64
- splitsies.each_index do |i|
65
- x = splitsies[i].split(" ")
66
- x = x.split("+")
67
- x = x.split("_")
68
- x = x.split("[")
69
- x = x.split("]")
70
- splitsies[i] = x
71
- end
72
-
73
- name_done = false
74
- i = 0
75
- for item in splitsies.flatten
76
- int = item.to_i
77
- if (1900..Time.now.year + 3).cover?(int) && i > 0
78
- @year = int
79
- name_done = true
80
- elsif item == "720p"
81
- name_done = true
82
- else
83
- perioded_name << item unless name_done
84
- end
85
- i += 1
86
- end
87
- name = perioded_name.join(" ")
46
+ name = @parsed_name[:name]
88
47
 
89
48
  # Hacks
90
- name.gsub! /Extended( Version)/i, ""
49
+ name.gsub! /Extended( Version)( Edition)/i, ""
91
50
 
92
51
  name
93
52
  end
@@ -102,11 +61,11 @@ module Mediaman
102
61
  end
103
62
 
104
63
  def season
105
- @season
64
+ @parsed_name[:season_number]
106
65
  end
107
66
 
108
67
  def episode
109
- @episode
68
+ @parsed_name[:episode_number]
110
69
  end
111
70
 
112
71
  def tv?
@@ -114,7 +73,7 @@ module Mediaman
114
73
  end
115
74
 
116
75
  def year
117
- @year
76
+ @parsed_name[:year]
118
77
  end
119
78
 
120
79
  def movie?
@@ -143,10 +102,6 @@ module Mediaman
143
102
  def to_s
144
103
  formatted_name
145
104
  end
146
-
147
- def debug
148
- "name: #{name}, formatted_name: #{formatted_name}, slug: #{slug}, season: #{season}, episode: #{episode}, hd?: #{hd?}, tv?: #{tv?}, string: #{string}"
149
- end
150
-
105
+
151
106
  end
152
107
  end
@@ -35,7 +35,7 @@ module Mediaman
35
35
  class Movie < Fetcher
36
36
 
37
37
  def slug
38
- "#{options[:title].parameterize}-#{options[:year].to_s.parameterize}"
38
+ options[:slug].presence || "#{options[:title].parameterize}-#{options[:year].to_s.parameterize}"
39
39
  end
40
40
 
41
41
  def fetch!
@@ -49,12 +49,20 @@ module Mediaman
49
49
  attr_accessor :show
50
50
 
51
51
  def fetch!
52
- url = "http://api.trakt.tv/show/episode/summary.json/#{Trakt.api_key}/#{options[:show_title].parameterize}/#{options[:season_number]}/#{options[:episode_number]}"
52
+ url = "http://api.trakt.tv/show/episode/summary.json/#{Trakt.api_key}/#{slug}"
53
53
  self.response = r = self.class.get(url)
54
54
  self.show = Trakt::TVShow.from_hash self.response['show']
55
55
  self.response['episode']
56
56
  end
57
+
58
+ def slug
59
+ options[:slug].presence || "#{name_slug}/#{options[:season_number]}/#{options[:episode_number]}"
60
+ end
57
61
 
62
+ def name_slug
63
+ options[:name_slug].presence || "#{options[:show_title].parameterize}"
64
+ end
65
+
58
66
  end
59
67
 
60
68
  class TVShow < Fetcher
@@ -1,3 +1,3 @@
1
1
  module Mediaman
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/mediaman.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |gem|
22
22
  gem.add_dependency 'mini_subler'
23
23
  gem.add_dependency 'httparty'
24
24
  gem.add_dependency 'hashie'
25
+ gem.add_dependency 'toname'
25
26
 
26
27
  gem.add_development_dependency "rake"
27
28
  gem.add_development_dependency "rspec"
@@ -29,6 +29,35 @@ describe Mediaman::MediaFilename do
29
29
  h = parse("John Adams.S01E01.720p.HDTV.x264")
30
30
  h[:name].should == "John Adams"
31
31
  end
32
+
33
+ it "Breaking Bad S01E04" do
34
+ h = parse("Breaking Bad S01E04")
35
+ h[:name].should == "Breaking Bad"
36
+ h[:season_number].should == 1
37
+ h[:episode_number].should == 4
38
+ end
39
+
40
+ it "My Best Friend 6x03" do
41
+ h = parse("My Best Friend 6x03")
42
+ h[:name].should == "My Best Friend"
43
+ h[:season_number].should == 6
44
+ h[:episode_number].should == 3
45
+ end
46
+
47
+ it "extended editions" do
48
+ h = parse("The Fall Extended Edition")
49
+ h[:name].should == "The Fall"
50
+ end
51
+
52
+ it "extended editions" do
53
+ h = parse("The Fall Extended Version")
54
+ h[:name].should == "The Fall"
55
+ end
56
+
57
+ it "extended editions" do
58
+ h = parse("The Fall Extended")
59
+ h[:name].should == "The Fall"
60
+ end
32
61
 
33
62
  end
34
63
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mediaman
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.4
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Wil Gieseler
@@ -68,7 +68,7 @@ dependencies:
68
68
  type: :runtime
69
69
  version_requirements: *id005
70
70
  - !ruby/object:Gem::Dependency
71
- name: rake
71
+ name: toname
72
72
  prerelease: false
73
73
  requirement: &id006 !ruby/object:Gem::Requirement
74
74
  none: false
@@ -76,10 +76,10 @@ dependencies:
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: "0"
79
- type: :development
79
+ type: :runtime
80
80
  version_requirements: *id006
81
81
  - !ruby/object:Gem::Dependency
82
- name: rspec
82
+ name: rake
83
83
  prerelease: false
84
84
  requirement: &id007 !ruby/object:Gem::Requirement
85
85
  none: false
@@ -89,6 +89,17 @@ dependencies:
89
89
  version: "0"
90
90
  type: :development
91
91
  version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: rspec
94
+ prerelease: false
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ type: :development
102
+ version_requirements: *id008
92
103
  description: Mediaman manages your media, man.
93
104
  email:
94
105
  - supapuerco@gmail.com