images_to_scrapbox 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 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.