はてなキーワード: wmvとは
動画によってはXMLデータをコピー&ペースト等DLに少し手間がかかるが、
時間帯によって重い。
動画によってはXMLデータをコピー&ペースト等DLに少し手間がかかるが、
Yourfilehostの動画に的を当てたサイト。
Yourfilehostの動画をWMVでDLできる。
夜はちょっと重い。
DLランキングもついており、ニコ動に関しては情報が充実している。
ニコ動に関してはおkかと。
Youtube,Veoh,SayMove,YourfilehostをDLできる。
Ajaxライクなサイトで、すべて1クリックでDLできる(余計なXMLデータのコピペがいらない)。
いつか正規表現ってこんなにすごいんですよー
という紹介文を考えてたらやはりエロだよね
という結論に至ったのでこんなのを書いてみます
yourfilehostのURLが取り出せなくて困ります
いいけど今回はこんな方法を取ってみましたー
↓
2、HTMLソースからwmvで検索して動画のURLの場所を特定
↓
まず1。全然難しくないですねー
続いて2。
wmvで検索するもどうやら目的の動画のURLは一行に収まっている
そして3。ここからが本番です
欲しいURLは末尾がwmvのはずなのでまず以下の正規表現で置き換え。
検索 - 置換のダイアログで以下の設定してから「全置換」を実行。
検索語「wmv」
置換する語「wmv\n」
大文字小文字の区別にチェック(どっちでもいい)
ファイル先頭からにチェック(必須)
正規表現にチェック(必須)
はい。説明するまでもないです。wmvの後に改行入れただけ。
エディタの状態はこちら
希崎ジェシカ(省略)<br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_001.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_002.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_003.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_004.wmv " target="_blank">希崎ジェシカ 動画</a><br><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato01.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato02.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato03.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato04.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato05.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato06.wmv " target="_blank">希崎ジェシカ 動画</a><br><a href="http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato07.wmv
いいかんじですねー。はい次はURLの前にくっついてる文字列を消し去ります。
検索語「.*"http」
置換する語「http」
大文字小文字の区別にチェック(どっちでもいい)
ファイル先頭からにチェック(必須)
正規表現にチェック(必須)
http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_001.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_002.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_003.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_004.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato01.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato02.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato03.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato04.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato05.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato06.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato07.wmv
いいですねー。おっと”&”なんて文字もあります。
これも置換
http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_001.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_002.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_003.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jessica_0107_004.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato01.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato02.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato03.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato04.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato05.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato06.wmv http://www.yourfilehost.com/media.php?cat=video&amp;file=jk3pcheckskato07.wmv
はい見直してみると微妙ですねー。
おわりー。
※追記
&アンパサンドが上手く行かなくてふて腐れ。
もういいやぺたり。
YourFileHostのCAPTCHA画像をなんとかするの続きの続き。
まぁ、なんというか、一応できたので張ってみる。微妙な出来栄えだけど。
decaptcha.rbと同じディレクトリに置いて適当に動かしてみてください。
どっかにいいRSSがないかなぁ。。。
しかし、CAPTCHA画像を相手にしてた時の方が楽しかったなぁ。。。
あと、添削とかいろいろ歓迎です。
なぜか&が&amp;に置き換えられてるみたいなので、適当に&に読み替えてください。
#!/usr/local/bin/ruby $LOAD_PATH << File::dirname(File::expand_path($0)) require 'rubygems' require 'rss' require 'mechanize' require 'decaptcha' # require 'ruby-debug' # require 'pp' DESTDIR = 'files' TMPDIR = '/tmp' class Downloader COOKIE_URI = 'http://www.yourfilehost.com/media.php?cat=video&file=%s' DOWNLOAD_URI = 'http://www.yourfilehost.com/downloadlink.php?cat=video&file=%s&adult=1' VERBOSE = false DEBUG = false def self.fetch(file, destdir) puts "Fetching file: #{file}" destfile = destdir + '/' + file if test(?e, destfile) then puts ' - Already exists. skip' puts return nil end # # Initialize Mech # mech = WWW::Mechanize.new mech.user_agent_alias = 'Windows IE 6' mech.max_history = 3 mech.open_timeout = 15 mech.read_timeout = 3 # # get cookie # uri = COOKIE_URI % file page = mech.get(uri) # # Challenge against CAPTCHA # uri = DOWNLOAD_URI % file page = mech.get(uri) for i in 0...3 captcha_path = (page/'img[@height="38"]').attr(:src) captcha_uri = 'http://www.yourfilehost.com/%s' % captcha_path gif = mech.get_file(captcha_uri) open("#{TMPDIR}/captcha.gif", 'w') {|fd| fd.write(gif) } mech.back code = DeCAPTCHA.decode("#{TMPDIR}/captcha.gif") File.unlink("#{TMPDIR}/captcha.gif") if code.nil? then puts ' - CAPTCHA decode failed. retry' if VERBOSE next end form = mech.page.forms.first form.verify = code page = mech.submit(form) break unless page.links.empty? end if page.links.empty? then puts ' - Failed 3 times. Try another one.' puts return nil end # # download # puts " - Downloading: #{page.links.first.href}" if DEBUG retry_count = 0 video = nil begin video = page.links.first.click rescue Timeout::Error => evar retry_count += 1 if retry_count < 5 then puts " * Timedout, retry" if VERBOSE retry end raise evar end unless video.instance_of?(WWW::Mechanize::File) then if DEBUG then puts " - Something wrong while downloading. skip." puts end return nil end video.save(destfile) return destfile end end # # main # [DESTDIR, TMPDIR].each do |dir| if !test(?d, dir) or !test(?w, dir) then puts "#{dir}: Directory not exists or cannot write." exit end end files = [] # collect URIs from RSS RSS_URI = [ ['http://www.yourfilehost.com/make-rss.php?range=day&af=off', lambda {|rss| rss.items.map {|x| x.link }}, ], ] RSS_URI.each do |uri, preprocessor| rss = RSS::Parser.parse(uri) uris = preprocessor.call(rss) #=> Array of URI of YourFileHost uris.map {|x| /file=([^&]*)/.match(x).to_a[1] }.each do |file| # next if file !~ /\.wmv/ # uncomment it if you need only wmv files << file end end files.uniq! # download files.each do |file| begin Downloader.fetch(file, DESTDIR) rescue SystemCallError, Timeout::Error => evar puts " - error (#{evar.to_s}). skip." puts end end __END__
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを gem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo off setlocal set WD=%~dp0 cd /d %WD% ruby get_movies.rb ruby get_images.rb ruby create_m3u.rb
user: ユーザID password: パスワード ids_file: ids.txt done_file: ids_done.txt movies_dir: movies log4r_config: pre_config: global: INFO loggers: - name: app type: Log4r::Logger level: INFO outputters: - STDOUT - FILE outputters: - name: STDOUT type: Log4r::StdoutOutputter formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%H:%M:%S" - name: FILE type: Log4r::FileOutputter filename: "#{LOGDIR}/sangels.log" formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%Y-%m-%d %H:%M:%S"
require 'fileutils' require 'logger' require 'mechanize' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_movies") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log class IDFile def initialize(file) @file = file unless File.exist?(@file) Fileutils.touch(@file) end end def ids(contains_comment = nil) File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty? nil elsif contains_comment true else not /^\s*\#/ =~ x end } } end def add(id) ids = ids(true) unless ids.any? {|x| x == id} write(ids + [id]) end end def delete(id) ids = ids(true) if ids.any? {|x| x == id} write(ids - [id]) end end def write(ids) File.open(@file, "w") {|io| ids.each {|x| io.puts x} } end end $log.info("BEGIN #{$0} ================") exit_code = 0 begin ids_file = IDFile.new($config.ids_file) done_file = IDFile.new($config.done_file) movies_dir = $config.movies_dir wget = WGet.new sangels = SAngels.new sangels.login($config.user, $config.password) ids_file.ids.each {|id| begin movies = sangels.movies(id) rescue SAngels::Movies::InvalidMoviesError $log.warn("invalid movie id: #{id}") next end dir = File.expand_path(id, movies_dir) movies.each {|link| wget.retrieve(link.href, dir) } expected = movies.movie_links.map{|x| File.basename(x.href)} actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)} if (expected - actual).empty? done_file.add(id) ids_file.delete(id) end } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
require 'fileutils' require 'logger' require 'mechanize' require 'ostruct' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_images") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log $log.info("BEGIN #{$0} ================") exit_code = 0 begin movies_dir = $config.movies_dir sangels = SAngels.new sangels.login($config.user, $config.password) thumbnails = sangels.thumbnails Dir.glob("#{movies_dir}/*").each {|dir| next unless File.directory? dir id = File.basename(dir) url = thumbnails.url(id) unless url $log.warn("#{id} is not found") next end path = File.expand_path("00_thumbnail#{File.extname(url)}", dir) next if File.exist? path $log.info("retrieving #{url}") thumbnail = thumbnails.get_file(id) File.open(path, "wb") {|io| io.write(thumbnail)} } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
BASEDIR = File.dirname($0) require "#{BASEDIR}/util" $config = load_config(BASEDIR) movies_dir = $config.movies_dir Dir.glob("#{movies_dir}/*") {|dir| next unless File.directory? dir name = File.basename(dir) files = Dir.glob("#{dir}/*.wmv").sort File.open("#{movies_dir}/#{name}.m3u", "w") {|io| files.each {|file| io.puts "#{name}/#{File.basename(file)}" } } File.open("#{dir}/00_movies.m3u", "w") {|io| files.each {|file| io.puts "#{File.basename(file)}" } } }
require 'mechanize' require 'hpricot' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" class SAngels HOST = "real2.s-angels.com" LOGIN_URL = "http://#{HOST}/member/" INFO_URL = "http://#{HOST}/teigaku/item.php" THUMBNAILS_URL = "http://#{HOST}/teigaku/" THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/" def initialize() @agent = WWW::Mechanize.new end def login(user, password) login_form = @agent.get(LOGIN_URL).forms.find {|form| form.fields.any? {|field| field.name == "frmLoginid"} } login_form.frmLoginid = user login_form.frmPw = password @agent.submit(login_form) end def movies(id, no_validate = nil) Movies.new(@agent, id, !no_validate) end def thumbnails Thumbnails.new(@agent) end class Thumbnails def initialize(agent) @agent = agent doc = Hpricot(@agent.get_file(THUMBNAILS_URL)) elems = doc.search("div[@class=realthum]/a") @links = Hash( elems.map {|elem| href = elem["href"] id = $1 if /ID=(.+)/ =~ href url = elem.search("img")[0]["src"] [id, url] }) end def get_file(id) @agent.get_file(url(id)) end def url(id) @links[id] end def exist?(id) url(id) end end class Movies class InvalidMoviesError < StandardError end def initialize(agent, id, no_validate) @agent = agent @id = id if !no_validate && !valid? raise InvalidMoviesError end end def info_page_url "#{INFO_URL}?ID=#{@id}" end def info_page @agent.get(info_page_url) end def movies_page @agent.click(info_page.links.find {|link| /P=10/ =~ link.href}) end def movie_links movies_page.links.select {|link| /wmv$/ =~ link.href }.sort {|a, b| File.basename(a.href) <=> File.basename(b.href) } end def valid? info_page.uri.to_s == info_page_url end def each(&block) orig_links = movie_links orig_links.each {|orig_link| link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)} block.call(link) } end end end
require 'log4r' require 'log4r/yamlconfigurator' require 'singleton' require 'fileutils' require 'ostruct' def Hash(a) Hash[*a.flatten] end def load_config(basedir) OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)}) end def new_logger(name) Log4r::Logger.new("app::#{name}") end def prepare_logger(basedir, logdir = nil) logdir ||= basedir Log4r::YamlConfigurator["LOGDIR"] = logdir Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml") end class NullObject include Singleton def method_missing(message, *arg) NullObject.singleton end end class WGet class << self attr_accessor :log def initialize super @log = NullObject.singleton end end def log self.class.log end def retrieve(url, dir) FileUtils.mkdir_p(dir) file = File.expand_path(File.basename(url), dir) if File.exist?(file) log.info("already retrieved #{url}") return true end tmp = "#{file}.part" log.info("retrieving #{url}") ret = system("wget", "-c", "-O", tmp, url) if ret log.info("retrieving succeeded #{url}") File.rename(tmp, file) else if $? == 0x020000 # Ctrl-C exit($?) else log.error("retrieving failure #{url} (#{$?})") end end return ret end end
http://anond.hatelabo.jp/20080919184855
17歳男子がオススメする!「"イイ"YourFileHostまとめサイトのまとめ」
予想以上のブクマ数と予想以下のトラックバック数に開いた口がふさがらない元増田です。
さて、お礼といっちゃあれですが、もし「YourFileHostがうまく再生できなくてハァハァできない!」という方のためのエントリー。
うまく再生できないというのは、下記のようなメッセージが出てきてしまう状態のことです。
To Continue Please Log In Or Register For A Free Account.
私自身、詳しいことはよく知らないんですが、どうやら日本からのアクセスが過多なのでアクセスを制限するために、動画を連続3回以上見ると表示されてしまうメッセージのようです。
これを表示させずにハァハァしつづけたいのであれば…
InternetExplorer系であればツール→インターネットオプションから、FireFoxならツール→オプションから、Operaならツール→設定から、WEBブラウザのデフォの言語を設定することができます。(SafariとかNetScapeとかはインスコしてないのでよく知りません)
これを英語に変えることであたかも英語圏からアクセスしているように見せかけるというわけですね。
ただ、言語を英語に変えると英語に対応している国内サイトの一部が英語で表示されてしまうことがあります。日本語で閲覧するためには言語設定を日本語に戻さなければいけません。しょっちゅうハァハァしたい場合、これはとても面倒。
そこですね、私は普段よく使うIEとFireFoxは日本語のままにし、Operaをハァハァ専用ブラウザとしOperaだけを英語に設定しています。まぁこんなこともできるということで参考に。
YOUTUBEやニコニコ動画と同じように動画だけを抽出しちゃうことができます。Vid-DL(http://tinyurl.com/256tcf)などを使うと簡単です。
ただし、ダウンロードできるのはflvファイルのみ(だと思う)です。WindowsMediaPlayerやクイックタイムなどでは再生できません。これらでも再生できるwmvとかに変換(http://tinyurl.com/2sv47x)するのもいいですが、私はflvもwmvなども再生できるGOMプレイヤーってのをおすすめします。無料でダウンロードできる(http://tinyurl.com/y8g3pj)ので知らなかった!という人はぜひ使ってみてください。
GOMプレイヤーなら、動画投稿可の携帯用掲示板などからダウンロードした地鶏エロ動画(3g2や3gpなど)も再生できるので便利です。
YourFileHost で動画再生している時に下の文字をアドレスバーにコピペして、Enterキー押すと簡単にflvファイル落とせるね!
javascript:if(document.body.innerHTML.match(/<param\sname=\"movie\"(.*?)%2526cid%253D(.*?)%2526(.*?)%2526cdnkey%253D(.*?)%2526/)){location.href="http://cdn.yourfilehost.com/unit1/flash8/"+RegExp.$2.substr(0,2)+"/"+RegExp.$2+".flv?key="+decodeURIComponent(RegExp.$4)}else{alert("Failed");}
ブックマークのURLに登録して再生中にそのブックマーク開くと、同じように落とせるしこっちの方が簡単だね。
ブックマークレットってやつだね。
ま、全部試してないけど、これとかは落とせたね。
http://www.yourfilehost.com/media.php?cat=video&file=one_night_stand.wmv
http://anond.hatelabo.jp/20070429211930
ファイルにurlコピペしといてそこから読み込むようにしたんだぜ?
頭の"h"を補完するようにしたんだぜ?
例えばhoge.txtとして次のような内容にしておく。
ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_001.wmv ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_002.wmv ttp://www.yourfilehost.com/media.php?cat=video&file=hoge_003.wmv
こっちはbukkonuki.rbとして保存。
require 'rubygems' require 'scrapi' require 'open-uri' def get_yourfilehost_src(uri) yourfilehost_src = Scraper.define do process "embed", :src => "@src" result :src end yourfilehost_match = /vidlink\=(.*?)&/ return yourfilehost_match.match(yourfilehost_src.scrape(URI.parse(uri)))[1] end def completion_uri(arg) if arg =~ /^h/ uri = arg else uri = 'h' + arg end return uri end def expansion_list() $*.each do |files| File::open(files) do |file| file.each {|line| system 'wget', get_yourfilehost_src(completion_uri(line)) } end end end expansion_list() #$*.each do |arg| # system 'wget', get_yourfilehost_src(completion_uri(arg)) #end
使うときは
ruby bukkonuki.rb hoge.txt
って感じで頼むぜ。
yourfilehostぶっこぬき
http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv
こんなのからhogehoge.wmvをダウンロードするためのrubyスクリプト
これをbukkonuki.rbとして保存する
require 'rubygems' require 'scrapi' require 'open-uri' yourfilehost_src = Scraper.define do process "embed", :src => "@src" result :src end ARGV.each do |uri| p system "wget", yourfilehost_src.scrape(URI.parse(uri)) end
こんな感じで使うとDLしてくる
ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv"
複数指定してもDLしてくる
ruby bukkonuki.rb "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv1" "http://www.yourfilehost.com/media.php?cat=video&file=hogehoge.wmv2"
半日かかったぞ…ふざけやがって