userapi-ai 0.1.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8e731075ee42254e2b5449b12c471ad38ec7b17f49ed35c27e1f8b9cb3ab994
4
- data.tar.gz: 5649910f890faa5412886612a3a615e0e6dcfeead93a874d2bc8d018082f6f60
3
+ metadata.gz: 9b9f1e430a00b0c38594bfdcaf2e9a73fc0e1b84335880cbf41b4c37ed2f3962
4
+ data.tar.gz: 35674d40a7625af53ee130443d89b52b212e2f03540e26e1a8dd69b52e5cceba
5
5
  SHA512:
6
- metadata.gz: b5f8753fb545c528159d891f6164adeac1a2aab4f76679c8893a73fe27c9eec19a9d406c7c22c7e3c114d5438e36f60cac32648b17aa98724f63081e96e5ee88
7
- data.tar.gz: c7f0caef35c18a90a87c9747d85c0de3cec320ef9796de7946d20789ceffafc376794f2316c15786ef12bd9a255a55893f2cd7e18e5352f8179ceefa2d486f08
6
+ metadata.gz: 5f2e96c827d8e79235b72b43f431649558b99c42da4ad203cf31368e00d9505ccfe8da0ae9749454675ceda58149af6052c5b2af7861fb3639b7b3f147674168
7
+ data.tar.gz: abe25672348422d4d4fbb64868f3dfecf757fc504ab068303c1ab7f0f37ecda6c72e2fcaa19b8366b6be948188497b9dae58346b81db769efa0ad893058fd318
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+
4
+ ## [0.2.0] - 2024-03-24
5
+ raise StandardError on {"status"=>false, "error"=>"..."}
6
+
3
7
  ## [0.1.0] - 2024-03-24
4
8
 
5
9
  - Initial release
data/README.md CHANGED
@@ -1,11 +1,23 @@
1
- # Midjourney Ruby
1
+ # Userapi.ai Ruby
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/userapi-ai.svg)](https://badge.fury.io/rb/userapi-ai)
4
4
  [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/neonix20b/userapi-ai/blob/main/LICENSE.txt)
5
5
 
6
6
  Userapi.ai is an awesome tool that brings great value to products.
7
7
  This gem was created to facilitate Ruby and also Rails applications to use all services of Userapi.ai:
8
- - Midjourney
8
+ - Midjourney API
9
+ - [Imagine](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
10
+ - [Describe](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
11
+ - [Upscale](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
12
+ - [Upsample](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
13
+ - [Variation](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
14
+ - [Inpaint](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
15
+ - [Blend](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
16
+ - [Reroll](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
17
+ - [Zoom](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
18
+ - [Pan](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
19
+ - [Info](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
20
+ - [Status](https://www.notion.so/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142?pvs=21)
9
21
 
10
22
  ## Installation
11
23
 
@@ -91,7 +103,31 @@ You can use it to generate images of people, animals, objects, and anything else
91
103
  webhook_url:  "https://example.com/upscale/webhook-url",
92
104
  webhook_type: "result")
93
105
  ```
94
- See more [here](https://butternut-saffron-e5e.notion.site/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142#9abe719bb58948039acb5f0a6aee8947)
106
+ See more [here](https://butternut-saffron-e5e.notion.site/Midjourney-userapi-ai-doc-en-119680339b0a47e2ba6ae467eca58142#9abe719bb58948039acb5f0a6aee8947).
107
+
108
+ #### Tools
109
+
110
+ You can split the quad-layout output from Midjourney into 4 separate images. Don't forget to add the `gem 'mini_magick'`.
111
+
112
+ ```ruby
113
+ response = client.status result
114
+ if response["status"] == "done"
115
+ local_paths = UserapiAi::Tool.crop result: response["result"]
116
+ # or UserapiAi::Tool.crop url: "https://example.com/img.png"
117
+ local_paths.each do |path|
118
+ f = File.open(path)
119
+ ...
120
+ end
121
+ end
122
+ ```
123
+
124
+ ```bash
125
+ => local_paths
126
+ ["/var/folders/yb/bjdvl6mn3cx2l7nd08726k500000gn/T/mini_magick20240324-73984-31zmkb-0.png",
127
+ "/var/folders/yb/bjdvl6mn3cx2l7nd08726k500000gn/T/mini_magick20240324-73984-31zmkb-1.png",
128
+ "/var/folders/yb/bjdvl6mn3cx2l7nd08726k500000gn/T/mini_magick20240324-73984-31zmkb-2.png",
129
+ "/var/folders/yb/bjdvl6mn3cx2l7nd08726k500000gn/T/mini_magick20240324-73984-31zmkb-3.png"]
130
+ ```
95
131
 
96
132
  ## Development
97
133
 
data/lib/userapi/http.rb CHANGED
@@ -7,9 +7,6 @@ module UserapiAi
7
7
  end
8
8
 
9
9
  def json_post(path:, parameters:)
10
- puts uri(path: path)
11
- puts headers
12
- puts parameters.to_json
13
10
  to_json(conn.post(uri(path: path)) do |req|
14
11
  req.headers = headers
15
12
  req.body = parameters.to_json
@@ -21,7 +18,12 @@ module UserapiAi
21
18
  def to_json(string)
22
19
  return unless string
23
20
 
24
- JSON.parse(string)
21
+ json = JSON.parse(string)
22
+ if json["status"] == false and json.has_key?("error")
23
+ raise StandardError.new json["error"]
24
+ else
25
+ json
26
+ end
25
27
  rescue JSON::ParserError
26
28
  # Convert a multiline string of JSON objects to a JSON array.
27
29
  JSON.parse(string.gsub("}\n{", "},{").prepend("[").concat("]"))
@@ -0,0 +1,13 @@
1
+ module UserapiAi
2
+ class Tool
3
+ def self.crop url: nil, result: nil
4
+ url = result["url"] if url.nil?
5
+ image = MiniMagick::Image.open url
6
+ image.crop "50%x50%"
7
+ arr = image.path.split(".")
8
+ (0..3).map{ |i|
9
+ arr.dup.insert(-2, "-#{i}.").join("")
10
+ }
11
+ end
12
+ end
13
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UserapiAi
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
6
6
 
data/lib/userapi-ai.rb CHANGED
@@ -5,6 +5,7 @@ require "faraday/multipart"
5
5
 
6
6
  require_relative "userapi/http"
7
7
  require_relative "userapi/client"
8
+ require_relative "userapi/tools"
8
9
  require_relative "userapi/version"
9
10
 
10
11
  module UserapiAi
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: userapi-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Smolev Denis
@@ -57,6 +57,7 @@ files:
57
57
  - lib/userapi/client.rb
58
58
  - lib/userapi/compatibility.rb
59
59
  - lib/userapi/http.rb
60
+ - lib/userapi/tools.rb
60
61
  - lib/userapi/version.rb
61
62
  - sig/userapi/ai.rbs
62
63
  homepage: https://userapi.ai.
@@ -72,9 +73,9 @@ require_paths:
72
73
  - lib
73
74
  required_ruby_version: !ruby/object:Gem::Requirement
74
75
  requirements:
75
- - - ">="
76
+ - - '='
76
77
  - !ruby/object:Gem::Version
77
- version: 2.6.0
78
+ version: 3.0.0
78
79
  required_rubygems_version: !ruby/object:Gem::Requirement
79
80
  requirements:
80
81
  - - ">="