読者です 読者をやめる 読者になる 読者になる

John(筋肉)の備忘録的な何か

備忘録的な何かであり、進捗そのものでもあるよ!!怖い人は見ないで!

Python3でスクレイピング!!画像自動ダウンロード!!

皆さんこんにちは。John(筋肉)です。

最近、上司(先輩)であり、尊敬するいるやんさんに勉強会に連れて行っていただきました。

そこで学んだもので少し趣味をしたので、紹介したいと思います。

 

何作ったのかー

あ艦これBlogという艦これのまとめサイトからページを取得して、自動的にそこに貼ってある画像をダウンロードさせていただくプログラムです。

akankore.doorblog.jp

エロサイトちゃうよっ!!

 

これがコードだ!!

まず入れるモジュールからー。

 

import requests

import os

from bs4 import BeautifulSoup

 

それからダウンロードするときの名前設定、ダウンロード先ファイルを指定したり、ダウンロードするための関数を定義。

 

def download(keyword):
    for img in soup.select(keyword):
        file_name = img["src"].split('/')[-1]
        res = requests.get(img["src"],stream=True)
        if res.status_code == 200:
            with open("./downloads/"+number+'/'+file_name,"wb") as file:
                for chunk in res.iter_content(chunk_size=2048):
                    file.write(chunk)
            file.close()

 

Python初心者なので怖い指摘は控えておなシャス!

そんでもって本体?

 

print("akankore's page number: (example:49295408)")
number = input()
url = requests.get("http://akankore.doorblog.jp/archives/"+number+".html")
soup = BeautifulSoup(url.content,"html.parser")
print(soup.title.string)
if os.path.exists("./downloads") == False:
    os.system("mkdir ./downloads")
os.system("mkdir ./downloads/"+number)
download(".t_b a img")
download("a .mt-tweetimg-multi")

 

うん。なんで3行目、urlって名前にしたんだろう。。reqとかが良さげだのに。

ネーミングセンスや正規表現?に関しては許せ下さい。

 

これ実行し、49295408と入力すると、

http://akankore.doorblog/archives/49295408.html

の.t_bの中のaの中のimg、またaの中の.mt-tweeting-multiの画像が、./Downloads/49295408/にダウンロードされます!良さ!

49295408は趣m...適当に例としてあげただけだからっ!

 

ちなみにタイトルと入力するべき番号を取得するプログラムも組んだので無限に画像を得ることもできそう。

 

まとめ

僕悪いことしてない。健全。

 

そして無限の可能性を見た。

 

こここうした方がいいよー、とか、こんな楽しい学問もあるよー、とか、優しく教えてくださいな。ありがとうございました。

Emacsコマンドでテキスト上に文字を入力したい

どうもこんにちは。John(筋肉)です。今日3つめです。

今回はEmacsコマンドでテキスト上に文字を入力したいという記事です。

 

これは「次の行に移動」するコマンドと「行の最後に移動」するコマンド、「空白の入力」を一つのショートカットで行ってほしい時、空白の入力に関してパッと調べただけでは出なかったので書きたいと思いました。

 

英単語をまとめたい

始まりはこれでした。持ってる英単語帳をそのままデータ化したかったのです。

 

cease するのをやめる
conclude と結論づける
vanish 姿を消す
bury を埋葬する
collapse 壊れる

 

こういうのを楽に作りたかった。そこで僕は、楽な方法は、

 

cease

conclude

vanish

bury

collapse

 

と入力してから、日本語訳を打ち込むこと。と考えました。

つまり、英単語と空白を入力したあと、次の行に移動し、行の最後に移動し、日本語訳を入力するのが簡単で楽だと。。

 

しかし、英単語のあと空白入力が面倒くさい。

しかも半角空白で入力したいので、日本語訳を入力するたびに全角/半角を入れかえないといけない。

 

なので空白を入力するすべを探しました。

 

init.elにはこう書きました!

 

(defun end-of-next-line(null)
(interactive "i")
(next-line)
(end-of-line)
(insert " "))
(global-set-key [(C q)] 'end-of-next-line)

 

insertがわかんなかったんだよねぇ。調べてもバッファに文字を出力するやつとかしかでなくて。

 

これのおかげで便利になり、英単語はまとめれたよ!ありがとうinsert!

 

(ありがとうございました。またこんな方法もあるよ!という方教えてくださいお願いします。)

平泳ぎ、背泳ぎで注意するべき点。

どうも。John(筋肉)です。

引き続き水泳に関して書きたいと思います。クロール以外は大して聞いてなく、内容も薄いです。

(前の記事はクロールに関してでした。)

平泳ぎについて

正直よくわかんなかった。専門じゃないから仕方ないね!

腰を高く、重心を前に

手の搔きを小さくし、頭というか、重心を前に持っていくよう言われました。また重心を前に持っていきながら、潜らず、上下運動が少なく、小さくなるようにと。

そして腰が低いとスピードが乗らないとも言われましたね。

 

 

当たり前っちゃ当たり前なので、これ以上何も言えない。。

 

、、専門じゃないし興味ないからこんなでいいかな?

でも備忘録には書きたかったので少し失礼。

 

 

背泳ぎについて

キャッチは肩の上

クロール同様当たり前なことで、難しい。。

しかも、ローリングのせいでさらに難しくなるし。。

 

キャッチの一に関しては、動画でも撮ってもらって確認する方が良さそうですね。

 

しまった。背泳ぎもこれで終わってしまった。クロール中心に聞いていたので、こんなもんかしら?

 

しいてもう1点言うとすれば、キックを均等にってぐらいですかね。僕めっちゃキック汚いので。。

 

 

とまぁ、これだけの内容のないものになってしまい申し訳無いです。技術系も頑張ろう。

クロールで注意するべき点。

皆さんこんにちは。John(筋肉)です。

ネタがない上、今日のメニューがフォームを直すというものだったので、ブログ名の通り備忘録っぽい使い方しようと思います。

コーチがバタフライめっちゃ嫌いな人だったので、バタフライについては聞いてません。

クロールについて

まず、今まで知らなかったことから。。

・軸は2本

今まで早いクロールというのは、「軸は1本、背筋を中心としてローリングを行う形だ」と言われていました。僕もそう思っていました。

f:id:julia-bardera-jb:20170107213821g:plain

www.samoyed.coresv.com

(画像はここから使わせていただきました。)

 

しかし、近年2本の軸を持った泳ぎのほうが早いと言われるようになったらしいです。

実際に「それで泳げ」と言われて泳いでもわかりませんでした。でも楽だし、速いらしい。。

 ローリング苦手なのでありがたい。。

・教本通りの泳ぎはだめ

だめというのは言いすぎな気がしますが、まぁこちらをどうぞ。

f:id:julia-bardera-jb:20170107221237p:plain

よくこんなの見ると思うんですが、これはプル、プッシュを意識させるためにも大きく?大げさに?書いてあるそうです。

(パッと調べてみましたが、競泳に至っては合ってそうです。)

 

まぁ、要するに腕は曲げずにまっすぐ掻こうな!!ってことですね。

僕は真面目健全マンだったので、結構曲げて掻いてました。。

 

・水を掻いて進むんじゃない!水を押して進むのだ!!

自分で書いててあれですが、よくわかんないですね。

何が言いたいのかというと、「水を掻いて水流を作って体が前に行くのではなく、水を持つ手を始点に考え体が前に行く」です!訳わかんねぇ!!

 

まぁ考え方の問題らしいです。体を中心に考えるか、手を中心に考えるか。

考え方以外何も変わらないんですが、考え方で速くなる人もいるのでバカにはできない。。

 

・キャッチは肩の上

当たり前なんですけどね。難しい。

僕はめっちゃ内側に入っちゃう泳ぎをしていてよく注意されちゃいました。

案外外だと思って掻いててもちょうど肩の上だったりするのでわからない。。

 

 

 

とまあ、こんな感じです。思ったより長くなっちゃったので、他の泳法は別記事としたいと思います。ありがとうございました。

PythonとOpenCVでやった画像の最頻値

どうも、こんにちはJohn(筋肉)です。

今回は「艦これの新艦娘ゲットシーンの星が邪魔だな~」と思って、除去するプログラム書いたら、案外行けた話をします。

PythonOpenCVについては省きます。(知ってるだろうし、説明できない。)

 

どんな感じに出来たか

初めてなので、3枚の画像で最頻値を取りました。

まず、入力した3枚をどうぞ。

f:id:julia-bardera-jb:20161231013942j:plain

f:id:julia-bardera-jb:20161231013953j:plain

f:id:julia-bardera-jb:20161231014003j:plain

 

 はい。可愛いですね。推しじゃないけど。

なんか切れちゃってるのはスクショミスったからです。目をつぶってくださいな。

 

そして出力結果がこちら。

f:id:julia-bardera-jb:20161231014158j:plain

 

 

3枚の最頻値なのでちょっと星が残ったりしてますが、いい感じですね。(僕はいい感じだと思ってる)

 

どんなクソコード書いたか

さあ、我がクソコード見せてしんぜよう。こちらだ!

 

import cv2

import numpy as np

def diff_judg(xi,yj,img01,img02):
  if img01[yj,xi,0]==img02[yj,xi,0]:
    if img01[yj,xi,1]==img02[yj,xi,1]:
      if img01[yj,xi,2]==img02[yj,xi,2]:
        return True
      else:
        return False
    else:
      return False
  else:
    return False

img1=cv2.imread("./aaa.jpg")
img2=cv2.imread("./bbb.jpg")
img3=cv2.imread("./ccc.jpg")
x=600
y=360
i=0
j=-1
ans=np.zeros((y,x,3),np.uint8)

while i<x:
  while j<y-1:
    j+=1
    if diff_judg(i,j,img1,img2):
      ans[j,i]=img1[j,i]
      continue
    elif diff_judg(i,j,img1,img3):
      ans[j,i]=img1[j,i]
      continue

              elif diff_judg(i,j,img2,img3):
                     ans[j,i]=img2[j,i]
                     continue
              else:
                     ans[j,i]=img1[j,i]
                     continue

        j=-1
        i+=1

cv2.imwrite("ans.jpg",ans)

 

「 ん?最頻値じゃなくね?」

そのとおりだけど、3枚なので最頻値にはなってる。ので許して。

 

 

とまぁ、こんな感じになります!はい!何書けばいいのかわかんない!!おうちかえる!!

 

改善点あったら言ってほしいです、Python使えないので、お手柔らかに。。

Emacsのフォント変えたい。。変えたくない?

どうもこんにちは、John(筋肉)です。

今回は「Emacsのフォント変えてぇ。。」と思ってやったらうまく行っちゃったので記事にしたいと思います。

結論

このサイト来る人は「どういう原理とかどうでもいいからこの眼の前の汚らしいフォントが消えればいいんだよっ!!」と思っていると思うので答えだけ言います。というか説明できない。

 

 

皆さんご存知、HOME直下の.emacs.dの中のinit.elEmacsの設定ファイル。

そいつにこう書き足してやりましょう。(.emacs.d/init.elがない人は作ろう。)

 

(custom-set-faces
'(default ((t (
:foundry "Meiryo UI" :family "Meiryo UI")))))

 

