directlink 0.0.5.0 → 0.0.6.0

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
2
  SHA1:
3
- metadata.gz: e712b540373ddcb6f3c581a5bf050b97e3cd6df4
4
- data.tar.gz: b41a9f3507c1349cb65da813b9b066765a4fcc49
3
+ metadata.gz: '09afa7efc0cf49f2742c257d2aa0c0810ed5e888'
4
+ data.tar.gz: 2241c093814a7f3b2e75dcf44ab7c75d79752013
5
5
  SHA512:
6
- metadata.gz: e03fbb4b2763fb132d712f65f442e92c78c41b5626b37e76cf3dfc17713a220764cdbda65dbac13fa92095171c8149d603863654aa1e29831ea56417b9728a3f
7
- data.tar.gz: 0af11c87c73bf0edd5ec0b56daff76a10f8446586ccb923fdf18e970b1ea153438868a1a070f5a25e203a441a24a5641e91cd4c52c50247662eb469764cd01ce
6
+ metadata.gz: 7bb2f434417735a0bbc9526aa2c632b6fe50bb326e5db74b8d86f8cc700ff42f99387a2058b53c7b6bddcab198129718f2412810fb1e403fdd5e14bd2d42bc16
7
+ data.tar.gz: f40c51e45aadee4af3ec6d2244d9dc6209ddb7d3f22cb8ecefea2d017e1b8861dfad3cc39b52851b112ea6a69e017cc4a9e4b7491c1822794ac9e655531bfbe0
data/README.md CHANGED
@@ -173,15 +173,16 @@ Possibly you will instead have a problem with `kramdown` gem -- solve it the sam
173
173
  gem "kramdown", "<2"
174
174
  ```
175
175
 
176
+ (`<2` here has nothing to do with the Ruby version -- it's just a coincidence)
177
+
176
178
  ## Notes:
177
179
 
178
180
  * `module DirectLink` public methods return different sets of properties -- `DirectLink()` unites them
179
181
  * the `ErrorAssert`, `ErrorMissingEnvVar` and `URI::InvalidURIError` should never be raised and you might report it
180
- * style: `@@` and lambdas are used to keep things private
181
182
  * this gem is a historically 2 or 3 libraries merged -- this is why tests may look awkward
182
183
  * 500px.com has discontinued API in June 2018 -- the tool now uses undocumented methods
183
184
  * `DirectLink()` can return an Array of Structs for 1) Imgur 2) Reddit unless `giveup = true` is set
184
185
 
185
186
  TODO: maybe make all these web service specific methods private and discourage to use them since they all return very different things and sometimes don't raise exceptions while the `DirectLink()` does
186
- TODO: what should `--json` print if exception was thrown?
187
+ TODO: what should `--json` print if exception was thrown?
187
188
  TODO: looped prompt mode
data/directlink.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "directlink"
3
- spec.version = "0.0.5.0"
3
+ spec.version = "0.0.6.0"
4
4
  spec.summary = "converts any kind of image hyperlink to direct link, type of image and its resolution"
5
5
 
6
6
  spec.author = "Victor Maslov aka Nakilon"
data/lib/directlink.rb CHANGED
@@ -355,6 +355,9 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
355
355
  else ; raise
356
356
  end
357
357
  html = Nokogiri::HTML NetHTTPUtils.request_data link, header: {"User-Agent" => "Mozilla"}
358
+ if t = html.at_css("meta[@property='og:image']")
359
+ return DirectLink t[:content], nil, true
360
+ end
358
361
  h = {} # TODO: maybe move it outside because of possible img[:src] recursion?...
359
362
  l = lambda do |node, s = []|
360
363
  node.element_children.flat_map do |child|
@@ -367,10 +370,8 @@ def DirectLink link, max_redirect_resolving_retry_delay = nil, giveup = false
367
370
  end
368
371
  end
369
372
  end
370
- l[html].group_by(&:first).map{ |k, v| [k.join(?>), v.map(&:last)] }.tap do |result|
371
- next unless result.empty?
372
- raise unless t = html.at_css("meta[@property='og:image']")
373
- return DirectLink t[:content], nil, true
373
+ l[html].group_by(&:first).map{ |k, v| [k.join(?>), v.map(&:last)] }.tap do |results|
374
+ raise if results.empty?
374
375
  end.max_by{ |_, v| v.map{ |i| i.width * i.height }.inject(:+) / v.size }.last
375
376
  else
376
377
  # TODO: maybe move this to right before `rescue` line
data/test.rb CHANGED
@@ -367,9 +367,9 @@ describe DirectLink do
367
367
  [ :flickr, [
368
368
  ["https://www.flickr.com/photos/tomas-/17220613278/", DirectLink::ErrorNotFound],
369
369
  ["https://www.flickr.com/photos/16936123@N07/18835195572", DirectLink::ErrorNotFound],
370
- ["https://www.flickr.com/photos/44133687@N00/17380073505/", [3000, 2000, "https://farm8.staticflickr.com/7757/17380073505_ed5178cc6a_o.jpg"]], # trailing slash
370
+ ["https://www.flickr.com/photos/44133687@N00/17380073505/", [3000, 2000, "https://live.staticflickr.com/7757/17380073505_ed5178cc6a_o.jpg"]], # trailing slash
371
371
  ["https://www.flickr.com/photos/jacob_schmidt/18414267018/in/album-72157654235845651/", DirectLink::ErrorNotFound], # username in-album
372
- ["https://www.flickr.com/photos/tommygi/5291099420/in/dateposted-public/", [1600, 1062, "https://farm6.staticflickr.com/5249/5291099420_3bf8f43326_o.jpg"]], # username in-public
372
+ ["https://www.flickr.com/photos/tommygi/5291099420/in/dateposted-public/", [1600, 1062, "https://live.staticflickr.com/5249/5291099420_3bf8f43326_o.jpg"]], # username in-public
373
373
  ["https://www.flickr.com/photos/132249412@N02/18593786659/in/album-72157654521569061/", DirectLink::ErrorNotFound],
374
374
  ["https://www.flickr.com/photos/130019700@N03/18848891351/in/dateposted-public/", [4621, 3081, "https://farm4.staticflickr.com/3796/18848891351_f751b35aeb_o.jpg"]], # userid in-public
375
375
  ["https://www.flickr.com/photos/frank3/3778768209/in/photolist-6KVb92-eCDTCr-ur8K-7qbL5z-c71afh-c6YvXW-7mHG2L-c71ak9-c71aTq-c71azf-c71aq5-ur8Q-6F6YkR-eCDZsD-eCEakg-eCE6DK-4ymYku-7ubEt-51rUuc-buujQE-ur8x-9fuNu7-6uVeiK-qrmcC6-ur8D-eCEbei-eCDY9P-eCEhCk-eCE5a2-eCH457-eCHrcq-eCEdZ4-eCH6Sd-c71b5o-c71auE-eCHa8m-eCDSbz-eCH1dC-eCEg3v-7JZ4rh-9KwxYL-6KV9yR-9tUSbU-p4UKp7-eCHfwS-6KVbAH-5FrdbP-eeQ39v-eeQ1UR-4jHAGN", [1024, 681, "https://farm3.staticflickr.com/2499/3778768209_280f82abab_b.jpg"]],
@@ -653,12 +653,12 @@ describe DirectLink do
653
653
  describe "giving up" do
654
654
  [
655
655
  ["http://example.com", FastImage::UnknownImageType],
656
- ["https://github.com/Nakilon/dhash-vips", FastImage::UnknownImageType, true],
657
- ["https://github.com/Nakilon/dhash-vips", 3],
656
+ ["https://www.tic.com/index.html", FastImage::UnknownImageType, true],
657
+ ["https://www.tic.com/index.html", 2],
658
658
  ["http://imgur.com/HQHBBBD", FastImage::UnknownImageType, true],
659
659
  ["http://imgur.com/HQHBBBD", "https://i.imgur.com/HQHBBBD.jpg?fb"], # .at_css("meta[@property='og:image']")
660
- ["http://redd.it/997he7", DirectLink::ErrorBadLink, true],
661
- ["http://redd.it/997he7", 1], # currently only links are parsed
660
+ ["https://www.deviantart.com/nadyasonika/art/Asuka-Langley-Beach-Time-590134861", FastImage::UnknownImageType, true],
661
+ ["https://www.deviantart.com/nadyasonika/art/Asuka-Langley-Beach-Time-590134861", "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/943f66cb-78ad-40f2-a086-44420b98b431/d9rcmz1-5cbc5670-0193-485b-ac14-755ddb9562f4.jpg/v1/fill/w_1024,h_732,q_75,strp/asuka_langley_beach_time_by_nadyasonika_d9rcmz1-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7ImhlaWdodCI6Ijw9NzMyIiwicGF0aCI6IlwvZlwvOTQzZjY2Y2ItNzhhZC00MGYyLWEwODYtNDQ0MjBiOThiNDMxXC9kOXJjbXoxLTVjYmM1NjcwLTAxOTMtNDg1Yi1hYzE0LTc1NWRkYjk1NjJmNC5qcGciLCJ3aWR0aCI6Ijw9MTAyNCJ9XV0sImF1ZCI6WyJ1cm46c2VydmljZTppbWFnZS5vcGVyYXRpb25zIl19.M-a_heYtVPwnR4eC9KIPk2mIYeNzEaTg4b4jqr_GwyI"],
662
662
  ].each_with_index do |(input, expectation, giveup), i|
663
663
  it "##{i + 1} (#{URI(input).host}) (giveup=#{!!giveup})" do # to match with minitest `-n` run flag
664
664
  ti = ENV.delete "IMGUR_CLIENT_ID"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: directlink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5.0
4
+ version: 0.0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Maslov aka Nakilon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-01 00:00:00.000000000 Z
11
+ date: 2019-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastimage