Skip to content

Instantly share code, notes, and snippets.

@ScorpiusZ
Created February 26, 2016 06:28
Show Gist options
  • Save ScorpiusZ/da2e27ac838e0711f594 to your computer and use it in GitHub Desktop.
Save ScorpiusZ/da2e27ac838e0711f594 to your computer and use it in GitHub Desktop.
upload video from youku to qiniu
require 'qiniu'
require 'csv'
SOURCE_FILENAME = 'topics_data.csv'
TARGET_FILENAME = 'uploaded_data.csv'
REMOTE_PREFIX = 'video/topic'
`mkdir -p video`
#qiniu init
Qiniu.establish_connection! :access_key => 'access_key',
:secret_key => 'secret_key'
def get_video_format url
result = `you-get -i #{url}`
formats = result.scan(/format: *(\w+)/).flatten
containers = result.scan(/container: *(\w+)/).flatten
formats.include?('mp4') ? ['mp4','mp4'] : formats.zip(containers).first
end
def download_and_upload_youku topic_id,index,youku_url
format,container = get_video_format youku_url
file_name = "#{topic_id}_#{index}.#{container}"
cmd = "you-get -o video -O #{file_name} --format=#{format} #{youku_url}"
p cmd
system(cmd)
put_policy = Qiniu::Auth::PutPolicy.new(
'gpk-videos', # 存储空间
"#{REMOTE_PREFIX}/#{file_name}", # 最终资源名,可省略,即缺省为“创建”语义
)
code, result, response_headers = Qiniu::Storage.upload_with_put_policy(
put_policy, # 上传策略
"video/#{file_name}", # 本地文件名
)
return code,"https://o2zv1sx7h.qnssl.com/#{REMOTE_PREFIX}/#{file_name}"
end
CSV.open(TARGET_FILENAME,'w') do |uploaded|
CSV.foreach(SOURCE_FILENAME) do |data|
topic_id, index, youku_url = data
code,remote_url = download_and_upload_youku(topic_id,index,youku_url)
p "topic : #{topic_id}, code : #{code}, remote_url : #{remote_url}"
uploaded << [topic_id,youku_url,remote_url] if code == 200
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment