images_to_scrapbox 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b469d16bf0aea78a6c7280cc74690da22123b071
4
- data.tar.gz: 9dfca0e0ede8753fb089e263312e0ff87d526c69
2
+ SHA256:
3
+ metadata.gz: 61745dce879d45720a668651340e24da58db388574ca7dd932c87fc495f5f076
4
+ data.tar.gz: df9fa7cffd452d56e4b0a2639241ce2f2a6db617ca5ae2ab88780f958bf73064
5
5
  SHA512:
6
- metadata.gz: 72d2a49c20832d9425eed9e28cb864b1f86941e28ca17c54dbc6feaba3b54c065efabf7aa9237c0c005d4443ce7e72437437daf85401d2d790ac8d8bf751e965
7
- data.tar.gz: 56843999c0d112140b0c2d8ec8905c2ea4a42eb9019da8694148096b9cf9c95e0ec9998f3bc9fdfa2cd44ee029b973705b6a4d3f5bfc00e60d89a27353b5ff40
6
+ metadata.gz: d74b63258f355d88e81da2cbfd8ace22f795ad569520013d8b3dee17f7987fc9ecd4926654336a5e6465e8bde6e37ad091ec4495c90fa5c23bae79a7472efa3d
7
+ data.tar.gz: 8bca05eac5da7525fc7b421ef2562afbc752b4713accfbb7f20565a4a26e1a8a36c4cc187a840cef9b7762f04cc7e6c61e3be5339d5fdb287a58a1d659409687
data/Gemfile CHANGED
@@ -2,5 +2,5 @@ source "https://rubygems.org"
2
2
 
3
3
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
- # Specify your gem's dependencies in bibtex_to_scrapbox.gemspec
5
+ # Specify your gem's dependencies in images_to_scrapbox.gemspec
6
6
  gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # BibtexToScrapbox
1
+ # ImagesToScrapbox
2
2
 
3
3
  Scrapbox http://scrapbox.io is a novel note-taking service for teams.
