Python関連のことを調べてみた2021年10月27日

Python関連のことを調べてみた2021年10月27日

Blogger自動投稿

GCP連携を使って自動投稿
————-

Blogger APIを使用することでプログラムからBloggerへ投稿できるようになります。
この作業には[GCPとBloggerの連携](https://rnk-jp.blogspot.com/p/gcpgoogle-cloud-platformblogger.html)の手続きが先に必要です。

### Pythonライブラリの追加
“`bash
$ pip install google-api-python-client
$ pip install google-auth-httplib2
$ pip install google-auth-oauthlib
$ pip install google-cloud-translate
“`
### Pythonプログラム

RSSのタイトルと内容をBloggerへ記事をポストするプログラムを作成します。

“`python:test.py
# coding: utf-8
import feedparser
import requests
import os

元記事を表示

GitHubを用いたファイル管理

###目次
***
・GitHub でファイルを管理する方法

###GitHubでファイルを管理する方法
***
大まかな流れは以下の通りです。

・GitHub にリモートリポジトリを作成
・hello フォルダ内にローカルリポジトリを作成
・hello ファイル内のファイルをインデックスに登録
・インデックスに登録されたファイルをコミット
・ローカルリポジトリのファイルをリモートリポジトリにアップロード

|gitコマンド|役割|
|:—|—:|
|git init|ローカルリポジトリの作成|
|git add | ステージング |
|git commit | コミット |
|git push |リモートリポジトリにアップロード|

## GitHubにリモートリポジトリを作成
まず[GitHub](https://github.com/)のトップページからリモートリポジトリを作成します。
「Create repository」をクリック

ファイル名を入力し、パブリックリポジトリを選択して、新規作成します。

パブリックリポジトリとは、全員が公開されるリポジトリです。非

元記事を表示

Youtubeでの投稿制限

YouTubeからロックの通知
—————

自動投稿を繰り返していたある日YouTubeコミュニティから投稿した動画をロックしたとの連絡が。

[![](https://blogger.googleusercontent.com/img/a/AVvXsEhKn4ED379NiQw9mYjA1Er67NtsTxuWgGxe9yfWpiONZwrGCvE0AQ-j3HcF2YReYo2lffo6AAlqA818_y1zkIpjoKg7n7pYHT8lDwZldqoxzthGI0JxL-uogotaWCo4EuEzhHtk8LQGrFrR7fOJAi5P5eM7SbrcWFctYqsDsrvVJwAiWEgtxZs7aYwV=w640-h301)](https://blogger.googleusercontent.com/img/a/AVvXsEhKn4ED379NiQw9mYjA1Er67NtsTxuWgGxe9yfWpiONZwrGCvE0AQ-j3HcF2YReYo2lffo6AAlqA818_y1zkIpjoKg7n7pYHT8lDwZldqoxzthG

元記事を表示

Youtubeへの自動投稿

YouTube Data API
—————-

YouTube Data APIを使って動画ファイルをアップロードします。

この作業には[GCPとBloggerの連携](https://rnk-jp.blogspot.com/p/gcpgoogle-cloud-platformblogger.html)の手続きが先に必要です。

### ライブラリの追加

“`bash
$ pip install google-api-python-client
$ pip install google-auth-httplib2
$ pip install google-auth-oauthlib
“`
### Pythonプログラム

test.pyに以下のコードを記述します。
公式のサンプルを一部変更して持ってきています。

“`python:test.py
MAX_RETRIES = 10
RETRIABLE_STATUS_CODES = [500, 502, 503, 504]

def resumable_upload(insert_request):

元記事を表示

動画作成

ffmpegを使った音声&映像ミキシング
——————–
ffmpegを使って音声ファイル(mp3)と映像ファイル(mp4)をミキシングします。
### ライブラリの追加
“`shell
$ sudo apt install ffmpeg
“`
### Pythonプログラム
test.pyに以下のコードを記述します。
subprocessを使ってffmpegをpythonから起動させます。
元となる映像データ(input.mp4)は著作権フリーのものから拾ってきてください。

※映像の長さと音声の長さのより短い方に合わせた動画が作成されます。
またHWエンコードの対応があれば、SWエンコーダー(libx264)ではなくHWエンコーダ―(h264_nvenc)を指定してください。

“`python:test.py
import subprocess
from subprocess import PIPE

def makeVideo():
cmd = ‘ffmpeg -y -i /tmp/input.mp4 -i /tmp/temp.mp3

元記事を表示

音声作成

Google Text To Speechを使用した音声作成
———————
記事本文をGoogleの読み上げ機能を使って、音声ファイル(mp3)を作成します。
この作業には[GCPとBloggerの連携](https://rnk-jp.blogspot.com/p/gcpgoogle-cloud-platformblogger.html)の手続きが先に必要です。
### Pythonライブラリの追加

“`bash
$ pip install google-api-python-client
$ pip install google-auth-httplib2
$ pip install google-auth-oauthlib
$ pip install google-cloud-translate
“`
### Pythonプログラム

test.pyに以下のコードを記述します。

GoogleTTSを使用して日本語テキストをSSMLに変換して音声読み上げをさせます。
‘\r\n’を600msのWaitにしているのでタイトルと本

元記事を表示

翻訳

Google翻訳を使った手順
————–

今回も現在使用している方法とは異なりますがGoogle翻訳を使用してテキスト翻訳します。
この作業には[GCPとBloggerの連携](https://rnk-jp.blogspot.com/p/gcpgoogle-cloud-platformblogger.html)の手続きが先に必要です。

### Pythonライブラリの追加

“`bash
$ pip install google-api-python-client
$ pip install google-auth-httplib2
$ pip install google-auth-oauthlib
$ pip install google-cloud-translate
“`

### Pythonプログラム

test.pyに以下のコードを記述します。
Google翻訳を使用して英語から日本語に変換します。

“`python:test.py
def getTrans(text):
trans = get_authenticated_se

元記事を表示

Selenium SelectでSelectタグが選べないときの対処法

#実現したいこと
webサイトのドロップダウンから特定の選択肢を選択する

#実現するための案
そのドロップダウンリストにselectタグがついていたので

“`python
from selenium.webdriver.support.select import Select

dropdown = driver.find_element_by_css_selector(
‘select.クラス名’)
select = Select(dropdown)
select.select_by_value(‘1’)
“`
といった感じでオプションタグを選択する

#困ったこと
selectタグがついているにも関わらず、エラーが発生する

“`python
selenium.common.exceptions.NoSuchElementException: Message: no such element:
Unable to locate element: {“method”:”css selector”,”selector”:”select.クラス

元記事を表示

FiftyOne を使って Open Images Dataset のデータを取得する

## はじめに

社内の勉強会で使用するため、久しぶりに Open Images Dataset を覗きました

https://storage.googleapis.com/openimages/web/index.html

昔見たときは V3 とか V4 だったのが、もう V6 になっている

光陰矢の如し、、、

感傷に浸りつつ、データを取ってこようとダウンロードのページに行くと

https://storage.googleapis.com/openimages/web/download.html

> Download and Visualize using FiftyOne

という項目が

昔はこんなのなかったぞ、、、

しかし、読んでみると、どうも FiftyOne なるものを使った方が早く楽にデータが使えそうです

というわけで、FiftyOne を使ってみました

https://voxel51.com/

データセットが簡単にダウンロードできるだけでなく、
ブラウザ上ですぐに確認できたり、他の形式への変換までできる優れものです

実行例は GitHub に載せて

元記事を表示

Starletteで作る Simple Web Server

Starlette は軽量な**ASGI** framework/toolkit です。それによって高速な**asyncio** servicesを構築することが可能になります。

[Starlette 公式サイト](https://www.starlette.io/)

【過去記事】
[Python Asyncio入門](https://qiita.com/sand/items/0e445a13d81d20ea33c3)
[Aiohttpで作るSimple Web Server – Qiita](https://qiita.com/sand/items/971c851598ff59c1c905)
[Starletteで作る Simple Web Server – QIita](https://qiita.com/sand/items/dd622ce4f9249399974c)

“`
pip install starlette
“`

Web Applicationはstarlette が分担しますが、ここでASGI serverもインストールします。uvicorn, da

元記事を表示

C# Python インストール確認 ライブラリ確認

C#からPythonのインストールとライブラリの導入確認をします。

これによってC#からPythonのアプリケーションを適切に起動したりできます。

今後これらを使いC#からPython機械学習アプリケーションを呼び出して、
連携をしていこうと考えているところです。

## 動作環境
Windows 10
Python 3.6.4 Anaconda, Inc.
(環境変数にpythonは追加済み)

## フォルダ構成
“`
AppDir
|_ python
|_ import_check.py (import確認したいライブラリを記載)
|_ app.exe (PythonチェックをするC#アプリケーション)
“`

## ソースコード

### Python (import確認用)
importできるか確認したいライブラリをまとめて記載

“`python:import_check.py
import pandas
import numpy
import opencv
# 他に適宜追加
“`

### C# (Pythonチェックアプリケーション)

元記事を表示

rospy.loginfo関数を使ってPrint

rospy.loginfoを使用するとプリントされる情報に現在時間がつき便利なときがあります.

1,2,3という3つの数値をloginfoで出力するサンプルは以下のようになります.

“`python:loginfo.py
import rospy

rospy.init_node(‘loginfo’)

r = rospy.Rate(10)
while not rospy.is_shutdown():

rospy.loginfo(“num: %s, %s, %s”,1, 2, 3)

r.sleep()
“`

実行結果は以下です.

“`bash:実行結果
[INFO] [1635289935.448486]: num: 1, 2, 3
[INFO] [1635289935.549028]: num: 1, 2, 3
[INFO] [1635289935.648756]: num: 1, 2, 3
[INFO] [1635289935.749015]: num: 1, 2, 3
[INFO] [1635289935.849047]: num: 1, 2, 3
.

元記事を表示

Pythonのdatetimeはawareとnaiveだよ(nativeじゃないよ)

# Python datetime
pythonの標準ライブラリdatetimneのdatetimeオブジェクトは時刻を扱う。
datetimeにはaware(タイムゾーン情報有)とnaive(タイムゾーン情報無)がある。

“`python
from datetime import datetime
from dateutil import tz

print(datetime.today()) # 2021-10-26 23:46:50.725275
print(datetime.today().tzinfo) # None つまりnaive

print(datetime(2021, 12, 31, 19, 55, 40, 0, tz.gettz(‘Asia/Tokyo’))) # 2021-12-31 19:55:40+09:00
print(datetime(2021, 12, 31, 19, 55, 40, 0, tz.gettz(‘Asia/Tokyo’)).tzinfo) # tzfile(‘Japan’) つまりaware
“`

WEBで色んな記事を見ているとn

元記事を表示

pythonでOSコマンドを実行する(subprocess.run利用)

PyhonでOSコマンドを実行する方法はバージョンによって
色々あるのですが、今回はsubprocess.runの利用方法をまとめてみます。
Pythonは3.8を前提としています。

## 基本
subprocess.runは引数のコマンドを同期処理で実行します。
コマンドをそのまま文字列として実行したい場合は、「shell=True」を指定します。
可読性は高くなりますが脆弱性にもつながるので利用には要注意です。

“`python
import subprocess

subprocess.run([‘ls’, ‘-al’])

command = ‘ls -al’
ret = subprocess.run(command, shell=True)
print(ret)
“`
上記の戻り値の出力は以下のような簡単なものになります。

“`bash
CompletedProcess(args=’ls -al’, returncode=0)
“`

## 戻り値の確認と標準出力、エラー出力のキャプチャ

「capture_output=True」のオプションを利用すると標準出

元記事を表示

PFRLでスーパーマリオ1-1をクリアするまで

以前は[StableBaselinesを使っていましたが](https://qiita.com/hrs1985/items/871ca5d037d73558bfca)、ニューラルネットワークの構造をいじりにくいことやアルゴリズムに手を加えにくいと思っていました。[ネットワークにAttentionを加えるだけでも一苦労](https://qiita.com/hrs1985/items/90a6361acfadb4efb6fa)でした。

そもそもTensorFlow向けであった点も使いづらかったので、PyTorch向けの深層強化学習ライブラリを探していたところ[PFRL](https://pfrl.readthedocs.io/en/latest/)というライブラリを見つけました。

Hello World代わりにスーパーマリオブラザーズ1-1をクリアしてみようと思います。

まずネットワークのを定義します。

“`python
class Network(nn.Module):
def __init__(self, hidden_dim, space_shape, n_act

元記事を表示

PythonからMecab (少しだけ使いやすく)

#はじめに
[Mecab](https://ja.wikipedia.org/wiki/MeCab)とは形態素解析エンジンで、要するに文章を解析するソフトである。(僕が言うまでもないか。) googleやyahooにも使われてるらしく、昨日は素晴らしいの一言である。そして今回は、mecabをpythonから使いやすくしたい。*python-mecab* というライブラリがあって調べると重要なもののようだが、素人にはよくわからない。使いやすくなってるようには見えないので一応書いてみる。

##[Mecabのホームページ](https://taku910.github.io/mecab/)
#コード

“`python:mecab.py
import subprocess as sp
import os
import sys
import random

if “nt” in sys.builtin_module_names:
ENCODING=”sjis”
TYPE_COMMAND=”type”
else:
ENCODING=”utf8″

元記事を表示

USBカメラでストリーミングしてみた。

#Windows+USBカメラでストリーミング

配達完了通知がくると置配された荷物が不安で仕事にならないため、ラズパイで監視することにした。
ついでにライブビューも見たかったので、Windows上で画像取得と表示を作ってみた。

環境

– Windows 10
– Python 3.8
– Opencv 4.0.1
– USBカメラはPC付属

##サーバ
TCPを利用してlocalhost ポート50000 で待ち受けます。

終了は**Ctr+Break**。

~~~ImgStreamService.py
# -*- coding: utf-8 -*-
import cv2
import socket
import ImgByteConvert

class GetImageServer():
def __init__(self, PORT=8080):
self.PORT = PORT
self.capture = cv2.VideoCapture()
self.ImageByteConverter = ImgByte

元記事を表示

Cythonで作ったプログラムを、PyinstallerかPy2exeでexe化するには

##概要
CythonスクリプトをPyinstallerやpy2exeでexe化する方法について説明します。
##Cythonとは
Pythonはインタプリタ言語ですので、「処理が遅い!」とイライラすることも少なくありません。
そんな問題を解決してくれるのがCythonです。
Cythonを用いるとPythonの処理が速くなります。
(処理速度を速くするには、PythonスクリプトをCython用スクリプトに書き直す必要があります。)
実際にこれを使うと、処理速度が2分の1になったこともありますが、
効果が出ない時も少なくありません。

詳細は公式サイトを確認してください。

Cython公式サイト https://cython.org
![スクリーンショット 2021-10-24 20.31.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2211115/87a37025-ed3d-fead-0493-625b42766dd5.png)

##Cythonスクリプトをexe化するには?
Cytho

元記事を表示

bookmeterのAPIをつくってみた。 #2 (簡単なユーザーデータの取得)

#はじめに
[前回](https://qiita.com/tetsuya111/items/eac5346e7c2d1b06b1d3)はデータを取得したので、次はユーザー名から「読みたい本」や「読んだ本」を取れるようにしたい。

#名前からユーザーIDの取得
「読みたい本」や「読んだ本」の URL は、
読みたい本:`https://bookmeter.com/users//books/wish`
読んだ本 : `https://bookmeter.com/users//books/read`

のようになっている。(\=ユーザーID)

ユーザーIDはユーザー名とは別のものなので、まずはユーザー名からユーザーIDを取得する。

##流れ
– 名前で検索してユーザーの一覧を取得。
– そこから名前が完全一致のデータを取得。(同名別人の可能性はあるが、名前の付け方が悪いせいにしておく。笑)
– IDを取得。

##ユーザーの検索

ユーザーを検索するには
[https://bookmeter.com/users/search](ht

元記事を表示

【初心者】matplotlibの日本語表示対応【Google Colab】

## matplotlibの日本語文字化け
matplotlibは、標準で日本語に対応しておらず、日本語を使用すると文字化けが発生し、正しく表示されません。

例えばGoogle Colabで実行すると、□□と表示されてしまいます。

“`python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.xlabel(‘縦軸’)
plt.ylabel(‘横軸’)
plt.show()
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252564/11ee400f-edee-9b7d-80ba-af63954443a5.png)

## japanize-matplotlibによる日本語表示対応
[japanize-matplotlib](https://github.com/uehara1414/japanize-matplotlib)を利用することで、日本語対応できます。pipコマンドでインストールできるため

元記事を表示

OTHERカテゴリの最新記事