Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save costa/5103b611d27e16abeb72fee9fda1e28d to your computer and use it in GitHub Desktop.
Save costa/5103b611d27e16abeb72fee9fda1e28d to your computer and use it in GitHub Desktop.
A FFmpRb script for the DEMO of the solo screen-based-presentation format
|o|
# NOTE Run me like this: | <ffmprb> <OUT-PATH>
# NOTE A bit of a boilerplate for more independence:
video_output_options = {resolution: Ffmprb::HD_4K, fps: 30, encoder: 'libx264'}
Ffmprb::Process.input_video_auto_rotate = true # NOTE surprisingly, for the sake of oiPad media...'
class FfmprbUnzipper
def initialize
@tmp_files = []
@tmp_threads = []
at_exit do
@tmp_threads.each &:join rescue warn "WARN #{$!}"
@tmp_files.each &:unlink
end
end
def concat_to_fifo(zip_path, video: :landscape)
video_opt = video &&
{resolution: Ffmprb::HD_4K, fps: 60, encoder: 'huffyuv'}.tap do |opt|
w, h = opt[:resolution].split('x')
opt[:resolution] = "#{h}x#{w}" if
video == :portrait
end
Ffmprb::File.temp_fifo("-#{File.basename zip_path}.#{video ? 'avi' : 'wav'}").tap do |concat_tmp|
@tmp_files << concat_tmp
@tmp_threads << (
Ffmprb::Util::Thread.new do
Dir.mktmpdir do |tmp_dir|
Ffmprb.process do
output concat_tmp, video: video_opt do
Dir.chdir tmp_dir do
`unzip '#{zip_path}'`.lines.sort.map { |l| $1 if l =~ /extracting:\s*\b(.*\.m\w*)\b/i }.compact
end.map{ |c| File.expand_path c, tmp_dir }.each do |path|
roll input path, video: video
end
end
end
end
end
)
end
end
end
fuzr = FfmprbUnzipper.new
# NOTE the boilerplate ends here, change at will below:
inp_logo =
input('/media/2023/05/05/media_ 2023_05_05 log_ 2023_04_30_stackshare-2y-old-listing-review.pub.logo+title - Page 1.png', loop: true)
inp_title =
input('/media/2023/05/05/media_ 2023_05_05 log_ 2023_04_30_stackshare-2y-old-listing-review.pub.logo+title - Page 2.png', loop: true)
inp_mus =
input('/media/tillvonsein.bandcamp.com/Till Von Sein - Shit Show 3 Podcast #10.mp3')
.volume(0.15)
inv = [
input('/media/2023/04/30/Screen Recording 2023-04-30 at 15.29.24.mov', audio: false),
input('/media/2023/04/30/IMG_0755.MOV', audio: false),
input(fuzr.concat_to_fifo('/media/2023/04/30/GX010303.zip'), audio: false),
input('/media/2023/04/30/Movie Recording 2023-04-30 at 15.29.24.mov', audio: false)
]
int = [ 5.60, 8.70, 9.05, 3.19]
ina = [
# input('/media/2023/04/30/Screen Recording 2023-04-30 at 15.29.24.mov', video: false),
nil,
# input('/media/2023/04/30/IMG_0755.MOV', video: false),
nil,
input(fuzr.concat_to_fifo('/media/2023/04/30/GX010303.zip', video: false)),
# input('/media/2023/04/30/Movie Recording 2023-04-30 at 15.29.24.mov', video: false)
]
output o, video: video_output_options do # 45:39 =2470
a_cuts = []
# NOTE i == nil means out of the sequence insert
def a_cuts.inp_cut_int(inv, int, i, from, to) # NOTE! receives times of first [0] input
if last && from == last[1]
last[1] += to - from
else
self << [from, to, (@last_time ||= 0)]
end if
i
@last_time += to - from
inv[i].cut from: int[i] + from - int[0], to: int[i] + to - int[0] if
i
end
# Intro... (costashapiro)
lay a_cuts.inp_cut_int inv, int, 1, 98.50, 105.00
lay a_cuts.inp_cut_int inv, int, 2, 105.00, 106.25
lay a_cuts.inp_cut_int inv, int, 3, 106.25, 107.95
lay a_cuts.inp_cut_int inv, int, 1, 107.95, 113.00
lay a_cuts.inp_cut_int inv, int, 0, 113.00, 142.65
lay a_cuts.inp_cut_int inv, int, 2, 142.65, 143.75
lay a_cuts.inp_cut_int inv, int, 1, 143.75, 146.60
lay a_cuts.inp_cut_int inv, int, 2, 146.60, 147.35
lay a_cuts.inp_cut_int inv, int, 0, 147.35, 154.00
lay a_cuts.inp_cut_int inv, int, 2, 154.00, 155.55
lay a_cuts.inp_cut_int inv, int, 1, 155.55, 159.90
lay a_cuts.inp_cut_int inv, int, 0, 159.90, 166.00
# Present... (review of review)
lay a_cuts.inp_cut_int inv, int, 0, 200.00, 203.50
lay a_cuts.inp_cut_int inv, int, 1, 203.50, 207.75
lay a_cuts.inp_cut_int inv, int, 0, 207.75, 215.50
lay a_cuts.inp_cut_int inv, int, 1, 215.50, 220.90
lay a_cuts.inp_cut_int inv, int, 0, 220.90, 246.65
lay a_cuts.inp_cut_int inv, int, 1, 246.65, 250.25
lay a_cuts.inp_cut_int inv, int, 0, 250.25, 254.00
lay a_cuts.inp_cut_int inv, int, 1, 254.00, 257.00
# Rome... ( "local" (limited-community-specific) web dev tool set )
lay a_cuts.inp_cut_int inv, int, 0, 257.00, 271.50
lay a_cuts.inp_cut_int inv, int, 3, 271.50, 273.50
lay a_cuts.inp_cut_int inv, int, 0, 273.50, 286.00
#
lay a_cuts.inp_cut_int inv, int, 3, 342.00, 345.00
lay a_cuts.inp_cut_int inv, int, 2, 345.00, 346.30
lay a_cuts.inp_cut_int inv, int, 0, 346.30, 358.20
lay a_cuts.inp_cut_int inv, int, 3, 358.20, 359.85
lay a_cuts.inp_cut_int inv, int, 0, 359.85, 363.50
lay a_cuts.inp_cut_int inv, int, 2, 363.50, 365.50
lay a_cuts.inp_cut_int inv, int, 0, 365.50, 371.55
lay a_cuts.inp_cut_int inv, int, 1, 371.55, 373.25
lay a_cuts.inp_cut_int inv, int, 0, 373.25, 388.90
lay a_cuts.inp_cut_int inv, int, 1, 388.90, 392.65
lay a_cuts.inp_cut_int inv, int, 0, 392.65, 408.50
lay a_cuts.inp_cut_int inv, int, 3, 408.50, 410.20
lay a_cuts.inp_cut_int inv, int, 1, 410.20, 413.50
lay a_cuts.inp_cut_int inv, int, 0, 413.50, 429.85
lay a_cuts.inp_cut_int inv, int, 2, 429.85, 430.95
lay a_cuts.inp_cut_int inv, int, 1, 430.95, 433.85
lay a_cuts.inp_cut_int inv, int, 0, 433.85, 442.90
lay a_cuts.inp_cut_int inv, int, 1, 442.90, 445.20
lay a_cuts.inp_cut_int inv, int, 0, 445.20, 459.15
lay a_cuts.inp_cut_int inv, int, 3, 459.15, 461.40
lay a_cuts.inp_cut_int inv, int, 0, 461.40, 464.70
lay a_cuts.inp_cut_int inv, int, 2, 464.70, 469.90
lay a_cuts.inp_cut_int inv, int, 0, 469.90, 472.45
lay a_cuts.inp_cut_int inv, int, 2, 472.45, 474.05
lay a_cuts.inp_cut_int inv, int, 0, 474.05, 483.80
lay a_cuts.inp_cut_int inv, int, 2, 483.80, 485.60
lay a_cuts.inp_cut_int inv, int, 3, 485.60, 487.10
lay a_cuts.inp_cut_int inv, int, 2, 487.10, 489.25
lay a_cuts.inp_cut_int inv, int, 0, 489.25, 527.00
lay a_cuts.inp_cut_int inv, int, 1, 527.00, 533.80
# Smithy... - "local" (limited-community-specific) dev/ops tool set
lay a_cuts.inp_cut_int inv, int, 0, 533.80, 541.65
lay a_cuts.inp_cut_int inv, int, 1, 541.65, 549.40
lay a_cuts.inp_cut_int inv, int, 0, 549.40, 561.05
lay a_cuts.inp_cut_int inv, int, 3, 561.05, 564.80
lay a_cuts.inp_cut_int inv, int, 1, 564.80, 567.50
lay a_cuts.inp_cut_int inv, int, 0, 567.50, 573.85
lay a_cuts.inp_cut_int inv, int, 1, 573.85, 579.25
lay a_cuts.inp_cut_int inv, int, 0, 579.25, 599.00
lay a_cuts.inp_cut_int inv, int, 2, 599.00, 601.00
lay a_cuts.inp_cut_int inv, int, 0, 601.00, 617.10
lay a_cuts.inp_cut_int inv, int, 1, 617.10, 622.80
lay a_cuts.inp_cut_int inv, int, 0, 622.80, 643.10
lay a_cuts.inp_cut_int inv, int, 1, 643.10, 645.85
lay a_cuts.inp_cut_int inv, int, 0, 645.85, 656.00
lay a_cuts.inp_cut_int inv, int, 1, 656.00, 663.00
# crossbar.io... another (even more useful) "decenetralised" application messaging protocol - i bet it was fun to develop... and that's it.
lay a_cuts.inp_cut_int inv, int, 0, 663.00, 673.90
lay a_cuts.inp_cut_int inv, int, 2, 673.90, 676.95
lay a_cuts.inp_cut_int inv, int, 1, 676.95, 684.85
lay a_cuts.inp_cut_int inv, int, 0, 684.85, 696.05
lay a_cuts.inp_cut_int inv, int, 1, 696.05, 698.35
lay a_cuts.inp_cut_int inv, int, 0, 698.35, 716.45
lay a_cuts.inp_cut_int inv, int, 1, 716.45, 725.25
lay a_cuts.inp_cut_int inv, int, 3, 725.25, 726.95
lay a_cuts.inp_cut_int inv, int, 0, 726.95, 760.80
lay a_cuts.inp_cut_int inv, int, 2, 760.80, 763.25
lay a_cuts.inp_cut_int inv, int, 3, 763.25, 765.30
lay a_cuts.inp_cut_int inv, int, 1, 765.30, 771.25
lay a_cuts.inp_cut_int inv, int, 0, 771.25, 773.75
lay a_cuts.inp_cut_int inv, int, 2, 773.75, 775.95
lay a_cuts.inp_cut_int inv, int, 0, 775.95, 820.30
lay a_cuts.inp_cut_int inv, int, 1, 820.30, 823.20
lay a_cuts.inp_cut_int inv, int, 0, 823.20, 832.75
lay a_cuts.inp_cut_int inv, int, 3, 832.75, 835.05
lay a_cuts.inp_cut_int inv, int, 0, 835.05, 844.00
lay a_cuts.inp_cut_int inv, int, 1, 844.00, 849.00
# Jina... an attempt to automate and sell "ML" services (just AN attempt)
lay a_cuts.inp_cut_int inv, int, 0, 849.00, 877.60
lay a_cuts.inp_cut_int inv, int, 1, 877.60, 880.05
lay a_cuts.inp_cut_int inv, int, 0, 880.05, 896.60
lay a_cuts.inp_cut_int inv, int, 2, 896.60, 900.25
lay a_cuts.inp_cut_int inv, int, 0, 900.25, 912.95
lay a_cuts.inp_cut_int inv, int, 1, 912.95, 914.95
lay a_cuts.inp_cut_int inv, int, 0, 914.95, 919.80
lay a_cuts.inp_cut_int inv, int, 2, 919.80, 924.05
lay a_cuts.inp_cut_int inv, int, 0, 924.05, 930.60
lay a_cuts.inp_cut_int inv, int, 2, 930.60, 931.45
lay a_cuts.inp_cut_int inv, int, 0, 931.45, 954.90
lay a_cuts.inp_cut_int inv, int, 1, 954.90, 957.40
lay a_cuts.inp_cut_int inv, int, 0, 957.40, 967.00
lay a_cuts.inp_cut_int inv, int, 2, 967.00, 972.65
lay a_cuts.inp_cut_int inv, int, 1, 972.65, 980.35
lay a_cuts.inp_cut_int inv, int, 0, 980.35, 983.55
lay a_cuts.inp_cut_int inv, int, 2, 983.55, 984.70
lay a_cuts.inp_cut_int inv, int, 1, 984.70, 990.25
lay a_cuts.inp_cut_int inv, int, 0, 990.25, 1020.40
lay a_cuts.inp_cut_int inv, int, 1, 1020.40, 1024.15
lay a_cuts.inp_cut_int inv, int, 0, 1024.15, 1062.80
lay a_cuts.inp_cut_int inv, int, 1, 1062.80, 1067.80
lay a_cuts.inp_cut_int inv, int, 0, 1067.80, 1077.85
lay a_cuts.inp_cut_int inv, int, 2, 1077.85, 1082.30
lay a_cuts.inp_cut_int inv, int, 3, 1082.30, 1083.05
lay a_cuts.inp_cut_int inv, int, 0, 1083.05, 1102.95
lay a_cuts.inp_cut_int inv, int, 1, 1102.95, 1107.10
lay a_cuts.inp_cut_int inv, int, 0, 1107.10, 1120.75
lay a_cuts.inp_cut_int inv, int, 1, 1120.75, 1123.05
# RonDB... (yet another fastest, greatest and cutest DB still)
lay a_cuts.inp_cut_int inv, int, 0, 1123.05, 1140.25
lay a_cuts.inp_cut_int inv, int, 3, 1140.25, 1142.15
lay a_cuts.inp_cut_int inv, int, 0, 1142.15, 1165.25
lay a_cuts.inp_cut_int inv, int, 3, 1165.25, 1165.80
lay a_cuts.inp_cut_int inv, int, 2, 1165.80, 1167.60
lay a_cuts.inp_cut_int inv, int, 1, 1167.60, 1171.60
lay a_cuts.inp_cut_int inv, int, 0, 1171.60, 1225.25
lay a_cuts.inp_cut_int inv, int, 2, 1225.25, 1229.50
lay a_cuts.inp_cut_int inv, int, 0, 1229.50, 1249.10
lay a_cuts.inp_cut_int inv, int, 1, 1249.10, 1252.05
lay a_cuts.inp_cut_int inv, int, 2, 1252.05, 1254.40
lay a_cuts.inp_cut_int inv, int, 0, 1254.40, 1260.65
lay a_cuts.inp_cut_int inv, int, 1, 1260.65, 1264.00
# Data Profiler 21:04 22:40 - a proprietary set of data analysis tools
lay a_cuts.inp_cut_int inv, int, 0, 1264.00, 1279.60
lay a_cuts.inp_cut_int inv, int, 1, 1279.60, 1284.85
lay a_cuts.inp_cut_int inv, int, 0, 1284.85, 1314.75
lay a_cuts.inp_cut_int inv, int, 1, 1314.75, 1317.05
lay a_cuts.inp_cut_int inv, int, 0, 1317.05, 1327.70
lay a_cuts.inp_cut_int inv, int, 2, 1327.70, 1328.70
lay a_cuts.inp_cut_int inv, int, 1, 1328.70, 1330.05
lay a_cuts.inp_cut_int inv, int, 2, 1330.05, 1331.55
lay a_cuts.inp_cut_int inv, int, 3, 1331.55, 1334.25
lay a_cuts.inp_cut_int inv, int, 1, 1334.25, 1336.25
lay a_cuts.inp_cut_int inv, int, 3, 1336.25, 1337.10
lay a_cuts.inp_cut_int inv, int, 0, 1337.10, 1342.30
lay a_cuts.inp_cut_int inv, int, 2, 1342.30, 1345.95
lay a_cuts.inp_cut_int inv, int, 0, 1345.95, 1355.00
lay a_cuts.inp_cut_int inv, int, 1, 1355.00, 1360.00
# Nacos... chinese something something network communication communism
lay a_cuts.inp_cut_int inv, int, 0, 1360.00, 1380.90
lay a_cuts.inp_cut_int inv, int, 3, 1380.90, 1386.90
lay a_cuts.inp_cut_int inv, int, 0, 1386.90, 1405.95
lay a_cuts.inp_cut_int inv, int, 1, 1405.95, 1411.35
lay a_cuts.inp_cut_int inv, int, 0, 1411.35, 1423.95
lay a_cuts.inp_cut_int inv, int, 1, 1423.95, 1429.40
lay a_cuts.inp_cut_int inv, int, 0, 1429.40, 1437.50
lay a_cuts.inp_cut_int inv, int, 1, 1437.50, 1440.10
lay a_cuts.inp_cut_int inv, int, 3, 1440.10, 1442.70
lay a_cuts.inp_cut_int inv, int, 0, 1442.70, 1454.20
lay a_cuts.inp_cut_int inv, int, 1, 1454.20, 1456.20
lay a_cuts.inp_cut_int inv, int, 0, 1456.20, 1478.20
#
lay a_cuts.inp_cut_int inv, int, 1, 1489.20, 1491.20
lay a_cuts.inp_cut_int inv, int, 0, 1491.20, 1500.10
lay a_cuts.inp_cut_int inv, int, 2, 1500.10, 1502.15
lay a_cuts.inp_cut_int inv, int, 1, 1502.15, 1508.25
# git-split-diffs 25:09 26:15 - useless with any (I)DE
lay a_cuts.inp_cut_int inv, int, 0, 1508.25, 1522.70
lay a_cuts.inp_cut_int inv, int, 3, 1522.70, 1523.20
lay a_cuts.inp_cut_int inv, int, 0, 1523.20, 1531.65
lay a_cuts.inp_cut_int inv, int, 1, 1531.65, 1536.75
lay a_cuts.inp_cut_int inv, int, 0, 1536.75, 1560.40
lay a_cuts.inp_cut_int inv, int, 2, 1560.40, 1561.80
lay a_cuts.inp_cut_int inv, int, 1, 1561.80, 1564.20
lay a_cuts.inp_cut_int inv, int, 0, 1564.20, 1567.60
lay a_cuts.inp_cut_int inv, int, 2, 1567.60, 1571.25
lay a_cuts.inp_cut_int inv, int, 1, 1571.25, 1576.90
# github-elements... github whatever
lay a_cuts.inp_cut_int inv, int, 0, 1576.90, 1586.45
lay a_cuts.inp_cut_int inv, int, 1, 1586.45, 1591.60
lay a_cuts.inp_cut_int inv, int, 0, 1591.60, 1610.90
lay a_cuts.inp_cut_int inv, int, 1, 1610.90, 1623.00
# Opyrator... generator generator, no one needs you
lay a_cuts.inp_cut_int inv, int, 0, 1623.00, 1647.40
lay a_cuts.inp_cut_int inv, int, 1, 1647.40, 1650.40
lay a_cuts.inp_cut_int inv, int, 0, 1650.40, 1653.00
lay a_cuts.inp_cut_int inv, int, 3, 1653.00, 1654.70
lay a_cuts.inp_cut_int inv, int, 2, 1654.70, 1657.05
lay a_cuts.inp_cut_int inv, int, 0, 1657.05, 1679.30
lay a_cuts.inp_cut_int inv, int, 1, 1679.30, 1686.00
lay a_cuts.inp_cut_int inv, int, 0, 1686.00, 1689.45
lay a_cuts.inp_cut_int inv, int, 1, 1689.45, 1694.45
lay a_cuts.inp_cut_int inv, int, 0, 1694.45, 1719.00
lay a_cuts.inp_cut_int inv, int, 3, 1719.00, 1720.25
lay a_cuts.inp_cut_int inv, int, 1, 1720.25, 1728.10
# Catalyst Components... failed web components
lay a_cuts.inp_cut_int inv, int, 0, 1728.10, 1736.05
lay a_cuts.inp_cut_int inv, int, 1, 1736.05, 1742.05
lay a_cuts.inp_cut_int inv, int, 0, 1742.05, 1748.70
lay a_cuts.inp_cut_int inv, int, 3, 1748.70, 1750.95
lay a_cuts.inp_cut_int inv, int, 0, 1750.95, 1775.75
lay a_cuts.inp_cut_int inv, int, 1, 1775.75, 1783.45
lay a_cuts.inp_cut_int inv, int, 0, 1783.45, 1793.20
lay a_cuts.inp_cut_int inv, int, 1, 1793.20, 1797.50
lay a_cuts.inp_cut_int inv, int, 0, 1797.50, 1817.25
lay a_cuts.inp_cut_int inv, int, 1, 1817.25, 1825.80
# Cinder... fork of fork of fork of python - pypypypypython
lay a_cuts.inp_cut_int inv, int, 0, 1825.80, 1833.60
lay a_cuts.inp_cut_int inv, int, 3, 1833.60, 1836.75
lay a_cuts.inp_cut_int inv, int, 2, 1836.75, 1840.30
lay a_cuts.inp_cut_int inv, int, 1, 1840.30, 1852.30
lay a_cuts.inp_cut_int inv, int, 0, 1852.30, 1859.70
lay a_cuts.inp_cut_int inv, int, 3, 1859.70, 1861.90
lay a_cuts.inp_cut_int inv, int, 2, 1861.90, 1864.70
lay a_cuts.inp_cut_int inv, int, 0, 1864.70, 1869.90
lay a_cuts.inp_cut_int inv, int, 1, 1869.90, 1880.45
lay a_cuts.inp_cut_int inv, int, 0, 1880.45, 1890.95
lay a_cuts.inp_cut_int inv, int, 1, 1890.95, 1894.25
lay a_cuts.inp_cut_int inv, int, 2, 1894.25, 1895.10
lay a_cuts.inp_cut_int inv, int, 0, 1895.10, 1912.00
lay a_cuts.inp_cut_int inv, int, 1, 1912.00, 1916.00
# observIQ... something something OpenTelemetry all cleear
lay a_cuts.inp_cut_int inv, int, 0, 1916.00, 1920.00
lay inv[3]
.crop(0.25)
.cut(from: int[3] + 1920.00 - int[0], to: int[3] + 1950.00 - int[0])
.pace(5)
.video_effect(
'colorchannelmixer' => '.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3' # https://ffmpeg.org/ffmpeg-filters.html#toc-Examples-55
)
a_cuts.inp_cut_int nil, nil, nil, 1920.00, 1926.00 # NOTE 1926 = 1920 + (1950 - 1920)/5
lay a_cuts.inp_cut_int inv, int, 0, 1950.00, 1956.65
lay a_cuts.inp_cut_int inv, int, 1, 1956.65, 1960.05
lay a_cuts.inp_cut_int inv, int, 3, 1960.05, 1960.80
lay a_cuts.inp_cut_int inv, int, 1, 1960.80, 1962.70
lay a_cuts.inp_cut_int inv, int, 0, 1962.70, 1972.25
lay a_cuts.inp_cut_int inv, int, 1, 1972.25, 1977.35
lay a_cuts.inp_cut_int inv, int, 0, 1977.35, 2003.90
lay a_cuts.inp_cut_int inv, int, 3, 2003.90, 2005.25
lay a_cuts.inp_cut_int inv, int, 0, 2005.25, 2021.00
lay a_cuts.inp_cut_int inv, int, 1, 2021.00, 2028.75
lay a_cuts.inp_cut_int inv, int, 0, 2028.75, 2037.95
lay a_cuts.inp_cut_int inv, int, 2, 2037.95, 2042.30
lay a_cuts.inp_cut_int inv, int, 1, 2042.30, 2045.25
lay a_cuts.inp_cut_int inv, int, 3, 2045.25, 2046.00
lay a_cuts.inp_cut_int inv, int, 1, 2046.00, 2063.70
lay a_cuts.inp_cut_int inv, int, 2, 2063.70, 2064.75
lay a_cuts.inp_cut_int inv, int, 0, 2064.75, 2104.20
lay a_cuts.inp_cut_int inv, int, 1, 2104.20, 2110.55
lay a_cuts.inp_cut_int inv, int, 0, 2110.55, 2114.35
lay a_cuts.inp_cut_int inv, int, 2, 2114.35, 2116.05
lay a_cuts.inp_cut_int inv, int, 1, 2116.05, 2118.15
lay a_cuts.inp_cut_int inv, int, 0, 2118.15, 2125.20
lay a_cuts.inp_cut_int inv, int, 2, 2125.20, 2128.30
lay a_cuts.inp_cut_int inv, int, 1, 2128.30, 2134.20
lay a_cuts.inp_cut_int inv, int, 0, 2134.20, 2144.25
lay a_cuts.inp_cut_int inv, int, 1, 2144.25, 2149.75
lay a_cuts.inp_cut_int inv, int, 0, 2149.75, 2159.45
lay a_cuts.inp_cut_int inv, int, 2, 2159.45, 2161.90
lay a_cuts.inp_cut_int inv, int, 0, 2161.90, 2197.55
lay a_cuts.inp_cut_int inv, int, 0, 2161.90, 2170.00
lay a_cuts.inp_cut_int inv, int, 1, 2170.00, 2175.00
# Graphite Note... another attempt at automating an ML shop services
lay a_cuts.inp_cut_int inv, int, 0, 2175.00, 2197.55
lay a_cuts.inp_cut_int inv, int, 2, 2197.55, 2200.00
lay a_cuts.inp_cut_int inv, int, 0, 2200.00, 2213.60
lay a_cuts.inp_cut_int inv, int, 1, 2213.60, 2217.35
lay a_cuts.inp_cut_int inv, int, 3, 2217.35, 2219.05
lay a_cuts.inp_cut_int inv, int, 1, 2219.05, 2221.35
lay a_cuts.inp_cut_int inv, int, 0, 2221.35, 2244.20
lay a_cuts.inp_cut_int inv, int, 2, 2244.20, 2248.45
lay a_cuts.inp_cut_int inv, int, 0, 2248.45, 2307.50
lay a_cuts.inp_cut_int inv, int, 1, 2307.50, 2309.05
lay a_cuts.inp_cut_int inv, int, 0, 2309.05, 2313.05
lay a_cuts.inp_cut_int inv, int, 2, 2313.05, 2314.85
lay a_cuts.inp_cut_int inv, int, 3, 2314.85, 2316.00
lay a_cuts.inp_cut_int inv, int, 0, 2316.00, 2338.15
lay a_cuts.inp_cut_int inv, int, 1, 2338.15, 2343.10
lay a_cuts.inp_cut_int inv, int, 3, 2343.10, 2344.25
lay a_cuts.inp_cut_int inv, int, 1, 2344.25, 2348.60
lay a_cuts.inp_cut_int inv, int, 2, 2348.60, 2349.60
lay a_cuts.inp_cut_int inv, int, 0, 2349.60, 2359.15
lay a_cuts.inp_cut_int inv, int, 3, 2359.15, 2361.30
lay a_cuts.inp_cut_int inv, int, 0, 2361.30, 2366.35
lay a_cuts.inp_cut_int inv, int, 1, 2366.35, 2374.90
lay a_cuts.inp_cut_int inv, int, 0, 2374.90, 2382.45
lay a_cuts.inp_cut_int inv, int, 1, 2382.45, 2386.25
lay a_cuts.inp_cut_int inv, int, 0, 2386.25, 2428.95
lay a_cuts.inp_cut_int inv, int, 2, 2428.95, 2429.75
lay a_cuts.inp_cut_int inv, int, 1, 2429.75, 2435.00
# QA Wolf... selenium rival, wow
lay a_cuts.inp_cut_int inv, int, 1, 2435.00, 2450.40
lay a_cuts.inp_cut_int inv, int, 0, 2450.40, 2464.50
lay a_cuts.inp_cut_int inv, int, 3, 2464.50, 2467.35
lay a_cuts.inp_cut_int inv, int, 1, 2467.35, 2470.45
lay a_cuts.inp_cut_int inv, int, 0, 2470.45, 2479.65
lay a_cuts.inp_cut_int inv, int, 1, 2479.65, 2484.20
lay a_cuts.inp_cut_int inv, int, 2, 2484.20, 2488.70
lay a_cuts.inp_cut_int inv, int, 0, 2488.70, 2499.50
lay a_cuts.inp_cut_int inv, int, 1, 2499.50, 2502.45
lay a_cuts.inp_cut_int inv, int, 0, 2502.45, 2519.30
lay a_cuts.inp_cut_int inv, int, 1, 2519.30, 2520.60
lay a_cuts.inp_cut_int inv, int, 2, 2520.60, 2523.15
lay a_cuts.inp_cut_int inv, int, 0, 2523.15, 2551.75
lay a_cuts.inp_cut_int inv, int, 2, 2551.75, 2554.65
lay a_cuts.inp_cut_int inv, int, 3, 2554.65, 2555.80
lay a_cuts.inp_cut_int inv, int, 0, 2555.80, 2564.80
lay a_cuts.inp_cut_int inv, int, 1, 2564.80, 2566.80
lay a_cuts.inp_cut_int inv, int, 0, 2566.80, 2579.65
lay a_cuts.inp_cut_int inv, int, 2, 2579.65, 2581.50
lay a_cuts.inp_cut_int inv, int, 0, 2581.50, 2604.00
# hiring...
lay a_cuts.inp_cut_int inv, int, 0, 2604.00, 2616.60
lay a_cuts.inp_cut_int inv, int, 3, 2616.60, 2618.45
lay a_cuts.inp_cut_int inv, int, 0, 2618.45, 2627.65
lay a_cuts.inp_cut_int inv, int, 2, 2627.65, 2628.70
lay a_cuts.inp_cut_int inv, int, 0, 2628.70, 2642.80
lay a_cuts.inp_cut_int inv, int, 1, 2642.80, 2648.00
#
lay a_cuts.inp_cut_int inv, int, 1, 2695.00, 2697.75
lay a_cuts.inp_cut_int inv, int, 0, 2697.75, 2705.90
lay a_cuts.inp_cut_int inv, int, 3, 2705.90, 2707.55
lay a_cuts.inp_cut_int inv, int, 1, 2707.55, 2709.30
lay a_cuts.inp_cut_int inv, int, 0, 2709.30, 2713.90
lay a_cuts.inp_cut_int inv, int, 3, 2713.90, 2715.95
lay a_cuts.inp_cut_int inv, int, 0, 2715.95, 2724.50
lay a_cuts.inp_cut_int inv, int, 1, 2724.50, 2745.35
a_cuts.each do |from, to, at|
ina.each_with_index do |ia, i|
overlay ia.cut(from: int[i] + from - int[0], to: int[i] + to - int[0]), at: at if
ia
end if # NOTE special from=nil entries
from
end
overlay inp_title.cut(to: 6), at: 6
overlay inp_logo.cut(to: 2370), at: 50
overlay inp_mus.cut(to: 2370), at: 50
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment