jekyll-google-photos 0.0.2 → 1.0.0
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/Gemfile +0 -3
- data/Gemfile.lock +1 -3
- data/README.md +39 -1
- data/_config.yml +3 -6
- data/_posts/2018-02-22-welcome-to-jekyll.markdown +1 -1
- data/jekyll-google-photos.gemspec +2 -3
- data/lib/jekyll-google-photos/tag.rb +142 -65
- data/lib/jekyll-google-photos/version.rb +1 -1
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4196827dd3a3b94ca00f5a0a3e7c4a5f47c9447a
|
4
|
+
data.tar.gz: ddbb5f23ce3c09a237db5c9a87b1de74315d644c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 427374f095a2a4f984a6b5c0ad6fce8e35c20d9bc310b12af509b13691a7a72de361b2c6c50cf0cad8d6d9378ae09b10d633b8a90d29f1f10d3c40efba33e89e
|
7
|
+
data.tar.gz: 50947e581864842ac80d77aaf70ef155ba31f2b49f8d285642ad4c73edcb95fb89550b46fc82fdaa32cbb5ae5499034d871384372f7ac8a4b49837855f277e86
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -15,7 +15,6 @@ GEM
|
|
15
15
|
http_parser.rb (0.6.0)
|
16
16
|
i18n (0.9.5)
|
17
17
|
concurrent-ruby (~> 1.0)
|
18
|
-
image_size (2.0.1)
|
19
18
|
jekyll (3.7.4)
|
20
19
|
addressable (~> 2.4)
|
21
20
|
colorator (~> 1.0)
|
@@ -71,7 +70,6 @@ PLATFORMS
|
|
71
70
|
|
72
71
|
DEPENDENCIES
|
73
72
|
fastimage (~> 2.1)
|
74
|
-
image_size (~> 2.0)
|
75
73
|
jekyll (~> 3.7.2)
|
76
74
|
jekyll-feed (~> 0.6)
|
77
75
|
minima (~> 2.0)
|
@@ -79,4 +77,4 @@ DEPENDENCIES
|
|
79
77
|
tzinfo-data
|
80
78
|
|
81
79
|
BUNDLED WITH
|
82
|
-
|
80
|
+
2.0.1
|
data/README.md
CHANGED
@@ -1,3 +1,41 @@
|
|
1
|
-
#
|
1
|
+
# Jekyll Google Photos
|
2
2
|
|
3
3
|
> 💎 Embedd Google Photos Album to your Jekyll Site
|
4
|
+
|
5
|
+
[Check out the Demo](http://chira.ga/trip-to-annecy/)
|
6
|
+
|
7
|
+
# Installing
|
8
|
+
|
9
|
+
add the following to your Gemfile:
|
10
|
+
```
|
11
|
+
gem 'jekyll-google-photos'
|
12
|
+
gem 'fastimage'
|
13
|
+
```
|
14
|
+
|
15
|
+
then:
|
16
|
+
```
|
17
|
+
bundle install
|
18
|
+
```
|
19
|
+
Note: Simplified installation is still a WIP
|
20
|
+
|
21
|
+
You also need to add this plugin to your `_config.yml` file:
|
22
|
+
```
|
23
|
+
plugins:
|
24
|
+
- jekyll-google-photos
|
25
|
+
```
|
26
|
+
|
27
|
+
# Usage:
|
28
|
+
```
|
29
|
+
{% google_photos <Link to Shared Google Photos Album> %}
|
30
|
+
```
|
31
|
+
Example:
|
32
|
+
```
|
33
|
+
{% google_photos https://photos.app.goo.gl/bhWukds8QVodFU246 %}
|
34
|
+
```
|
35
|
+
|
36
|
+
# Features to implement
|
37
|
+
|
38
|
+
* Revamp Grid Layout Algorithm
|
39
|
+
* Let users decide how many photos in each row
|
40
|
+
* Full-Screen HQ Image View and Slider
|
41
|
+
* Do something about Videos
|
data/_config.yml
CHANGED
@@ -1,9 +1,6 @@
|
|
1
|
-
title:
|
2
|
-
email:
|
3
|
-
description:
|
4
|
-
Write an awesome description for your new site here. You can edit this
|
5
|
-
line in _config.yml. It will appear in your document head meta (for
|
6
|
-
Google search results) and in your feed.xml site description.
|
1
|
+
title: jekyll-google-photos
|
2
|
+
email: me@chia.ro
|
3
|
+
description: ""
|
7
4
|
baseurl: ""
|
8
5
|
url: ""
|
9
6
|
twitter_username: jekyllrb
|
@@ -5,7 +5,7 @@ date: 2018-02-22 18:29:32 +0000
|
|
5
5
|
categories: jekyll update
|
6
6
|
---
|
7
7
|
|
8
|
-
{% google_photos https://photos.app.goo.gl/
|
8
|
+
{% google_photos https://photos.app.goo.gl/bhWukds8QVodFU246 300 150 100 1280 400 5 %}
|
9
9
|
|
10
10
|
You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
11
11
|
|
@@ -6,8 +6,8 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.summary = "Embedd Google Photos Album to your Jekyll Site"
|
7
7
|
spec.description = "Embedd Google Photos Album to your Jekyll Site"
|
8
8
|
spec.version = JekyllGooglePhotos::VERSION
|
9
|
-
spec.authors = ["
|
10
|
-
spec.email = ["
|
9
|
+
spec.authors = ["Chirag Arora"]
|
10
|
+
spec.email = ["me@chia.ro"]
|
11
11
|
spec.homepage = "https://github.com/heychirag/jekyll-google-photos"
|
12
12
|
spec.licenses = ["MIT"]
|
13
13
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) }
|
@@ -17,5 +17,4 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.add_development_dependency "rspec", "~> 3.5"
|
18
18
|
spec.add_development_dependency "rubocop", "~> 0.52"
|
19
19
|
spec.add_development_dependency "nokogiri", "~> 1.10"
|
20
|
-
spec.add_development_dependency "fastimage", "~> 2.1"
|
21
20
|
end
|
@@ -2,85 +2,162 @@ require "jekyll"
|
|
2
2
|
require 'open-uri'
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'fastimage'
|
5
|
-
|
6
|
-
# https://jekyllrb.com/docs/plugins/#tags
|
5
|
+
require 'net/http'
|
7
6
|
|
8
7
|
module JekyllGooglePhotos
|
9
8
|
class Tag < Liquid::Tag
|
10
|
-
def initialize(tagName,
|
9
|
+
def initialize(tagName, args, tokens)
|
11
10
|
super
|
12
|
-
|
13
|
-
|
14
|
-
@
|
15
|
-
|
16
|
-
@
|
11
|
+
args = args.split(" ")
|
12
|
+
url = args[0]
|
13
|
+
@row_height = args[1].to_i
|
14
|
+
@space = args[6].to_i
|
15
|
+
@tablet_max = args[4].to_i
|
16
|
+
@row_height_tablet = args[2].to_i
|
17
|
+
@space_tablet = @space
|
18
|
+
@phone_max = args[5].to_i
|
19
|
+
@row_height_phone = args[3].to_i
|
20
|
+
@space_phone = @space
|
21
|
+
@imgLinks = getImageLinks(url)
|
22
|
+
@dom = createDOM()
|
23
|
+
end
|
17
24
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
def getImageLinks(url)
|
26
|
+
doc = Nokogiri::HTML(open(url.strip).read)
|
27
|
+
scripts = doc.xpath("//script")
|
28
|
+
for x in scripts do
|
29
|
+
if x.inner_html.match(/initDataCallback\(/)
|
30
|
+
jsonString = x.inner_html
|
31
|
+
jsonString = jsonString.sub(/.*function\(\)\{return /,"")
|
32
|
+
jsonString["\n}});"] = ""
|
23
33
|
end
|
24
34
|
end
|
35
|
+
json = JSON.parse(jsonString)
|
36
|
+
return json[1]
|
37
|
+
end
|
25
38
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
39
|
+
def flexbinCSS()
|
40
|
+
elem = %Q{
|
41
|
+
.flexbin {
|
42
|
+
display: flex;
|
43
|
+
overflow: hidden;
|
44
|
+
flex-wrap: wrap;
|
45
|
+
margin: -#{@space/2.0}px;
|
46
|
+
}
|
47
|
+
.flexbin:after {
|
48
|
+
content: '';
|
49
|
+
flex-grow: 999999999;
|
50
|
+
min-width: #{@row_height}px;
|
51
|
+
height: 0;
|
52
|
+
}
|
53
|
+
.flexbin > * {
|
54
|
+
position: relative;
|
55
|
+
display: block;
|
56
|
+
height: #{@row_height}px;
|
57
|
+
margin: #{@space/2.0}px;
|
58
|
+
flex-grow: 1;
|
59
|
+
}
|
60
|
+
.flexbin > * > img {
|
61
|
+
height: #{@row_height}px;
|
62
|
+
object-fit: cover;
|
63
|
+
max-width: 100%;
|
64
|
+
min-width: 100%;
|
65
|
+
vertical-align: bottom;
|
66
|
+
}
|
67
|
+
.flexbin.flexbin-margin {
|
68
|
+
margin: #{@space/2.0}px;
|
69
|
+
}
|
70
|
+
@media (max-width: #{@tablet_max}px) {
|
71
|
+
.flexbin {
|
72
|
+
display: flex;
|
73
|
+
overflow: hidden;
|
74
|
+
flex-wrap: wrap;
|
75
|
+
margin: -#{@space/2.0}px;
|
76
|
+
}
|
77
|
+
.flexbin:after {
|
78
|
+
content: '';
|
79
|
+
flex-grow: 999999999;
|
80
|
+
min-width: #{@row_height_tablet}px;
|
81
|
+
height: 0;
|
82
|
+
}
|
83
|
+
.flexbin > * {
|
84
|
+
position: relative;
|
85
|
+
display: block;
|
86
|
+
height: #{@row_height_tablet}px;
|
87
|
+
margin: #{@space/2.0}px;
|
88
|
+
flex-grow: 1;
|
89
|
+
}
|
90
|
+
.flexbin > * > img {
|
91
|
+
height: #{@row_height_tablet}px;
|
92
|
+
object-fit: cover;
|
93
|
+
max-width: 100%;
|
94
|
+
min-width: 100%;
|
95
|
+
vertical-align: bottom;
|
96
|
+
}
|
97
|
+
.flexbin.flexbin-margin {
|
98
|
+
margin: #{@space/2.0}px;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
@media (max-width: #{@phone_max}px) {
|
102
|
+
.flexbin {
|
103
|
+
display: flex;
|
104
|
+
overflow: hidden;
|
105
|
+
flex-wrap: wrap;
|
106
|
+
margin: -#{@space/2.0}px;
|
107
|
+
}
|
108
|
+
.flexbin:after {
|
109
|
+
content: '';
|
110
|
+
flex-grow: 999999999;
|
111
|
+
min-width: #{@row_height_phone}px;
|
112
|
+
height: 0;
|
113
|
+
}
|
114
|
+
.flexbin > * {
|
115
|
+
position: relative;
|
116
|
+
display: block;
|
117
|
+
height: #{@row_height_phone}px;
|
118
|
+
margin: #{@space/2.0}px;
|
119
|
+
flex-grow: 1;
|
120
|
+
}
|
121
|
+
.flexbin > * > img {
|
122
|
+
height: #{@row_height_phone}px;
|
123
|
+
object-fit: cover;
|
124
|
+
max-width: 100%;
|
125
|
+
min-width: 100%;
|
126
|
+
vertical-align: bottom;
|
127
|
+
}
|
128
|
+
.flexbin.flexbin-margin {
|
129
|
+
margin: #{@space/2.0}px;
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
}
|
134
|
+
return elem
|
135
|
+
end
|
38
136
|
|
39
|
-
|
137
|
+
def createDOM()
|
138
|
+
sp = %Q{<style>}
|
139
|
+
sp += flexbinCSS()
|
140
|
+
sp += %Q{</style>}
|
141
|
+
sp += addImages()
|
142
|
+
return sp
|
40
143
|
end
|
41
144
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
result += '}'
|
55
|
-
result += 'for(var j=i;j<i+noPics&&j<albumImages.length;j++) {'
|
56
|
-
result += 'albumImages[j].width *= currMinHeight/albumImages[j].height;'
|
57
|
-
result += 'albumImages[j].height = currMinHeight;'
|
58
|
-
result += '}'
|
59
|
-
result += 'var currWidth = (noPics)*albumMargin;'
|
60
|
-
result += 'for(var j=i;j<i+noPics&&j<albumImages.length;j++) {'
|
61
|
-
result += 'currWidth += albumImages[j].width;'
|
62
|
-
result += '}'
|
63
|
-
result += 'var k; var limitWidth = 0;'
|
64
|
-
result += 'for(var k=i;k<i+noPics-1&&k<albumImages.length;k++) {'
|
65
|
-
result += 'albumImages[k].width *= containerWidth/currWidth;'
|
66
|
-
result += 'limitWidth = limitWidth + albumImages[k].width + albumMargin;'
|
67
|
-
result += 'albumImages[k].height *= containerWidth/currWidth;'
|
68
|
-
result += '}'
|
69
|
-
result += 'albumImages[k].width = containerWidth-limitWidth;'
|
70
|
-
result += 'albumImages[k].height *= containerWidth/currWidth;'
|
71
|
-
result += '/*var setWidth = 0;'
|
72
|
-
result += 'for(var j=i;j<i+noPics&&j<albumImages.length;j++) {'
|
73
|
-
result += 'albumImages[j].style.transform = "translate3d($setWidth,$setHeight,0px)";'
|
74
|
-
result += 'setWidth += albumImages[j].width;'
|
75
|
-
result += 'setWidth += albumMargin;'
|
76
|
-
result += '}'
|
77
|
-
result += 'setHeight += albumImages[i].height;'
|
78
|
-
result += 'setHeight += albumMargin;*/'
|
79
|
-
result += '}'
|
145
|
+
def addImages()
|
146
|
+
sp = %Q{<div class="flexbin">}
|
147
|
+
for x in @imgLinks
|
148
|
+
link = x[1][0] + %Q{=w#{@tablet_max}}
|
149
|
+
sp += %Q{
|
150
|
+
<a href="#{x[1][0]}">
|
151
|
+
<img src="#{link}" />
|
152
|
+
</a>
|
153
|
+
}
|
154
|
+
end
|
155
|
+
sp += %Q{</div>}
|
156
|
+
return sp
|
80
157
|
end
|
81
158
|
|
82
159
|
def render(context)
|
83
|
-
|
160
|
+
@dom
|
84
161
|
end
|
85
162
|
end
|
86
163
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-google-photos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Chirag Arora
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -80,23 +80,9 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.10'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: fastimage
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '2.1'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '2.1'
|
97
83
|
description: Embedd Google Photos Album to your Jekyll Site
|
98
84
|
email:
|
99
|
-
-
|
85
|
+
- me@chia.ro
|
100
86
|
executables: []
|
101
87
|
extensions: []
|
102
88
|
extra_rdoc_files: []
|