Last active
December 21, 2015 05:48
-
-
Save rafapolo/6259175 to your computer and use it in GitHub Desktop.
Automatizar a utilização dos 1TB de armazenamento do Flickr para quaisquer arquivos.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding: utf-8 | |
# autor: Rafael Polo | |
# data: 18.08.2013 | |
# Prova de Conceito: É possível utilizar os incríveis 1024 gigabytes de armazenamento de imagens | |
# do Flickr pra hospedar o valioso Acervo do MakingOff através de esteganografia ! | |
# Motivação: Usuários torrents têm sido preza fácil pra associações anti-pirataria. | |
# O Acervo hoje tem cerca de 18 TB de conteúdo distribuído, muitos já inacessíveis. | |
# Algumas contas no Flickr seriam suficientes pra distribuir todo conteúdo ainda acessível. | |
# compacta, separa e esconde pasta em diversas imagens | |
def esteganografia(path) | |
out_path = "#{path}/out" | |
# cria pasta temporária | |
system("mkdir #{out_path}") unless File.directory? out_path | |
puts "Compactando..." | |
# Flickr tem o limite de 200MB por imagem, usarei 100MB por imagem. | |
system("rar a -v100m #{out_path}/out.rar #{path}") | |
# concateno RAR no fim do JPEG | |
system("mkdir #{out_path}/images") | |
Dir["#{out_path}/*.rar"].each do |chunk| | |
puts "Escondendo #{chunk}" # usa frame.jpg padrão | |
system "cat #{path}/frame.jpg #{chunk} > #{chunk}.jpg" | |
end | |
end | |
def upload_to_flickr | |
# por hora fiz manualmente o upload das imagens em um novo Set de um novo Usuário | |
# http://www.flickr.com/photos/100332464@N03/sets/ | |
end | |
# baixa, decodifica e descompacta um determinado Set do Flickr com arquivo escondido. | |
# assim, o ID do Set funciona como uma URL pro arquivo | |
def get_from_set(set_id) | |
# uso API com key do novo usuário (poderia ser qualquer uma válida) | |
require 'flickraw' | |
FlickRaw.api_key = '7fd9704ef650d1000263b1331277dd13' | |
FlickRaw.shared_secret = 'c9ee9d15766fcb03' | |
# pega as imagens das URLs de todas as imagens do Set dado | |
threads = [] | |
flickr.photosets.getPhotos(:photoset_id => set_id).photo.each do |s| | |
chunk = FlickRaw.url_o flickr.photos.getInfo(:photo_id => s.id) | |
threads << Thread.new { system "wget #{chunk} -O #{s.title}" } | |
end | |
threads.each { |t| t.join } | |
system "unrar e -y out.part01.rar" | |
puts "Ok!" | |
end | |
# exemplo de uso | |
esteganografia '/Users/polo/Downloads/Der.Himmel.Uber.Berlin.-.Wings.of.Desire.DVDRip.XviD.MakingOff.Org' | |
# sobe | |
upload_to_flickr | |
# remonta | |
get_from_set 72157635116479848 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment