reddit_bot 1.1.5 → 1.1.6
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/README.md +7 -3
- data/examples/devflairbot/Gemfile +3 -0
- data/examples/devflairbot/Gemfile.lock +15 -0
- data/examples/devflairbot/main.rb +53 -0
- data/examples/flairmotron/Gemfile +3 -0
- data/examples/flairmotron/Gemfile.lock +15 -0
- data/examples/flairmotron/main.rb +43 -0
- data/examples/iostroubleshooting/Gemfile +1 -1
- data/examples/iostroubleshooting/Gemfile.lock +2 -2
- data/examples/iostroubleshooting/main.rb +3 -2
- data/examples/{largeimages → largeimagesreview}/Gemfile +0 -0
- data/examples/{largeimages → largeimagesreview}/Gemfile.lock +4 -2
- data/examples/{largeimages → largeimagesreview}/main.rb +4 -2
- data/examples/mlgtv/Gemfile +1 -1
- data/examples/mlgtv/Gemfile.lock +2 -2
- data/examples/oneplus/Gemfile +5 -5
- data/examples/oneplus/Gemfile.lock +3 -7
- data/examples/pokemon_trading/Gemfile +5 -5
- data/examples/pokemon_trading/Gemfile.lock +3 -7
- data/examples/pokemon_trading/main.rb +1 -2
- data/examples/sexypizza/Gemfile +3 -0
- data/examples/sexypizza/Gemfile.lock +15 -0
- data/examples/sexypizza/main.rb +29 -0
- data/examples/wallpaper/Gemfile +5 -0
- data/examples/wallpaper/Gemfile.lock +19 -0
- data/examples/wallpaper/main.rb +34 -0
- data/lib/reddit_bot.rb +3 -3
- metadata +17 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2755905b475ba61672aece5ce430f31a391fd314
|
4
|
+
data.tar.gz: a7e4323f4030e6277c26e5d0601636b3ed2eaaf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f071f2c06e1fb887e2dfd1f6ee02ee2f12848bec73006393b45a2fda6ac8c03e08f0412ba3eb6fe2f69d2d7aacd2fd8f06141d655153fb4f35797097bc47746a
|
7
|
+
data.tar.gz: a6a91942b6c51a109af10b0618f9cb42406bd53e2534b4c3ec93b5e77a579bfe92646464d03a5052ad33792ce65beff0b2fcd6616835acc44442e6bf392f47e8
|
data/README.md
CHANGED
@@ -16,12 +16,16 @@ Python (and so PRAW) sucks.
|
|
16
16
|
|
17
17
|
The [examples folder](examples) includes:
|
18
18
|
|
19
|
-
*
|
19
|
+
* sexypizza -- bot that updates wiki page with current flairs statistics
|
20
20
|
* mlgtv -- bot that updates sidebar with currently streaming twitch channels
|
21
|
+
* flairmotron -- bot that flairs users according to Google Spreadsheet
|
22
|
+
* devflairbot -- bot that flairs posts when some specifically flaired user comments there
|
21
23
|
* pokemon_trading -- bot that sets flair to user according to request submitted via PM
|
24
|
+
* iostroubleshooting -- bot that applies flairs to posts (subreddit seems to be suspended)
|
22
25
|
* oneplus -- bot that removes and modmails about links to 1080x1920 images
|
23
|
-
*
|
24
|
-
*
|
26
|
+
* wallpaper -- bot that reports images with dimensions not the same as in title
|
27
|
+
* yayornay -- bot that flairs posts according to voting in top level comments
|
28
|
+
* largeimagesreview -- useful script for [subreddit /r/largeimages](https://reddit.com/r/largeimages/top)
|
25
29
|
It calculates quality of x-posts from different subreddits based on mods activity (remove/approve).
|
26
30
|
For example, this shows that it would be ok to ignore /r/pics from now:
|
27
31
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require_relative "../boilerplate"
|
2
|
+
|
3
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true#, subreddit: SUBREDDIT
|
4
|
+
|
5
|
+
|
6
|
+
loop do
|
7
|
+
AWSStatus::touch
|
8
|
+
puts "LOOP #{Time.now}"
|
9
|
+
|
10
|
+
[
|
11
|
+
["ion", "Developer"],
|
12
|
+
["survivetheculling", "Developer"],
|
13
|
+
].each do |subreddit, developer_class|
|
14
|
+
puts subreddit
|
15
|
+
|
16
|
+
JSON.parse(
|
17
|
+
DownloadWithRetry::download_with_retry("https://www.reddit.com/r/#{subreddit}/comments.json")
|
18
|
+
)["data"]["children"].each do |comment|
|
19
|
+
id = comment["data"]["link_id"][3..-1]
|
20
|
+
commenter_flair = comment["data"]["author_flair_css_class"]
|
21
|
+
puts commenter_flair if commenter_flair
|
22
|
+
next 'puts "skip"' unless developer_class == commenter_flair
|
23
|
+
puts "https://reddit.com/r/#{subreddit}/comments/#{id}/#{comment["data"]["id"]} '#{commenter_flair}'"
|
24
|
+
flairselector = BOT.json :post, "/api/flairselector", { link: comment["data"]["link_id"] }
|
25
|
+
existing_flair_class = flairselector["current"]["flair_css_class"]
|
26
|
+
puts "https://reddit.com/#{id} '#{existing_flair_class}'"
|
27
|
+
next unless target = case existing_flair_class
|
28
|
+
when nil then "untaggeddev"
|
29
|
+
when "news" then "newsdev"
|
30
|
+
when "discussion" then "discussiondev"
|
31
|
+
when "media" then "mediadev"
|
32
|
+
when "feedback" then "feedbackdev"
|
33
|
+
when "question" then "questiondev"
|
34
|
+
when "bug" then "bugdev"
|
35
|
+
when "announcement" then "announcementdev"
|
36
|
+
when "suggestion" then "suggestiondev"
|
37
|
+
else puts "ignored https://reddit.com/#{id} '#{existing_flair_class}'"
|
38
|
+
end
|
39
|
+
choice = flairselector["choices"].find{ |choice| choice["flair_css_class"] == target }
|
40
|
+
puts "assigning '#{target}' (#{choice}) flair to post https://reddit.com/#{id}"
|
41
|
+
_ = BOT.json :post,
|
42
|
+
"/api/selectflair", {
|
43
|
+
flair_template_id: choice["flair_template_id"],
|
44
|
+
link: comment["data"]["link_id"],
|
45
|
+
}
|
46
|
+
fail _.inspect unless _ == {"json"=>{"errors"=>[]}}
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
puts "END LOOP #{Time.now}"
|
52
|
+
sleep 60
|
53
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative "../boilerplate"
|
2
|
+
|
3
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true#, subreddit: SUBREDDIT
|
4
|
+
SUBREDDIT = "CouncilOfRicks"
|
5
|
+
|
6
|
+
CSS_CLASS = "blueflair"
|
7
|
+
|
8
|
+
# require "open-uri"
|
9
|
+
# require "json"
|
10
|
+
require "csv"
|
11
|
+
|
12
|
+
loop do
|
13
|
+
AWSStatus::touch
|
14
|
+
|
15
|
+
names, flairs = begin
|
16
|
+
JSON.parse DownloadWithRetry::download_with_retry File.read "gas.url"
|
17
|
+
rescue JSON::ParserError
|
18
|
+
puts "smth wrong with GAS script"
|
19
|
+
sleep 60
|
20
|
+
retry
|
21
|
+
end
|
22
|
+
|
23
|
+
existing = BOT.json(:get, "/r/#{SUBREDDIT}/api/flairlist", limit: 1000)["users"]
|
24
|
+
|
25
|
+
if names.size == flairs.size
|
26
|
+
names.zip(flairs).drop(1).map(&:flatten).each_slice(50) do |slice|
|
27
|
+
CSV(load = "") do |csv|
|
28
|
+
slice.each do |user, text|
|
29
|
+
user = user.to_s.strip
|
30
|
+
text = text.to_s.strip
|
31
|
+
csv << [user, text, CSS_CLASS] unless existing.include?( {"user"=>user, "flair_text"=>text, "flair_css_class"=>CSS_CLASS} )
|
32
|
+
end
|
33
|
+
end
|
34
|
+
BOT.json(:post, "/r/#{SUBREDDIT}/api/flaircsv", [["flair_csv", load]]).each do |report|
|
35
|
+
pp report unless report.values_at("errors", "ok", "warnings") == [{}, true, {}]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
else
|
39
|
+
puts "columns are different by length"
|
40
|
+
end
|
41
|
+
|
42
|
+
sleep 300
|
43
|
+
end
|
@@ -2,7 +2,7 @@ GEM
|
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
4
|
json (1.8.3)
|
5
|
-
reddit_bot (
|
5
|
+
reddit_bot (1.1.5)
|
6
6
|
json
|
7
7
|
|
8
8
|
PLATFORMS
|
@@ -10,7 +10,7 @@ PLATFORMS
|
|
10
10
|
|
11
11
|
DEPENDENCIES
|
12
12
|
json
|
13
|
-
reddit_bot (
|
13
|
+
reddit_bot (~> 1.1.5)
|
14
14
|
|
15
15
|
BUNDLED WITH
|
16
16
|
1.11.2
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative File.join "..", "boilerplate"
|
2
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true
|
2
3
|
|
3
4
|
# SUBREDDIT = "test___________"
|
4
5
|
SUBREDDIT = "iostroubleshooting"
|
@@ -10,7 +11,7 @@ loop do
|
|
10
11
|
AWSStatus::touch
|
11
12
|
catch :loop do
|
12
13
|
|
13
|
-
existing =
|
14
|
+
existing = BOT.json(:get, "/r/#{SUBREDDIT}/api/flairlist")["users"]
|
14
15
|
begin
|
15
16
|
JSON.parse(DownloadWithRetry::download_with_retry("#{File.read "gas.url"}sheet_name=Bot&spreadsheet_id=10UzXUbawBgXLQkxXDMz28Qcx3IQPjwG9nByd_d8y31I", &:read))
|
16
17
|
rescue JSON::ParserError
|
@@ -25,7 +26,7 @@ loop do
|
|
25
26
|
end.compact.each_slice(50) do |slice|
|
26
27
|
CSV(load = ""){ |csv| slice.each{ |record| csv << record } }
|
27
28
|
puts load
|
28
|
-
|
29
|
+
BOT.json(:post, "/r/#{SUBREDDIT}/api/flaircsv", [["flair_csv", load]]).each do |report|
|
29
30
|
pp report unless report.values_at("errors", "ok", "warnings") == [{}, true, {}]
|
30
31
|
end
|
31
32
|
end
|
File without changes
|
@@ -1,15 +1,17 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
+
json (1.8.3)
|
4
5
|
mll (2.2.1)
|
5
|
-
reddit_bot (
|
6
|
+
reddit_bot (1.1.5)
|
7
|
+
json
|
6
8
|
|
7
9
|
PLATFORMS
|
8
10
|
ruby
|
9
11
|
|
10
12
|
DEPENDENCIES
|
11
13
|
mll
|
12
|
-
reddit_bot
|
14
|
+
reddit_bot (= 1.1.5)
|
13
15
|
|
14
16
|
BUNDLED WITH
|
15
17
|
1.11.2
|
@@ -8,13 +8,15 @@ end
|
|
8
8
|
|
9
9
|
|
10
10
|
require_relative File.join "..", "boilerplate"
|
11
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true
|
12
|
+
|
11
13
|
SUBREDDIT = "largeimages"
|
12
14
|
|
13
15
|
table = cache.call do
|
14
|
-
|
16
|
+
BOT.json(:get, "/r/#{SUBREDDIT}/about/log", [["limit", 10]])["data"]["children"].map do |child|
|
15
17
|
fail child unless child["kind"] == "modaction"
|
16
18
|
next unless %w{ removelink approvelink }.include? child["data"]["action"]
|
17
|
-
title =
|
19
|
+
title = BOT.json(:get, "/api/info", [["id", child["data"]["target_fullname"]]])["data"]["children"][0]["data"]["title"]
|
18
20
|
[child["data"]["action"], title[/(?<=^\[)\d+x\d+/], title[/[^\/]+$/]]
|
19
21
|
end.compact
|
20
22
|
end
|
data/examples/mlgtv/Gemfile
CHANGED
data/examples/mlgtv/Gemfile.lock
CHANGED
data/examples/oneplus/Gemfile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
if ENV["LOGNAME"] == "nakilon"
|
4
|
-
|
5
|
-
else
|
6
|
-
gem "reddit_bot", "~>1.
|
7
|
-
end
|
3
|
+
# if ENV["LOGNAME"] == "nakilon"
|
4
|
+
# gem "reddit_bot", "~>1.0", path: File.join("..", "..")
|
5
|
+
# else
|
6
|
+
gem "reddit_bot", "~>1.1.5"
|
7
|
+
# end
|
8
8
|
|
9
9
|
gem "fastimage", "1.7.0"
|
@@ -1,9 +1,3 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../..
|
3
|
-
specs:
|
4
|
-
reddit_bot (1.1.1)
|
5
|
-
json
|
6
|
-
|
7
1
|
GEM
|
8
2
|
remote: https://rubygems.org/
|
9
3
|
specs:
|
@@ -11,13 +5,15 @@ GEM
|
|
11
5
|
fastimage (1.7.0)
|
12
6
|
addressable (~> 2.3, >= 2.3.5)
|
13
7
|
json (1.8.3)
|
8
|
+
reddit_bot (1.1.5)
|
9
|
+
json
|
14
10
|
|
15
11
|
PLATFORMS
|
16
12
|
ruby
|
17
13
|
|
18
14
|
DEPENDENCIES
|
19
15
|
fastimage (= 1.7.0)
|
20
|
-
reddit_bot (~> 1.
|
16
|
+
reddit_bot (~> 1.1.5)
|
21
17
|
|
22
18
|
BUNDLED WITH
|
23
19
|
1.11.2
|
@@ -1,7 +1,7 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
if ENV["LOGNAME"] == "nakilon"
|
4
|
-
|
5
|
-
else
|
6
|
-
gem "reddit_bot", "~>1.
|
7
|
-
end
|
3
|
+
# if ENV["LOGNAME"] == "nakilon"
|
4
|
+
# gem "reddit_bot", "~>1.1.5", path: File.join("..", "..")
|
5
|
+
# else
|
6
|
+
gem "reddit_bot", "~>1.1.5"
|
7
|
+
# end
|
@@ -1,19 +1,15 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../..
|
3
|
-
specs:
|
4
|
-
reddit_bot (1.0.0)
|
5
|
-
json
|
6
|
-
|
7
1
|
GEM
|
8
2
|
remote: https://rubygems.org/
|
9
3
|
specs:
|
10
4
|
json (1.8.3)
|
5
|
+
reddit_bot (1.1.5)
|
6
|
+
json
|
11
7
|
|
12
8
|
PLATFORMS
|
13
9
|
ruby
|
14
10
|
|
15
11
|
DEPENDENCIES
|
16
|
-
reddit_bot (~> 1.
|
12
|
+
reddit_bot (~> 1.1.5)
|
17
13
|
|
18
14
|
BUNDLED WITH
|
19
15
|
1.11.2
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative "../boilerplate"
|
2
|
+
|
3
|
+
SUBREDDIT = "sexypizza"
|
4
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true#, subreddit: SUBREDDIT
|
5
|
+
|
6
|
+
|
7
|
+
loop do
|
8
|
+
AWSStatus::touch
|
9
|
+
puts "LOOP #{Time.now}"
|
10
|
+
|
11
|
+
flairs = BOT.json(:get, "/r/#{SUBREDDIT}/api/flairlist", {limit: 1000})["users"]
|
12
|
+
|
13
|
+
text = \
|
14
|
+
"**Vote with your flair!**\n\n" +
|
15
|
+
"Type of pizza | Number of lovers\n" +
|
16
|
+
"--------------|-----------------\n" +
|
17
|
+
flairs.
|
18
|
+
group_by{ |flair| flair["flair_text"] }.
|
19
|
+
# reject{ |flair, | flair.empty? }.
|
20
|
+
sort_by{ |_, group| -group.size }.
|
21
|
+
map{ |flair, group| "#{flair} | #{group.size}" }.
|
22
|
+
# map{ |flair, group| "#{flair} | #{group.size} | #{group.map{ |u| u["user"] }.join ", "}" }.
|
23
|
+
join("\n")
|
24
|
+
puts text
|
25
|
+
|
26
|
+
p BOT.wiki_edit SUBREDDIT, "toppings", text
|
27
|
+
|
28
|
+
sleep 3600
|
29
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
addressable (2.3.8)
|
5
|
+
fastimage (1.7.0)
|
6
|
+
addressable (~> 2.3, >= 2.3.5)
|
7
|
+
json (1.8.3)
|
8
|
+
reddit_bot (1.1.5)
|
9
|
+
json
|
10
|
+
|
11
|
+
PLATFORMS
|
12
|
+
ruby
|
13
|
+
|
14
|
+
DEPENDENCIES
|
15
|
+
fastimage (= 1.7.0)
|
16
|
+
reddit_bot (~> 1.1.5)
|
17
|
+
|
18
|
+
BUNDLED WITH
|
19
|
+
1.11.2
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative "../boilerplate"
|
2
|
+
|
3
|
+
BOT = RedditBot::Bot.new YAML.load(File.read "secrets.yaml"), ignore_captcha: true#, subreddit: SUBREDDIT
|
4
|
+
SUBREDDIT = "wallpaper"
|
5
|
+
|
6
|
+
if ENV["LOGNAME"] == "nakilon"
|
7
|
+
require_relative "../../../../dimensioner/get_dimensions"
|
8
|
+
else
|
9
|
+
require_relative File.join Dir.home, "dimensioner/get_dimensions"
|
10
|
+
end
|
11
|
+
|
12
|
+
checked = []
|
13
|
+
loop do
|
14
|
+
AWSStatus::touch
|
15
|
+
puts "LOOP #{Time.now}"
|
16
|
+
|
17
|
+
# _ = DownloadWithRetry::download_with_retry("https://www.reddit.com/r/#{SUBREDDIT}.json?sort=new&restrict_sr=on&t=hour") \
|
18
|
+
BOT.json(:get, "/r/#{SUBREDDIT}/new")["data"]["children"].each do |post|
|
19
|
+
id, url, title, subreddit = post["data"].values_at(*%w{ id url title subreddit })
|
20
|
+
next if checked.include? id
|
21
|
+
checked.push id
|
22
|
+
next puts "skipped #{url} from http://redd.it/#{id}" if :skipped == _ = GetDimensions::get_dimensions(url)
|
23
|
+
next puts "unable #{url} from http://redd.it/#{id}" unless _
|
24
|
+
width, height, best_direct_url, *all_direct_urls = _
|
25
|
+
|
26
|
+
resolution = "#{width}x#{height}"
|
27
|
+
result = title[/\s*\[?#{width}\s*[*x×]\s*#{height}\]?\s*/i]
|
28
|
+
puts "#{!!result} #{id} [#{resolution}] #{title} #{url}"
|
29
|
+
BOT.report "true resolution is #{resolution}", "t3_#{id}" unless result
|
30
|
+
end
|
31
|
+
|
32
|
+
puts "END LOOP #{Time.now}"
|
33
|
+
sleep 60
|
34
|
+
end
|
data/lib/reddit_bot.rb
CHANGED
@@ -8,7 +8,7 @@ require "json"
|
|
8
8
|
|
9
9
|
|
10
10
|
module RedditBot
|
11
|
-
VERSION = "1.1.
|
11
|
+
VERSION = "1.1.6" # :nodoc:
|
12
12
|
|
13
13
|
class Bot
|
14
14
|
|
@@ -229,8 +229,8 @@ module RedditBot
|
|
229
229
|
end
|
230
230
|
response = begin
|
231
231
|
http.request request
|
232
|
-
rescue Net::ReadTimeout, Errno::EPIPE, EOFError
|
233
|
-
puts "ERROR:
|
232
|
+
rescue Net::ReadTimeout, Errno::EPIPE, EOFError, SocketError, Zlib::BufError
|
233
|
+
puts "ERROR: network"
|
234
234
|
retry
|
235
235
|
end
|
236
236
|
puts %w{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reddit_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Maslov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -36,12 +36,18 @@ files:
|
|
36
36
|
- README.md
|
37
37
|
- Rakefile
|
38
38
|
- examples/boilerplate.rb
|
39
|
+
- examples/devflairbot/Gemfile
|
40
|
+
- examples/devflairbot/Gemfile.lock
|
41
|
+
- examples/devflairbot/main.rb
|
42
|
+
- examples/flairmotron/Gemfile
|
43
|
+
- examples/flairmotron/Gemfile.lock
|
44
|
+
- examples/flairmotron/main.rb
|
39
45
|
- examples/iostroubleshooting/Gemfile
|
40
46
|
- examples/iostroubleshooting/Gemfile.lock
|
41
47
|
- examples/iostroubleshooting/main.rb
|
42
|
-
- examples/
|
43
|
-
- examples/
|
44
|
-
- examples/
|
48
|
+
- examples/largeimagesreview/Gemfile
|
49
|
+
- examples/largeimagesreview/Gemfile.lock
|
50
|
+
- examples/largeimagesreview/main.rb
|
45
51
|
- examples/mlgtv/Gemfile
|
46
52
|
- examples/mlgtv/Gemfile.lock
|
47
53
|
- examples/mlgtv/main.rb
|
@@ -51,6 +57,12 @@ files:
|
|
51
57
|
- examples/pokemon_trading/Gemfile
|
52
58
|
- examples/pokemon_trading/Gemfile.lock
|
53
59
|
- examples/pokemon_trading/main.rb
|
60
|
+
- examples/sexypizza/Gemfile
|
61
|
+
- examples/sexypizza/Gemfile.lock
|
62
|
+
- examples/sexypizza/main.rb
|
63
|
+
- examples/wallpaper/Gemfile
|
64
|
+
- examples/wallpaper/Gemfile.lock
|
65
|
+
- examples/wallpaper/main.rb
|
54
66
|
- examples/yayornay/Gemfile
|
55
67
|
- examples/yayornay/Gemfile.lock
|
56
68
|
- examples/yayornay/main.rb
|