これで解決。フォントがMeiryo UIになりました。べっ別にこのフォントが好きなんじゃないんだからねっ!

 

Meiryo UIの部分を適当な好きなのに変えてくれればお好きなフォントになりますので、お好きなフォントで開発してください。

好きなフォントとか無いので、おすすめあったら紹介してほしいな。

 

ちなみに、僕はノーゲーム・ノーライフのイマニティ語とかにして遊んでました。

クリスマスにHatenaBlogデビューした。。

初めての記事

こんな内容のないブログを見てくださる皆さん、こんにちは。John(筋肉)といいます。名前は変わります。よろしくお願いします。

 

何について書きたいか

備忘録的な何かがもうそろそろ必要だなと思った次第です。

 

「じゃあ、メモ帳とかに書けばいいじゃん。コメントアウトでもいいじゃん。」ってなるんですが、めっちゃそういう記録するのが苦手なので「いっそのこと公開しいて緊張感持っていこう!」という感じにブログ開設しました、完璧なる思い付きです。

 

日頃の進捗をここにまとめて、僕が分からないときにわかりやすいように書いていたらいいな♪って思ってます。まぁ、駄文書きなので読んでわかるか知らんけど。。

 

今書く予定なのは、プログラミング、作曲、イラスト・デザイン、金属加工、CTF、不労所得。。。

無限に何にでも興味を持ちます。布教したらなんでも食いつきます。そしてコロコロ趣味が変わります。(何か面白いこと教えて)

 

と、まぁ書きたいのはこんなところです。

 

何故クリスマスに初めての記事なのか

 

ぼっちだからだよ💢💢💢!!

 

タイトルからもわかる通り、記事を書いてるときはクリスマスです。予定はないです。しいて言うなら初詣の準備を神社まで行って手伝ってました。はい。

 

これからは、艦これして、Pythonいじって、筋トレして、デザインの勉強的な何かをやり、無限にグダグダしていく予定です。つまり非リアのナカーマです。

悲しいね。

 

初めてで仕様が分からない上、駄文を並べるのもあれなので、初めての記事はこんなところにしたいと思います。ありがとうございました。

、、追記とかできるのかしらん?