Python関連のことを調べてみた2020年11月09日

Python関連のことを調べてみた2020年11月09日

TMDbのAPIの映画情報をPythonで取得してみた

# TMDb、TMDbのAPIについて
TMDb[^1] (The Movie Database)は映画やテレビ番組のデータをコミュニティベースで集めているデータベースだそうです。このサービスにはAPIがあり[^2]、様々な情報をプログラムを介して取得することができます。APIの利用のためには、アカウントの登録後、利用申請が必要です。(ちなみに、このAPIは現時点でAPI rate limitingが無いようです![^3])

# Pythonで実装
– python 3.6.5

APIを叩くPythonのクラスを定義します。今回はmovieの情報に絞って試してみます。tokenはAPI利用申請後に生成される、APIリードアクセストークンと呼ばれるものを使用します。

“`python
import requests
import json
from pprint import pprint

class TMDB:
def __init__(self, token):
self.token = token
self.headers_ = {

元記事を表示

Pythonでタワレコのサイトから作詞作曲編曲情報を引っ張ってくる

#はじめに
今回は簡単なスクレイピングをやっていこうと思います。
サブスク全盛期にローカルで音源を集めててなおかつ作詞作曲編曲までタグ付けしてる物好きはほとんどいないと思いますが、もしいたらこれで簡単にタグ付けができるので紹介していきたいと思います。

#やってみよう
まずタワレコのサイトの構造です。肝心な情報が詰まってるxpathは調べて見るとつぎのような感じでした。
`//*[@id=”RelationArtist_0_1_sub”]/div/div[3]/div[2]/a/text()`
これでDisc1の1曲目の作詞情報を表します。前の数字からDiscNumber,TracNumber,作詞or作曲or編曲ですね。最後の数字は弄らないでください。
では実際にコードを書いてみましょう。使用するライブラリはlxml(スクレイピング)とurllib(ネット周り)とmutagen(楽曲タグ関連)です。

“`python:tagget.py
om mutagen.flac import FLAC
from urllib import request
import requests
f

元記事を表示

AWS LambdaでのLine Bot作成手順

# 概要
AWS LambdaでのLineBot作成手順をまとめました。line-bot-sdk-pythonを使わずに1から書いてみました。
ほぼほぼ「参考」の記事を使っています。
## webhokとは
– [Webhookとは?](https://qiita.com/soarflat/items/ed970f6dc59b2ab76169)
– [Webhookって何?を子どもでもわかるように描いてみた](https://kintone-blog.cybozu.co.jp/developer/000283.html#:~:text=Webhook%E3%81%A8%E3%81%AF%EF%BC%88%E7%95%A5%EF%BC%89%E3%80%81,%E3%81%A7%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%A7%E3%81%99%E3%80%82)

# 開発の手順紹介
## 技術

– Python
– AWS Lambda

## 流れ
1. Lmabda関数の作成
2. L

元記事を表示

[Django] クラス継承によるアクセス制限を実装してみた。

##前書き
メモがてら初心者が書いているので、間違いはご容赦ください。
チャットアプリを作っているのですが、チャットルームを部屋の参加者以外覗けないようにしたくなりました。
クラスビューのメソッドのオーバーライドで実装しようとして、かなり時間を費やしましたが、
めちゃくちゃ簡単な方法がありましたのでご紹介します。

##本題

※中間テーブルで参加者を管理しています。(該当のレコードがあれば参加済)

“`python:models.py

class Room(models.Model):
(略)

class User(AbstractBaseUser, PermissionsMixin):
(略)

class JoinRoom(models.Model):#中間テーブル
room = models.ForeignKey(Room,on_delete=models.CASCADE)
user = models.ForeignKey(User,on_delete=models.PROTECT)
“`

本当はここに書かないほうがいいの

元記事を表示

Numpy 便利なメソッド一覧

# 配列の累計和を算出する
“`python
import numpy as np

y = [0, 1, 2, 3, 4, 5]

np.cumsum(y) # 累計和がndarrayで出力される
# [ 0 1 3 6 10 15]

np.cumsum(y).tolist() # リストにもできる
# [0, 1, 3, 6, 10, 15]
“`

随時更新中

元記事を表示

OpenCVとRaspberry Piでマスクの装着状況を検知する

## 概要
* 以前、アート作品の鑑賞状況をOpenCVを使って可視化することを行った
https://qiita.com/cami_oshimo/items/ce33491c07f9625ed121

* これを応用して、目ではなく口の検知に変更すれば、マスクを装着の判断に使えるのではと考えた。
* まずは単純に口が露出しているかを判定して、マスクをしているかの判断を行ってみる。

![IMG_0076.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/7703012d-e444-d302-f19d-c93a64169ca1.jpeg)

![IMG_0077.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/68876317-9573-6db2-e76e-e60723547932.jpeg)

## 用意するもの
* Raspberry Pi3 Model B (4でもおそらく大丈夫)
* R

元記事を表示

Seleniumを使って(半)自動的に出退勤する

#はじめに
会社で利用している打刻システムが少し煩雑だったので自動で打刻するシステムをseleniumを利用して実装した。seleniumの使い方含めて解説していきたい。

社内でもブラウザ操作自動化がホットな話題だったのでその技術のキャッチアップにもなると考え、また一旦こういう技術を覚えてしまえば自動化脳になれるとも考えた。
要は具体的な方法を一度知ってしまえば、あれもこれも自動化してしまえという思考回路が生まれると考えた。技術の世界では本当にこれが大事だと思う。。。

#打刻システム
1 . ブラウザを立ち上げ、office365にログイン
2 . ログイン情報でOAuth連携?して打刻システムにログイン
3 . 打刻システムで数クリックして打刻完了

自分はしょっちゅうブラウザのcookieを消すため、2のログイン時にメールアドレスやパスワードを都度入れるのがかなり手間なので**自動的に打刻ボタンを押したい**

また、昨今のコロナ状況により、**リモートワークの開始・終了連絡のメール送信も自動化したい。**メールはoutlookだが、web版もあるのでseleniumで操作でき

元記事を表示

boto3のS3 NoSuchKeyエラーをキャッチする方法

Pythonのboto3でS3オブジェクト取得時に、オブジェクトが存在しなかった場合 `S3.Client.exceptions.NoSuchKey` というエラーが発生するとboto3のドキュメントには書かれています。しかしこのエラーをPythonで具体的にどうキャッチすればよいのかわからなかったので、動かしてみて調べました。

`get_object` と `head_object` でなぜか挙動が違ってました。

# get_object

次の2パターンのコードでエラーをキャッチできました。

“`python
import boto3

s3_bucket = “…”
s3_key = “…”

session = boto3.session.Session()
s3_client = session.client(“s3”)

try:
s3_client.get_object(
Bucket = s3_bucket,
Key = s3_key,
)
except s3_client.exceptions.NoSu

元記事を表示

Discord.pyで湯婆婆を作る

# はじめに