4
4
 
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "images_to_scrapbox/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "images_to_scrapbox"
8
+ spec.version = ImagesToScrapbox::VERSION
9
+ spec.authors = ["Hiroharu Sugawara"]
10
+ spec.email = ["hsugawa@tmu.ac.jp"]
11
+
12
+ spec.summary = %q{convert images files to scrapbox-import-ready-json.}
13
+ spec.description = %q{convert images files to scrapbox-import-ready-json.}
14
+ spec.homepage = %q{https://github.com/hsugawa8651/images_to_scrapbox_gem}
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.15"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_dependency "thor"
28
+ spec.add_dependency "rest-client"
29
+ end
data/lib/cli.rb ADDED
@@ -0,0 +1,60 @@
1
+ require "images_to_scrapbox"
2
+ require "thor"
3
+
4
+ module ImagesToScrapbox
5
+
6
+ class CLI < Thor
7
+
8
+ no_commands do
9
+ def helper_add_paths(*globs)
10
+ if globs.length > 0
11
+ globs.each do |glob|
12
+ ImagesToScrapbox::Converter.add(glob)
13
+ end
14
+ else
15
+ while glob=$stdin.gets
16
+ ImagesToScrapbox::Converter.add(glob.chomp)
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ class_option :help, :type => :boolean, :aliases => '-h', :desc => 'help message.'
23
+ default_task :help
24
+
25
+ class_option :unique, :type => :boolean, :aliases => '-u',
26
+ :default => true, :desc => 'unique files'
27
+ class_option :sort, :type => :string, :aliases => '-s',
28
+ :default => "none", :desc => 'sort files'
29
+ class_option :ascending, :type => :boolean, :aliases => '-a',
30
+ :default => true, :desc => "sort in ascending order, or descending"
31
+
32
+ method_option :image, type: :boolean, aliases: '-i',
33
+ :default => true, desc: 'register images'
34
+ method_option :larger, type: :boolean, aliases: '-l',
35
+ :default => false, desc: 'larger image'
36
+ method_option :timestamp, :type => :string, :aliases => '-t',
37
+ :default => "mtime", :desc => "file timestamp: atime, ctime, mtime"
38
+ method_option :toc, type: :boolean, aliases: '-t',
39
+ :default => true, desc: 'creates table-of-contents'
40
+
41
+ desc 'convert FILES [options]', 'Convert images files to scrapbox-json'
42
+ def convert(*globs)
43
+ helper_add_paths(globs)
44
+ ImagesToScrapbox::Converter.perform(TRUE, options)
45
+ end
46
+
47
+ desc 'list FILES [options]', 'List images files to be processed'
48
+ def list(*globs)
49
+ helper_add_paths(globs)
50
+ ImagesToScrapbox::Converter.perform(FALSE, options)
51
+ end
52
+
53
+ desc 'version', 'version'
54
+ def version
55
+ p ImagesToScrapbox::VERSION
56
+ end
57
+
58
+
59
+ end
60
+ end
@@ -0,0 +1,3 @@
1
+ module ImagesToScrapbox
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,167 @@
1
+ require "images_to_scrapbox/version"
2
+ require "rest-client"
3
+ # require "open-uri"
4
+ require "uri"
5
+ require "JSON"
6
+ require 'base64'
7
+
8
+ def register_image(image_fullpath)
9
+ gyazo_url="https://upload.gyazo.com/api/upload"
10
+ begin
11
+ r = RestClient.post gyazo_url, {
12
+ "access_token" => ENV["GYAZO_TOKEN"],
13
+ :imagedata => File.new(image_fullpath, 'rb')
14
+ }
15
+ return JSON.parse(r)
16
+ rescue => e
17
+ p e
18
+ puts e.backtrace
19
+ puts <<EOS
20
+ Failed to register image data.
21
+ - Be online.
22
+ - Set your ACCESS_TOKEN to the environment variable "GYAZO_TOKEN"
23
+ EOS
24
+ ensure
25
+ end
26
+ exit(1)
27
+ end
28
+
29
+
30
+ module ImagesToScrapbox
31
+ # Your code goes here...
32
+ class Converter
33
+ @@converters=[]
34
+
35
+ def Converter.add(globn)
36
+ Dir.glob(globn).each do |g|
37
+ next unless g =~ /\.(gif|jpe?g|png)$/i
38
+ @@converters.push Converter.new(g)
39
+ end
40
+ end
41
+
42
+ def Converter.perform(do_convert=TRUE, options)
43
+
44
+ if options[:unique]
45
+ @@converters.uniq!{ |e| e.image_name }
46
+ end
47
+
48
+ case options[:sort]
49
+ when "none"
50
+ when "name"
51
+ @@converters.sort_by!{ |e| e.image_name }
52
+ else
53
+ raise Thor::Error, "Unknown sort type: #{sort_type}"
54
+ end
55
+
56
+ unless options[:ascending]
57
+ @@converters.reverse!
58
+ end
59
+
60
+ unless do_convert
61
+ @@converters.each do |c|
62
+ puts c.image_name
63
+ end
64
+ return
65
+ end
66
+
67
+ @@converted_on="Converted on #{Time.now.to_s}"
68
+
69
+ pages=[]
70
+ @@converters.map do |converter|
71
+ pages.concat converter.start(options)
72
+ end
73
+
74
+ if options[:toc]
75
+ pages.concat Converter.toc_page
76
+ end
77
+
78
+ result={
79
+ "pages": pages
80
+ }
81
+
82
+ puts result.to_json
83
+
84
+ end
85
+
86
+ attr_reader :image_name, :image_path, :page_title
87
+ def initialize(path)
88
+ @image_name=path
89
+ @image_path=File.expand_path(path)
90
+ end
91
+
92
+ def Converter.toc_page()
93
+ tocpage=SbPage.new()
94
+ tocpage.set_page_title(@@converted_on)
95
+ @@converters.map do |converter|
96
+ tocpage.push_text(" ["+converter.page_title+"]")
97
+ end
98
+ tocpage.get_page
99
+ end
100
+
101
+ def start(options)
102
+
103
+ timestamp=""
104
+ case options[:timestamp]
105
+ when "atime"
106
+ timestamp=File.atime(@image_path).to_s
107
+ when "ctime"
108
+ timestamp=File.ctime(@image_path).to_s
109
+ when "mtime"
110
+ timestamp=File.mtime(@image_path).to_s
111
+ else
112
+ raise Thor::Error, "Unknown timestamp type: #{timestamp_kind}"
113
+ end
114
+ @page_title=@image_name + " " + timestamp
115
+
116
+ imagepage=SbPage.new()
117
+ imagepage.set_page_title(@page_title)
118
+ imagepage.push_text(@image_name)
119
+ imagepage.push_empty_text()
120
+
121
+ if options[:image]
122
+ r=register_image(@image_path)
123
+ url=r["url"]
124
+ imagepage.push_text( options[:larger] ? "[["+url+"]]" : "["+url+"]" )
125
+ end
126
+
127
+ imagepage.push_text("["+@@converted_on+"]")
128
+ imagepage.get_page
129
+ end
130
+ end
131
+
132
+ class SbPage
133
+ def set_page_title(title)
134
+ @page_title=title
135
+ push_text(title)
136
+ push_empty_text
137
+ end
138
+
139
+ def get_page()
140
+ [
141
+ {
142
+ "title": @page_title,
143
+ "lines": json
144
+ }
145
+ ]
146
+ end
147
+
148
+ def initialize()
149
+ @page_title=""
150
+ @sb_json=[]
151
+ end
152
+
153
+ def json()
154
+ @sb_json
155
+ end
156
+
157
+ def push_text(s)
158
+ s.split("\n").each do |s1|
159
+ @sb_json << s1
160
+ end
161
+ end
162
+
163
+ def push_empty_text()
164
+ @sb_json << ""
165
+ end
166
+ end
167
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: images_to_scrapbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroharu Sugawara
@@ -97,6 +97,10 @@ files:
97
97
  - Rakefile
98
98
  - bin/console
99
99
  - bin/setup
100
+ - images_to_scrapbox.gemspec
101
+ - lib/cli.rb
102
+ - lib/images_to_scrapbox.rb
103
+ - lib/images_to_scrapbox/version.rb
100
104
  homepage: https://github.com/hsugawa8651/images_to_scrapbox_gem
101
105
  licenses:
102
106
  - MIT
@@ -117,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
121
  version: '0'
118
122
  requirements: []
119
123
  rubyforge_project:
120
- rubygems_version: 2.5.2
124
+ rubygems_version: 2.7.3
121
125
  signing_key:
122
126
  specification_version: 4
123
127
  summary: convert images files to scrapbox-import-ready-json.