めうの雑記

備忘録

pythonでCDタイトルから曲名を取得する

ORICON NEWS|最新情報を発信する総合トレンドメディアスクレイピングしてCDの情報を取得する。

コード

# -*- coding: utf-8 -*-
#曲名を取得

from natsort import natsorted
import os 
from bs4 import BeautifulSoup
import urllib.request as req

list = []

title = input("title>>")
    
#フォルダ名を取得
dirname = os.path.basename(パス + title)
#指定したフォルダの中にあるファイル名をリストで取得
dirfile = os.listdir(パス + title)
#ファイルをソート
dirfile = sorted(dirfile)

cdtitle = dirname.replace(" ", "+")
res = req.urlopen("https://www.oricon.co.jp/search/result.php?types=cd&search_string=" + cdtitle)
soup = BeautifulSoup(res, "html.parser")
text = soup.find_all("a")
for string in text:
    if dirname in string.text:
        res = req.urlopen("https://www.oricon.co.jp" + string.attrs['href'])
        soup = BeautifulSoup(res, "html.parser")
        #曲名のリスト
        text = soup.find_all("div", class_="music-title") 
        if (len(dirfile)) == len(text):
            for string in text:
                list.append(string.text)
            break

i = 0
for name in dirfile:
    #ファイル名を書き換える
    os.rename(パス" + title + "/" + name, パス + title + "/" + list[i])
    i = i + 1

CDのタイトルは「I beg you」を入力する。

実行前

f:id:umesann:20190113205538p:plain:w400

実行後

f:id:umesann:20190113205545p:plain:w400

pythonでNAVITIMEの電車混雑リポートから混み具合を取得する

beautifulsoupを用いたスクレイピングをしてみた。

#-*- coding: utf-8 -*-
#混雑状況

from bs4 import BeautifulSoup
import urllib.request as req
import re

url_list = ["https://www.navitime.co.jp/train/00000132/%EF%BC%AA%EF%BC%B2%E4%BA%AC%E8%91%89%E7%B7%9A_%EF%BC%AA%EF%BC%B2%E6%AD%A6%E8%94%B5%E9%87%8E%E7%B7%9A?nodeId=00007548",
"https://www.navitime.co.jp/train/00000183/%EF%BC%AA%EF%BC%B2%E6%9D%B1%E6%B5%B7%E9%81%93%E6%9C%AC%E7%B7%9A%28%E6%9D%B1%E4%BA%AC-%E7%86%B1%E6%B5%B7%29?nodeId=00006668",
"https://www.navitime.co.jp/train/00000123/%E6%A8%AA%E9%A0%88%E8%B3%80%E7%B7%9A?nodeId=00007965",
"https://www.navitime.co.jp/train/00000168/%E7%B7%8F%E6%AD%A6%E7%B7%9A%E5%BF%AB%E9%80%9F/?nodeId=00000491"
]

list = ["京葉線&武蔵野線","東海道本線","横須賀線","総武快速線"]

print("ユーザーからの投稿")

i = 0
for url in url_list:
    res = req.urlopen(url)

    soup = BeautifulSoup(res, "html.parser")
    html = soup.find_all("div")
    for h in html:
        if h.string == "※混雑リポートを最大3件まで新着順で表示しております。":
            print(list[i])
            print(" ")
            i = i + 1
            break
        else:
            h_string = str(h.string)
            byte_h = h_string.encode() #文字列=>byte
            if len(byte_h) > 4: #Noneを削除
                print(h.string)

f:id:umesann:20190105193940p:plain

GASでぐるなびAPIを叩く

Google Apps scriptでぐるなびAPIの店舗検索機能を使ってみた。

var area_res = UrlFetchApp.fetch("https://api.gnavi.co.jp/master/PrefSearchAPI/v3/?keyid=アクセスキー").getContentText();
var area_json = JSON.parse(area_res); //json -> 配列

var text = "神奈川県" //地域
var search_text = "カレーうどん" //フリーワード
var pref_code = 0; //都道府県を識別するコード?

function GetPrefCode() {
  for (var i = 0 in area_json["pref"]) {
    if (area_json["pref"][i].pref_name.indexOf(text) != -1) {
      pref_code = area_json["pref"][i].pref_code; //都道府県コードを取得
      break;
    }
    i = i + 1;
  }
}

function search() {
  GetPrefCode()
  var shop_res = UrlFetchApp.fetch("https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=アクセスキー&pref="+pref_code+"&freeword="+search_text).getContentText();
  var shop_json = JSON.parse(shop_res);
  Logger.log(shop_json)
}

f:id:umesann:20181225210904p:plain:w450

地域とフリーワード(料理の種類など)は別にしたほうが良さそう。

GoogleHomeでスプレッドシートを操作する + GASの使い方

GoogleHomeの音声入力でGoogleスプレッドシートに記録する。

 

iftttの設定

f:id:umesann:20181026205910p:plain

f:id:umesann:20181026205907p:plain

1枚目の$の部分と2枚目のTextFieldの部分には入力した音声、CreatedAtは入力した時間が入る。

設定が完了すると、googledrive内にスプレッドシートが作成される。

 

GAS(Google Apps Script)を使う際にはスプレッドシートの編集画面でツール → スクリプトエディタを選択する。

f:id:umesann:20181026210825p:plain

f:id:umesann:20181026210553p:plain

実行時に「このアプリは確認されていません」というエラーが出た場合には、下にある「詳細を表示」を押すことで解決できる。

 

参考 

https://qiita.com/h-takauma/items/4ecc3421f2995b207284

 

pythonで形態素解析

janomeを用いて形態素解析を試してみた。

udemy.benesse.co.jp

 

janomeのインストール

$ sudo pip install janome

 

以下の文章が記述されたテキストファイルを読み込み、形態素解析にかける。

<はてなの最新情報を2001年からお届けしているメールマガジン
週刊はてな」のバックナンバーを、「週刊はてなブログ」に掲載します。
この一週間の「はてな」と「はてなブログ」では、こんなことがありました!>

 

f:id:umesann:20180627140911p:plain

今のところ指定できる品詞は名詞と動詞のみ。 

print(token)でそれぞれの単語の読み方や活用形を表示できる。

 

ひょっとするとリスト操作はいらないのかも。 

jupyterのインストール

anacondaと同時にインストールすることも可能(むしろ推奨されている)が、今回はjupyterのみを導入する。

 

pythonがインストールされている状態で

$ sudo pip install jupyter 

 

端末から

$ jupyter notebook 

で起動。

 

f:id:umesann:20180620143605p:plain

new→pythonからnotebookを開く。

 

f:id:umesann:20180620143555p:plain

プログラムを実行する際には、shiftとenterを同時に押す。

random関数

random関数を用いて、簡単なパスワード作成のプログラムを作ってみた。

f:id:umesann:20180619121736p:plainf:id:umesann:20180619121653p:plain

 

4桁以上の桁数を指定すると、英数字混ざったパスワードとメモのテキストファイルを作る。

書き込みに関してはwを指定すると上書き、aを指定すると追記される。

 

random.pyなど、既に同じ名前のモジュールが存在する場合は実行できないらしい。

 

[追記]

6桁以上に変更。

(ファイル単位での)作成したパスワードの確認と消去の機能を追加。