@Nemesis さんの [Javaで湯婆婆を実装してみる](https://qiita.com/Nemesis/items/c7192a7c510788d2cba2) と、@nekozuki_dev さんの [Discord Botで湯婆婆を実装してみる](https://qiita.com/nekozuki_dev/items/485d47a459a63f59400f)のdiscord.py版です。
discord.py初見の方は [Pythonで実用Discord Bot(discordpy解説)](https://qiita.com/1ntegrale9/items/9d570ef8175cf178468f) みたいなやつを読んで下さい。(いないと思うけど)
初記事なので見にくいところがあったらごめんなさい。
**ライトテーマ注意!**

# 置き換え
#### 名前の入力
“`java
Scanner keiyakusho = new Scanner(System.in);
String name = keiyakusho.nextLine();
“`

元記事を表示

Django テンプレート 小技集

# objectに配列番号でアクセスする
“`html:template.html
{{ objects.0.name }}
“`

# 表に行番号をつける
“`html:template.html

{% for object in object_list %}

# Name

Pythonをとりあえず何とかする(1)

# 本日の目的
– 開いたExcelに書かれているデータを取得して別なExcelに保存する。

## フォルダ構成
root/
 ├ code/
 │ └ 実行ソース達
 └ data/
   └ 開きたいExcel

## ポイント的なアレ
– Excelを操作する

## import
– openpyxl

### とりあえずやってみる

– Excel操作
– エクセル開く
– 既存ファイル例:wb = openpyxl.load_workbook(targetExcel, data_only=True)
– 新規ファイル例:wb2 = openpyxl.Workbook()
– targetExcelは対象エクセル(パス付き)
– Excel内の計算結果がほしいのでdata_only = Trueを記載。
– 保存
– 例:wb2.save(newFileName)
– newFileNameはファイル名
– 既存ファ

Python+OpenCVで仮想カメラを自作しオリジナルエフェクトをかける

仮想カメラとは,Webカメラのような画像入力デバイスとしてPCに認識させることのできるソフトウェアの事です.
これを利用することにより,最近よく用いられるZoom,WebEx,Meetといったビデオ会議システムに(フロントカメラの入力ではなく)好きな映像を流すことができます.

一般的に用いられる仮想カメラには[OBS Studio](https://obsproject.com/ja)があり,私もよく利用しています(最近プラグインなしの標準で仮想カメラが使えるようになったらしいですね).しかしこれは機能が非常に充実している分,とんでもなく重いためあまり日常的に利用したくはありません.(RTX2028 SUPERでGPU使用率8割くらいになるんですが私だけですかね….?)

そこで,自分でも仮想カメラを作成し,エフェクトをかけられるのではないかと思い,いろいろと試行錯誤をしてみました.まだ原因不明のバグがありますが,一応は動くようになったので紹介したいと思います.

# 前提
このシステムは`Windows`を対象にしています.
グラフィックの低レイヤー

AtCoderBeginnerContest182復習&まとめ

# AtCoder ABC182
2020-11-08(日)に行われたAtCoderBeginnerContest182の問題をA問題から順に考察も踏まえてまとめたものとなります.
問題は引用して記載していますが,詳しくはコンテストページの方で確認してください.
[コンテストページはこちら](https://atcoder.jp/contests/abc182)
[公式解説](https://atcoder.jp/contests/abc182/editorial)

## A問題 twiblr
> 問題文
> あなたは twiblr という SNS をしています。
> twiblr では、フォロー数が$2×($フォロワー数$)+100$を超えない範囲でフォロー数を増やすことができます。
> あなたの現在のフォロワー数は$A$で、フォロー数は$B$です。
> フォロー数はあといくつ増やせますか?

“`python:abc182a.py
a, b = map(int, input().split())
print(2*a+100-b)
“`

## B問題 Almost GCD
>

Sphero BOLTのLEDマトリクスをRaspberry Pi 3B+にインストールしたPySpheroで制御する / How to control Sphero BOLT’s LED matrix with PySphero installed on Raspberry Pi 3B+

AtCoder Beginner Contest 182 復習

#今回の成績

![スクリーンショット 2020-11-08 23.47.47 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/98d7f747-ba16-b44b-08a5-20e65f85eb9a.png)

#今回の感想

今回は10分程度遅れての参加でした。ギリギリレート上がるだろと思って提出したら本当にギリギリでした。前回も今回も得意回なのに遅れてしか参加できなかったので、来週のコンテストに雪辱を期します。

Fはもう少しで解けそうだったのですが、Eが解き終わった後に夕飯の魚の骨を取りながら考えていたので、流石に無理でした。悔しいです。

あと、今回はインデント幅がいつもの4ではなく2です。諸事情あって環境構築が間に合いませんでした。気が向いたら幅を4に変えます。

#[A問題](https://atcoder.jp/contests/abc182/tasks/abc182_a)

言われた通りに出力します。引き算をするだけです。

“`python:A.py
a,b=

Django公式HP通り手順を進めているのにvenvを使用した仮想環境が作れなかった時の対処方法

#使用OS
Windows10

#概要
djangoの公式HPを参考に仮想環境の構築を行ったがどうにもうまくいかず、なんとか対処したのでその方法を書きます。

[Django公式HP](https://tutorial.djangogirls.org/ja/django_installation/)

#詰まったとこ
公式HPの通りホームディレクトリに新しいディレクトリdjangogirlsを作成後、コマンドプロンプトを用いて以下のコマンドを入力。
しかし仮想環境であるenvが作成されない。

“`
C:\Users\Name\djangogirls> python -m venv env
C:\Users\Name\djangogirls>
“`

#試行錯誤が始まる・・・
python3.7以降はpythonをインストールした時venvも自動的にインストールされているとどこかの記事にあったのにできなかったので念のため自分のインストールしたバージョンを確認。
以下のコマンドを打ちこむ

“`
C:\Users\Name\djangogirls>python3 -V
C:\U

【Selenium】chromedriverの相対パスを指定するには?

##1. はまったこと

Seleniumのchromedriverを、pythonスクリプトファイルと同じディレクトリに配置していた。
chromedriverは、スクリプトファイルから見てカレントディレクトリにあるので、以下で動いていた。

“`python:
driver = webdriver.Chrome()
“`

ところが、ある日、Mac OSをアップデートしたところ、chromedriverが見つからない(パスを通せ)とエラーが吐かれた。

##2. 解決策
対処作として、以下に修正したところ、無事に動いた。

“`python:
driver = webdriver.Chrome(executable_path=’./chromedriver’)
“`

プリザンターのAPIを使ってみる(python/FastAPI)

#概要
https://qiita.com/donraku/items/147fbea348657a4ffbf1
↑の内容をベースにして、今度はpythonを使ってプリザンターの「API機能」を使ってみることにしました。
pythonを使うにあたってフレームワークを採用してみました。

##前提条件
* プリザンター(https://pleasanter.net/fs/publishes/420234/edit)
* API
* python
* フレームワーク
* FastAPI(https://fastapi.tiangolo.com/ja/)

これらの詳細は省略。

#結論
pythonを使ってプリザンターにデータ登録ができた。(APIで)
フレームワークのFastAPIはなかなか使えることがわかった。

#詳細

##pythonのフレームワークを選定
今後の展開を考えて、フレームワークを利用することに。
ざっと調べてFastAPIが良さそうなので採用。
インストール作業などについては、省略。

情報はこちら。
https://fastapi.tiangolo.com/ja

AtCoder Beginner Contest 182 参戦記

# AtCoder Beginner Contest 182 参戦記

## [ABC182A – twiblr](https://atcoder.jp/contests/abc182/tasks/abc182_a)

1分で突破. 書くだけ.

“`python
A, B = map(int, input().split())

print(2 * A + 100 – B)
“`

## [ABC182B – Almost GCD](https://atcoder.jp/contests/abc182/tasks/abc182_b)

4分で突破. 少し悩んだが全部試せばいいことに気づいた.

“`python
N, *A = map(int, open(0).read().split())

result = 0
for i in range(2, 1000):
t = 0
for a in A:
if a % i == 0:
t += 1
result = max(result, t)
print(result

購入済みUdemy講座 (2020/11/08時点)

独学の教材として、先月頃からUdemyを使用し始めました。
自分が購入したものを以下記載していきたいと思います。
(セールでとりあえず買っておいた、という未着手のものが多々あります)

#そもそもUdemyとは
[Udemyトップページ](https://www.udemy.com/)
[Udemyの仕組みに関するよくある質問](https://support.udemy.com/hc/ja/articles/229232187-Udemy%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E8%B3%AA%E5%95%8F)

上記ページをご覧いただくとお分かりになると思いますが、動画配信のオンライン学習サービスです。
一度購入しておくと、その後期間無制限で何度も見ることができます。
“2万円”などの高額な講座もあるのですが、毎月と言ってよいほど頻繁にセールが開催され、1500円で購入できたりするので、そのタイミングでま