fixname 0.1.0 → 0.1.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 +4 -4
- data/lib/fixname.rb +122 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f10c0b1dffd71cd83df5c03663747864c2b1e59c
|
|
4
|
+
data.tar.gz: 3c8a52828214a860eef87195d83595b35de252da
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8dee8e58a32822cf614a792f156899f6b75ab184b3736888cdb107e510d05817ec298084d6414b2c8ebdc68ebdd059d56ac158298ba2dd6e0b7e6a0cec4c3c84
|
|
7
|
+
data.tar.gz: 3ed9558f1ee19af560796eb8b72a704cb0fa4c6d20c9710c5e0221a2cbc280ed8591e15ed10b5a332ef81336ca51ad27d04d81e35b8f52c8d4eb4fc7de0bbc38
|
data/lib/fixname.rb
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#encoding: utf-8
|
|
2
|
+
# require "fixname/version"
|
|
3
|
+
|
|
4
|
+
# STDOUT.sync = true
|
|
5
|
+
# ARGV[0] = %q{I:\ebooks\english\_unsorted\A D Koboah - [Darkling 01] - Dark Genesis (mobi).mobi.epub}
|
|
6
|
+
|
|
7
|
+
module Fixname
|
|
8
|
+
|
|
9
|
+
def titleize
|
|
10
|
+
split(/(\W)/).map(&:capitalize).join
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def author
|
|
14
|
+
#return everything before the first -
|
|
15
|
+
self[/[^-]+/]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def title
|
|
19
|
+
self.rpartition('-').last.partition('.').first.strip
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def normalise
|
|
23
|
+
# self.gsub!(/[^0-9A-Za-z]/, '').downcase
|
|
24
|
+
begin
|
|
25
|
+
self.tr(
|
|
26
|
+
"#{}()'.,;_&0123456789ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
|
|
27
|
+
" AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
|
|
28
|
+
).downcase.gsub(/ +/," ").split(" ").sort.join("_")
|
|
29
|
+
rescue
|
|
30
|
+
puts self
|
|
31
|
+
puts $!
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.check_filename file
|
|
36
|
+
basename = File.basename(file)
|
|
37
|
+
path = File.dirname(file)
|
|
38
|
+
ext = basename.rpartition('.').last.downcase
|
|
39
|
+
parts = basename.split(/-/).map!{|part|part.strip}
|
|
40
|
+
parts[0] = parts.first.split(/&/).map! do |author| #wissel voor en achternaam bij ,
|
|
41
|
+
before, after = author.split(/,/).map!{|part|part.strip}
|
|
42
|
+
author = "#{after} #{before}"
|
|
43
|
+
end.join(" & ")
|
|
44
|
+
result = parts.join(" - ")
|
|
45
|
+
begin
|
|
46
|
+
result.gsub!(/\[(.*?)\]/," ") #verwijder alles tussen rechte haken
|
|
47
|
+
result.gsub!(/\(.*\)/i," ") #verwijder alles tussen haken
|
|
48
|
+
result.gsub!(/_+/," ") #vervang _ door spatie
|
|
49
|
+
result.gsub!(/\\\\/,"/") #nodig ? vervang \\ door /
|
|
50
|
+
result.gsub!(/\.mobi|\.pdf|\.prc|\.doc/i,"")
|
|
51
|
+
formats = "(mobi|lit|epub|azw|txt|rtf|lrf|html|htm|azw3)"
|
|
52
|
+
pattern = /\.#{formats}/i
|
|
53
|
+
result.gsub!(pattern,"")
|
|
54
|
+
pattern = /\(#{formats}\)?/i
|
|
55
|
+
result.gsub!(pattern,"")
|
|
56
|
+
result.gsub!(/- *-/," - ") #verwijder opeenvolgende - eventueel gescheiden door spatie
|
|
57
|
+
result.gsub!(/ +/," ") #vervang meerder spaties door één
|
|
58
|
+
result.gsub!(/\(\)/,"") #vervang lege haakjes
|
|
59
|
+
result.gsub!(/ *-*\./,".") #vervang spatie gevolgd door punt
|
|
60
|
+
result.gsub!(/ *- *$/,"") #vervang streepje aan het einde
|
|
61
|
+
result.strip!
|
|
62
|
+
result = result.titleize
|
|
63
|
+
end
|
|
64
|
+
result = path+'/'+result+"."+ext
|
|
65
|
+
result.gsub('?',"'").gsub("./",'')
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def rename old_name, new_name
|
|
69
|
+
puts %Q{ren "#{old_name}" "#{new_name}"}
|
|
70
|
+
unless system(%Q{move /y "#{old_name}" "#{new_name}"})
|
|
71
|
+
sleep 2 if $solo
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def self.fix old_name
|
|
76
|
+
result = File.join(File.dirname(old_name), check_filename(File.basename(old_name))).gsub("/",'\\')
|
|
77
|
+
if old_name != result
|
|
78
|
+
old_name = old_name.gsub("/",'\\')
|
|
79
|
+
puts " #{old_name}"
|
|
80
|
+
puts "=>#{result}"
|
|
81
|
+
end
|
|
82
|
+
result
|
|
83
|
+
rescue => e
|
|
84
|
+
puts "Error while renaming #{old_name} to #{result}"
|
|
85
|
+
puts e
|
|
86
|
+
puts e.backtrace
|
|
87
|
+
puts
|
|
88
|
+
sleep 2 if $solo
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def fixname
|
|
92
|
+
if File.directory?(self)
|
|
93
|
+
old_name = self.gsub(/\\/,'/')
|
|
94
|
+
puts "#{old_name} is a folder"
|
|
95
|
+
Dir.glob("#{old_name}/*.*").each do |old_name|
|
|
96
|
+
begin
|
|
97
|
+
rename old_name, fix(old_name)
|
|
98
|
+
rescue => e
|
|
99
|
+
puts e
|
|
100
|
+
puts e.backtrace
|
|
101
|
+
sleep 2 if $solo
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
else
|
|
105
|
+
old_name = self.dup
|
|
106
|
+
$solo = true
|
|
107
|
+
rename old_name, fix(old_name)
|
|
108
|
+
end
|
|
109
|
+
rescue => e
|
|
110
|
+
puts e
|
|
111
|
+
puts e.backtrace
|
|
112
|
+
sleep 2 if $solo
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
class String
|
|
118
|
+
include Fixname
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# %q{C:\Users\Gebruiker\BoxSync\ruby_werk\create_gem\Hedlund, Jody - Een lied in de storm (2017).epub}.fixname
|
|
122
|
+
puts Fixname.fix %q{C:\Users\Gebruiker\BoxSync\ruby_werk\create_gem\Hedlund, Jody - Een lied in de storm (2017).epub}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fixname
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Mariën
|
|
@@ -58,8 +58,9 @@ email:
|
|
|
58
58
|
executables: []
|
|
59
59
|
extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
|
61
|
-
files:
|
|
62
|
-
|
|
61
|
+
files:
|
|
62
|
+
- lib/fixname.rb
|
|
63
|
+
homepage: http://rubygems.org/gems/fixname
|
|
63
64
|
licenses:
|
|
64
65
|
- MIT
|
|
65
66
|
metadata: {}
|