
はてなキーワード:thumbとは
“Vaginal fingeringis legally and medically calleddigital penetration ordigital penetration of the vagina. The term "digital" takesits significance from theEnglishword 'digit', which refers to a finger,thumb, ortoe.[2] Fingeringmay also include the use of fingers to stimulate the anus.[3] Whensomeone performs fingeringonanother person's vulva or vagina,itis a form ofmanualsex, andis analogous to a handjob (manual stimulation of the penis).[4][5]Itmay be used forsexual arousal or foreplay, constitute an entiresexual encounter,[5] or be usedas non-penetrativesexual activity.[6] Fingering performedonone's own vulva or vaginais a form of masturbation.”
Whyisit that the womenwith the leastlikelihood of getting pregnant are the onesmost worried about having abortions?
なんで妊娠の可能性が最も低い女が、中絶のことを気にしてるんだ?
Nobodywants to impregnateyou ifyoulooklike athumb!
お前ら親指のような奴らなんて、誰も孕ませたがらない!
Isit safe to say that based off ofyour comments,you're suggesting that these womenat these abortion rallies are ugly and overweight?
あなたのコメントから察するに、中絶集会に参加している女性たちは醜くて太っていると言いたいのですか?
Yes.
そうです(真顔)
最近うちにも来た~
「先日来たのですがお留守だったので~」とまず嘘から入ってきた
https://note.com/haruaki12/n/n223484230f1a
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11150577056
https://question.realestate.yahoo.co.jp/knowledge/chiebukuro/detail/10289380920/
ググったら似たような手口が古いのから出てくるなあ
人の家にいきなり凸ってきて説教とか何考えてんのか分かんないけど
Rules ofThumbとして
「チラシなり名刺なりポストに入れておいてください。何かあったらこちらから連絡しますので」
が鉄板』
と覚えておいてね~
公開してみる
スカ好き増えろ
あとおススメ教えてください
1,東京スカパラダイスオーケストラ/ルパン三世’78
2,東京スカパラダイスオーケストラ/ DOWNBEATSTOMP
4,東京スカパラダイスオーケストラ/ ComeOn!
5,東京スカパラダイスオーケストラ/ スキャラバン(CARAVAN)
6,東京スカパラダイスオーケストラ/太陽にお願い
7,東京スカパラダイスオーケストラ/勇者の証~BraveEagle OfApache~
8,東京スカパラダイスオーケストラ/フィルムメイカーズ・ブリード~頂上決戦~
9,東京スカパラダイスオーケストラ/ 5days of TEQUILA
10,東京スカパラダイスオーケストラ/MONSTER ROCK
11,東京スカパラダイスオーケストラ/ Glorious
12,東京スカパラダイスオーケストラ,さかなクン/ ParadiseHasNo Border
13,東京スカパラダイスオーケストラ,宮本浩次/明日以外すべて燃やせ-feat.宮本浩次
16, Adhesivo/Skabullido
18, Adhesivo/Dia De Rutina
19, BadManners/ InnerLondonViolence
20, BrooklynFunk Essentials,Laço Tayfa/Ska Ka-Bop
21, Desorden Público/Allá Cayó
22, Desorden Público/TodoEstá MuyNormal
24,EGO-WRAPPIN’/ くちばしにチェリー
27, GypsySka Orquesta/ TostonSwing
31,HEY-SMITH/ We sing our song
32,KEMURI/ P.M.A(Positive MentalAttitude)
34,KEMURI/ O-zora
35,Kingston Rudieska/GiantMoment
36,Kingston Rudieska/ Captain J
37, LÄ-PPISCH/ RINJIN
38,Laurel Aitken/Jesse Jackson
40, Los Calzones/Todos Te Prometen
41, Los De Abajo,Diego Benlliure,José Grela /War 4Peace
43, Markscheider Kunst/ Ku
44, MelbourneSka Orchestra/GetSmart
45, MelbourneSka Orchestra/ LygonStreet Meltdown
46, NancySkaJazz Orchestra/ Hatcha!
47, NancySkaJazz Orchestra/ Démineur
48, NancySkaJazz Orchestra/ TomThumb
49,New YorkSka-JazzEnsemble/ BoogieStop Shuffle
50,New YorkSka-JazzEnsemble/Bopicana
51,Oi-SKALL MATES/ Bringon NuttyStomperfun
52,Oi-SKALL MATES/ Skinhead Running
53,Oi-SKALL MATES/Soulbrotherstomptogether
54,Oi-SKALL MATES/JusticeCalling 69
55,Oi-SKALL MATES/ Nutty SoundOi-SKALL MATES
56,Oi-SKALL MATES/SKANKIN' CLASS ERO
57,Out Of Control Army/ Global Ska
58,Out Of Control Army/ Dancing
59,Out Of Control Army/ElDiablo
60,Out Of Control Army/ Fuckthe police
61,Out Of Control Army/Skaloween-EnVivo
62,Out Of Control Army,Inspector/ Siempre Fingiste Amarme
63, PannoniaSka Orchestra/ Sahara
66, RotterdamSka-Jazz Foundation/ Backlash
67, RotterdamSka-Jazz Foundation/No MoreSorrow
68, RotterdamSka-Jazz Foundation/Tunisia
69,Save Ferris/The WorldIs New
70,SCAFULL KING/Strutting Bonin’
72, SHOW-SKA/ Scooted Scorpion
78,Skassapunka/Il piantodell'asino
79,St.PetersburgSka-JazzReview/ VolgaRiverBoatMan
80, The Busters/ScooterManiacs
81, The Fenicians/ Sac-O-Woe
82, The Locos,Bersuit Vergarabat/La Bolsa
83, The Mighty Mighty Bosstones/ The RascalKing
84, The OLDTONES/ THE WEEKEND GIRLFRIEND
86,The Ska Flames/Tokyo Shot
87, TheSka Vengers/ Vampire
88, TheSka Vengers,RieOna,Shirish Malhotra/ManciniSkank
89, TheSkankaroos/ Expedition ToSka
91,The Specials/Little Bitch
92, The Super GlassesSkaEnsemble/ KeepSkanking
96, Tinez RootsClub/ Chimpanzee
98,TwoToneClub/ Beware Of TheTiger
99,TwoToneClub/ ThreeLittle Words
100, Киоск/ Чудеса
一晩経ったら伸びててビックリ
・スカパラから入った浅いファンなので,厳密なスカの定義とかよく知らないんです.ご教授いただけると嬉しいです
・運転中に聴くことが多いのでアップテンポ,テンション高めの曲が多いです
・ホーン強めの曲が好き.なんならボーカルはなくても可
・Spotifyのプレイリストからの引き写しです.タイトルに「スカ」「SKA」両方が入っているプレイリストはそんなにないので見つけにくくはないかと
・おススメいっぱいありがとうございます!ポチポチ追加しております
Permalink |記事への反応(21) | 18:39
パソコン画面右上のアイコンで選ぶ表示スタイルを一番右の「ヘッドライン」表示にしといてな
/*ヘッドライン表示を切り詰める *//* #container指定でCSS優先度を上げる必要がある */body[data-entrylist-layout="headline"] #container .entrylist-main{padding-right: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents{padding-left: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{ position: static !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{top: 14px !important;}/*ヘッドライン表示にサムネイルを追加 */body[data-entrylist-layout="headline"] #container .entrylist-contents-main{ display: grid; grid-template: "usersbodytitle" 28px "bookmarkbody domain" 20px / 60px 120px 1fr;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users{ grid-area: users;}body[data-entrylist-layout="headline"] #container .entrylist-contents-users aspan{margin-right: 0;}body[data-entrylist-layout="headline"] #container .following-bookmarks-container{ grid-area:bookmark; position:absolute; left: 20px; bottom: 2.5px;}body[data-entrylist-layout="headline"] #container .entrylist-contents-body{ grid-area:body;}body[data-entrylist-layout="headline"] #container .entrylist-contents-title{ grid-area:title; z-index: 99;}body[data-entrylist-layout="headline"] #container .entrylist-contents-title > a{margin-left: -120px;padding-left: 120px;margin-bottom: -28px;padding-bottom: 28px; width: 890px;white-space: nowrap; display: block;}body[data-entrylist-layout="headline"] #container .entrylist-contents-body{ display: block !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{ position: static;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumbspan{ width: 100px; height: 50px;}body[data-entrylist-layout="headline"] #container .entrylist-contents-thumb{background: #f0f0f0; width: 100px; height: 50px;background-position:50%;background-size: cover;border-radius: 4px;}/* 2行目に、総合ではドメイン(domain),サイト内一覧ではカテゴリと時刻(meta),マウスホバー時はいずれも概要文(description) */body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,body[data-entrylist-layout="headline"] #container .entrylist-contents-meta,body[data-entrylist-layout="headline"] #container .entrylist-contents-description{ grid-area: domain; display: block; opacity: 0;padding: 0 !important;}body[data-entrylist-layout="headline"] #container .entrylist-contents-meta > li{ vertical-align:top;}html[data-stable-request-url^="https://b.hatena.ne.jp/entrylist/"]body[data-entrylist-layout="headline"] #container .entrylist-contents-domain,html[data-stable-request-url^="https://b.hatena.ne.jp/site/"]body[data-entrylist-layout="headline"] #container .entrylist-contents-meta{ opacity: 1;}body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain img.favicon +span,body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-meta{ opacity: 0;}body[data-entrylist-layout="headline"] #container .entrylist-contents-description{ opacity: 0; position:absolute;top:calc(40px - 3px); left:calc(180px + 16px + .5em); height: 20px;line-height: 20px;color: #999;min-height:auto !important;padding-right: 0 !important; width: 890px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}html[data-stable-request-url^="https://b.hatena.ne.jp/site/"]body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-domain,body[data-entrylist-layout="headline"] #container .entrylist-contents:hover .entrylist-contents-description{ opacity: 1;}/*増田調整 */body[data-entrylist-layout="headline"] #container a[href^="/entry/s/anond.hatelabo.jp/"] .entrylist-contents-thumb{background-image:url('https://cdn-ak-scissors.b.st-hatena.com/image/square/b1638cdb5807a4788e4ba3c1109a984166e095fc/height=288;version=1;width=512/https%3A%2F%2Fanond.hatelabo.jp%2Fimages%2Fog-image-1500.gif');}/*マウスホバー時にサムネも反応させる見た目調整 */.entrylist-contents-title:hover ~ .entrylist-contents-body .entrylist-contents-thumb{ opacity: .90;}
松本人志以外も消える
// ==UserScript==// @name hatebu-matsumoto// @version 1// @grant none// @include https://b.hatena.ne.jp/// ==/UserScript==var startTime =newDate().getTime();var t = setInterval( () =>{const list =document.querySelectorAll(".entrylist-contents-thumb,.entrylist-issue-thumb"); list.forEach(x => x.style.opacity ="0");if (newDate().getTime() - startTime>10000){ clearInterval(t);}},10);
document.cssRulesを加工するかMutationObserverを使えよ。 これだと一瞬松本の顔が映るだろ
足で人を指ささないし、足で薬を混ぜたりしないのに手と同じ名前をつけられているのは違和感がある。
多分誰もが違和感があるだろうに、誰も足指専門の名前を考えなかったのは不思議だ。
そもそも手と足は役割も全く違うのに同じ指と名付けているところから違和感がすごい、いつまで手と足に大差ない四足歩行気分でいるんだ。
英語では違う名前がついていて分かりやすいかと思いきや、手の親指は指として数えないせいで、手の薬指はthirdなのに足の薬指はfourthでこっちもけっこうややこしかった。
親指は不器用という意味で用いられたり、英語では気の毒な扱いを受けている、親指がないと様々なことができないのに何故だろう。
手の親指:thumb
手の中指:middle finger
手の薬指:third finger
手の小指:little finger
足の親指:firsttoe
足の薬指:fourthtoe
足の小指:fifthtoe
ヨッピーがはてブに返信させろって言ってるけど、それではてブがちょっとはマシな存在になるのか?って言うと全くそんな風には思えないんだよな。
かつては、idコールって機能があって、頻繁に難癖付けてくる奴がいたし、そう言った連中に不愉快な思いをしてた人って少なくないんじゃないのかなって思う。
往々にして、このidコールは非建設的なやりとり、罵倒の応酬に成り下がってたよね。100文字で的確に反論できないと、嫌味の一つも飛ばしたくなるんだろう。
で、しょっちゅうブログで人をおちょくって馬鹿にしてたHegexが低脳先生に殺されてしまって、この不毛な口喧嘩になりがちなidコールも問題視されたと。
Hagexはいずれネットでデカいしっぺ返しを受けて当然と思ってたけれど、だからって実際に殺されていいはずがない。
そんな経緯から言って現状のまま返信機能追加はあり得ないと思うけど、もしもはてブを改善するとしたら、何が出来て、どの程度の効果が見込めるだろうか?
以下に個人的に考える例をあげてみるけど、皆さんはどう思うかな?
ヤフコメなんかでも、thumb downの反応が出来るが、それを導入して人気ブコメの評価を下げられれば改善されるだろうか?
それはないだろうね。
はてブってのは、今や絶滅危惧種のサヨクが集まる限界集落で、リベラル傾向のあるコメントが評価を集めやすい構造になっている。
BAD評価、はてなブラックスター、みたいなものが出来たとしても、はてなサヨクの集団投票でよりリベラル傾向が強くなるだけだと思うよ。
例えば、東京オリンピックの際にアスリートに向かって「人殺しの顔をしろ」と言って罵倒しつつ、自分はライブに行っちゃう人のコメントが星を集めるんだからさ。
人生賭けて来たアスリートに、「人殺しの顔をしろ」って言える人たちは、応援コメントにthumb downしちゃうでしょ
これが正解だろう。コメントに優劣を付けない事で余計な論争も、しょうもないコメントに星が集まる事でリンチされてる感も消える。
ただ、この場合、はてなブックマークってサービスそのものが人気なくなりそう。
今は、このスターの機能のおかげで、限界集落のサヨクが連帯感を感じられて居心地良い訳だろうしなw
俺は、これをやって欲しいと思ってる。はてなブックマーク及び、はてなのサービスの最大の欠点は、誰もが簡単に複垢を作れてしまって
それを使ってコメントにスターを付けたり、コメントを増やしたり出来るって所にある。
全てのアカウントに携帯電話番号を紐づけたら、もしかしたら有効なアカウント数は半分以下になるんじゃないかと思える位だ。
携帯番号を抑えられてたら殆どのユーザーは大人しく、常識的に振舞うようになるだろう。ヤフコメの正常化は、これが大きいと思うよ。
例えばTwitter やインスタとの連携が義務化されるか、連携してるアカウントのブコメ以外は人気コメントに載せない様にしたらいい。
手斧の投げ合いは、そっちで出来るだろうし、手斧を投げ合う気がない奴らは過激なコメントを差し控える様になるでしょう。
例えば、とある、はてなサヨクのフェミおばさんは、人のアカウントのブックマークページに、罵倒のブコメを日々書き込んでるよね。
こういう行為に対する通報とか、苦情って、相当数寄せられてると思うんだよね。
この罵倒おばさんが、どの程度の苦情を受けている存在かを数値的に顕在化すればいいと思う。
迷惑な存在がコミュニティから自浄され消える結果を期待できるんじゃないだろうか?
Permalink |記事への反応(30) | 17:39
vanillableep1618 ラ面カイダー ケボット刑事ロー ダカイキー01 ガジンマーZ ……いくらでもでてくるな(笑)
sps1uw サガセターン
nikunonamae “sun太郎” つまり「日輪の長子」が、”キラリーman” すなわち「輝く益荒男」の称号を冠しており、非常にまばゆい。
uchiten これ系では「コーモン・デグレ」が最強だと思ってる。
ashraeクターすださい☆
uchiten これ系では「コーモン・デグレ」が最強だと思ってる。
GEKIGANGAA モット・チャンチー
ken-skatan 太ラリーサン・キ太郎伊武雅刀ファンホイホイなインターネッツはここですねwwwwwand
u4k ジョン・ベンソン、ジャイケル・マクソン、ヌワス「パパーーーーーっっ!!!!!」
mag-x こなさん みんばんわ>ジャンキー大山ショーhttps://www.youtube.com/watch?v=olnZywXLM_s
mr_yamada けつだいらまん
cozy3cs マラサキムンコ
nonameblog 「プロ猿ファーゴル」を世界で最初に思いついた人をリスペクト
oitomo ジャイケル・マクソン
nori__3シマチョウ課耕作
entryno001スプーナリズムって言うんだよね。海外にいた幼少期に「Billyhas awhistleonhisthumb (ビリーの親指には笛がある)」>「Whillyhas a thistleonhis bumb (ウィリーの尻にはトゲがある)」というのが絵本に載ってていたく気に入っていた
easy-breezy タッコミのブク
Dicer ドキがむねむねする
nekoashicable れき・たんたろう
PrivateIntMain サガシターン・セロ(1件/0.19秒)
teebeetee パッキング・パク
hiromi163 生まで朝テレビ!
fellfield 「けつだいらアウォード」を思い出した。「てっかほっかほい」とか大好きだったhttp://sledge-hammer-web.my.coocan.jp/ketsu-gaward.htm
kanan510080年代のフジテレビ「いきなりフライデーナイト」に、しりすえもんじコーナーというのがあってな。けつだいらまんが最高傑作。
kiyo_hiko太鼓のタシヅン思い出した
d346prt こなさんみんばんは!
FlowerLoungePerfumeのラジオにラジオネームがヤカタナスタカって人がいたな
kingate パークマンサー。
aobyoutann どつカキコ……はも……
lostnamer 金年三組・B八先生
gendouひろみやもとし
matsuedon "キラリマン・恋次郎"との一致はありません。検索結果 (引用符なし):氷川きよし恋次郎旅姿 -YouTube
Lagenaria ぶてなハックマーク
http://logsoku.com/thread/academy6.2ch.net/english/1259371295/
466 :名無しさん@英語勉強中 :2010/03/16(火) 18:01:25
名称-----*見出し語---token----word family----type
1.SVL-----12,000--12,000 (11,811)--8,543--11,996 (11,807)
2.LDAE----22,065--24,458 (23,105)--11,658--17,423 (16,116)
3.RHWIED--15,775--16,849 (15,718)--10,631--14,337 (13,259)
4.NVA-----24,055--27,700 (25,030)--12,129--20,186 (17,727)
Longman Dictionary ofAmerican English (LDAE)
RandomHouse Webster's IntermediateEnglish Dictionary (RHWIED)
token 延べ語数
個々の語をそれぞれ1語と数える
type (異なり語 (数))
個々の語が2回以上繰り返された場合、1回のみ数える
lemma 基本形+活用形
wait, waits, waited, waiting:1語
society, societies, society’s, societies’:1語
leak, leaks, leaking, leaked, leaky, leakiness, leakage, leaker:1語
468 :名無しさん@英語勉強中 :2010/03/16(火) 18:09:38
How manywords do nativespeakers know?
At present the best conservative rule ofthumb that we have is that up to a vocabulary size of around 20,000word families, we should
expect that nativespeakers willadd roughly 1000word families a year to their vocabulary size. That means that afive year old
beginning school will have a vocabulary of around 4000 to 5000word families. A university graduate will have a vocabulary of around
20,000word families (Goulden, Nation and Read, 1990).
http://www.fltr.ucl.ac.be/fltr/GERM/ETAN/bibs/vocab/cup.html
471 :名無しさん@英語勉強中 :2010/03/16(火) 18:23:03
語彙習得速度
nativespeakers willadd roughly 1000word families a year to their vocabulary size.
http://www.fltr.ucl.ac.be/fltr/GERM/ETAN/bibs/vocab/cup.html
img_passがimg_pathの間違いなんじゃないか、と思う以外は別にそんなに分かりにくいと思わないけどなぁ。
俺も同じようにすると思う。
Thumbnail,thumbnail,thumbnailsが紛らわしいと思うなら、
thumb_array = array.new();while(img_path =gets())thumb =Thumbnail.new(img_path)thumb_array.add(thumb)end
とすればよろし。
ギークではないし、どちらかといえば下手なのですが。
http://anond.hatelabo.jp/20090324005857
例えば、サムネイルを作る makeThumbnails という関数なら、
result = array.new()while(src =gets()) result.add(Thumbnail.new(src))endreturn result
かもしれないし、例えばサムネイルを一覧表示時のアイコンに使うなら、index_iconsとか、gif化してアニメーションするならframesとかつけるかも。
ちなみに、perlなら $frame = shift @frame だ。
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものをgem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo offsetlocalset WD=%~dp0cd/d%WD%ruby get_movies.rbruby get_images.rbruby create_m3u.rb
user:ユーザIDpassword:パスワードids_file: ids.txtdone_file: ids_done.txtmovies_dir: movieslog4r_config:pre_config:global: INFOloggers:-name: apptype:Log4r::Loggerlevel: INFOoutputters:- STDOUT- FILEoutputters:-name: STDOUTtype:Log4r::StdoutOutputterformatter:type:Log4r::PatternFormatterpattern:"%d [%l] %C - %M"date_pattern:"%H:%M:%S"-name: FILEtype:Log4r::FileOutputterfilename:"#{LOGDIR}/sangels.log"formatter:type:Log4r::PatternFormatterpattern:"%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 =$logclassIDFiledefinitialize(file)@file = file unlessFile.exist?(@file)Fileutils.touch(@file)endenddefids(contains_comment =nil)File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty?nilelsif contains_commenttrueelsenot /^\s*\#/ =~ xend } }enddefadd(id) ids = ids(true) unless ids.any? {|x| x ==id} write(ids + [id])endenddefdelete(id) ids = ids(true) if ids.any? {|x| x ==id} write(ids - [id])endenddefwrite(ids)File.open(@file,"w") {|io| ids.each {|x| io.puts x} }endend$log.info("BEGIN#{$0} ================")exit_code =0begin ids_file =IDFile.new($config.ids_file) done_file =IDFile.new($config.done_file) movies_dir =$config.movies_dirwget =WGet.new sangels =SAngels.new sangels.login($config.user,$config.password) ids_file.ids.each {|id|begin movies = sangels.movies(id)rescueSAngels::Movies::InvalidMoviesError$log.warn("invalid movieid:#{id}")nextenddir =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 =1end$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 =0begin movies_dir =$config.movies_dir sangels =SAngels.new sangels.login($config.user,$config.password) thumbnails = sangels.thumbnailsDir.glob("#{movies_dir}/*").each {|dir|nextunlessFile.directory?dirid =File.basename(dir)url = thumbnails.url(id) unlessurl$log.warn("#{id} isnot found")nextend path =File.expand_path("00_thumbnail#{File.extname(url)}",dir)nextifFile.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 =1end$log.info("END#{$0} (#{exit_code}) ================")exit exit_code
BASEDIR =File.dirname($0)require"#{BASEDIR}/util"$config = load_config(BASEDIR)movies_dir =$config.movies_dirDir.glob("#{movies_dir}/*") {|dir|nextunlessFile.directory?dirname =File.basename(dir) files =Dir.glob("#{dir}/*.wmv").sortFile.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"classSAngelsHOST ="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/"definitialize()@agent =WWW::Mechanize.newenddeflogin(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)enddefmovies(id, no_validate =nil)Movies.new(@agent,id, !no_validate)enddefthumbnailsThumbnails.new(@agent)end classThumbnailsdefinitialize(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 =$1if /ID=(.+)/ =~hrefurl = elem.search("img")[0]["src"] [id,url] })enddefget_file(id)@agent.get_file(url(id))enddefurl(id)@links[id]enddefexist?(id)url(id)endend classMovies classInvalidMoviesError <StandardErrorenddefinitialize(agent,id, no_validate)@agent = agent@id =id if !no_validate && !valid?raiseInvalidMoviesErrorendenddefinfo_page_url"#{INFO_URL}?ID=#{@id}"enddefinfo_page@agent.get(info_page_url)enddefmovies_page@agent.click(info_page.links.find {|link| /P=10/ =~link.href})enddefmovie_links movies_page.links.select {|link| /wmv$/ =~link.href }.sort {|a, b|File.basename(a.href) <=>File.basename(b.href) }enddefvalid? info_page.uri.to_s == info_page_urlenddefeach(&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) }endendend
require'log4r'require'log4r/yamlconfigurator'require'singleton'require'fileutils'require'ostruct'defHash(a)Hash[*a.flatten]enddefload_config(basedir)OpenStruct.new(File.open("#{basedir}/config.yaml") {|io|YAML.load(io)})enddefnew_logger(name)Log4r::Logger.new("app::#{name}")enddefprepare_logger(basedir, logdir =nil) logdir ||= basedirLog4r::YamlConfigurator["LOGDIR"] = logdirLog4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml")endclassNullObject includeSingletondefmethod_missing(message, *arg)NullObject.singletonendendclassWGet class<<self attr_accessor:logdefinitializesuper@log =NullObject.singletonendenddeflogself.class.logenddefretrieve(url,dir)FileUtils.mkdir_p(dir) file =File.expand_path(File.basename(url),dir) ifFile.exist?(file) log.info("already retrieved#{url}")returntrueend 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-Cexit($?)else log.error("retrieving failure#{url} (#{$?})")endendreturn retendend