カテゴリー
D-Studio プログラム

C言語:charからLPCWSTR

仕事中にはまったのでメモ程度に残しておく!

状況としては、VSのC++MFC環境で作られたDLL(SDK)を利用したプログラムを作成するにあたって、利用する関数の引数の型がLPCWSTRというもの。こちら側で作成した外側のプログラムで取得するのがchar型。変換が必要だが????

参考ページ

char dataBuff[] = alphabet0123カタカナひらがな漢字;
wchar_t pwsz[sizeof(dataBuff)*2];
MultiByteToWideChar(CP_ACP, 0, dataBuff, strlen(dataBuff), pwsz, sizeof
(pwsz));
LPCWSTR Data = pwsz;

これだけです!いろいろ調べてもなかなか答えにたどり着かず苦労しました!

マルチバイトとかユニコードとかMFCとか_Tマクロとか・・・

カテゴリー
D-Studio プログラム

PyQT・Plot表示

PythonでPyQtを使ったGUI開発。

Plot画面の表示について簡潔にまとめておきます。

class ScanGUI(QWidget):
~
    def initUI(self):

        # グラフ領域
        self.pw = PlotWidget(self)
        # グラフのデータ設定(初期値)
        self.vol_array = np.zeros(10)
        self.cnt_array = np.zeros(10)
        # pyqtgraphにPlot種類とデータを追加
        self.item = pyqtgraph.PlotCurveItem(x=self.cnt_array, y=self.vol_array)
        self.pw.addItem(self.item)
~

ここまではググったらいくらでも出てくるので簡単にグラフ表示はできると思います。今回はグラフをリアルタイムに更新したいのです!

self.pw.addItem(self.item)を繰り返すと?グラフが上書きされます。グチャグチャになります。

            # グラフ更新
            self.item.updateData(x=self.cnt_array, y=self.vol_array)

更新時はこれだけ。updateDataを使います。これでグラフは更新されます。

Plotの基本についてはこちらとか参照。

Pythonの記事も結構ありますので興味ある方はぜひ!

カテゴリー
プログラム

PythonでYouTube

PythonでYoutubeの検索結果データを取得する。

今回はYoutube APIを利用。

Google Cloud PlatformのライブラリからYouTube Data API v3を有効にしてIDを取得する必要あり

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YouTubeの解析 API利用

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError



#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # API情報
    DEVELOPER_KEY = '取得したYouTubeDataAPIのID'
    YOUTUBE_API_SERVICE_NAME = 'youtube'
    YOUTUBE_API_VERSION = 'v3'

    youtube = build(
        YOUTUBE_API_SERVICE_NAME,
        YOUTUBE_API_VERSION,
        developerKey=DEVELOPER_KEY
    )

    search_response = youtube.search().list(
        q='ドリブル',
        part='id,snippet',
        maxResults=50,
    ).execute()

    #print(search_response['items'])

    print('------------------------------------------------------------')
    for vdata in search_response['items']:
        #videoIDが無い場合は飛ばす
        try:
            videoid = vdata['id']['videoId']
            print('動画タイトル', vdata['snippet']['title'])
            print('投稿者名:', vdata['snippet']['channelTitle'])
            print('Channel ID:', vdata['snippet']['channelId'])
            print('URL:https://www.youtube.com/watch?v='+videoid)
            print('------------------------------------------------------------')
        except:
            print("")


実行結果

------------------------------------------------------------
動画タイトル 【完全保存版】2020年のドリブル・テクニック111ワザを全てお見せします!〜しょうちゃん編〜
投稿者名: REGATEドリブル塾
Channel ID: UC4Nrt3aTTnjVAW_ein2nTQQ
URL:https://www.youtube.com/watch?v=6UftkurRtEA
------------------------------------------------------------
動画タイトル 【超絶過ぎる…】サッカーベストドリブルテクニック集!2020/2021 #2
投稿者名: FM247 HD2
Channel ID: UCpgMYaiGuoCsowql_f9WDPw
URL:https://www.youtube.com/watch?v=WW6jFV-LK-Q
------------------------------------------------------------

動画タイトル 超絶ドリブル そこ抜く! えげつないファンタジスタ達のプレー集!► 2020  HD 1080p
投稿者名: FM247 HD2
Channel ID: UCpgMYaiGuoCsowql_f9WDPw
URL:https://www.youtube.com/watch?v=xn3PLOP_f_c
------------------------------------------------------------
動画タイトル ロナウジーニョが本気でドリブルするとこうなる
投稿者名: FM247 HD2
Channel ID: UCpgMYaiGuoCsowql_f9WDPw
URL:https://www.youtube.com/watch?v=jgH6HH45VT4
------------------------------------------------------------
以下50件分表示

カテゴリー
プログラム

YAHOO検索結果スクレイピング

YAHOO検索は10件ずつしか取れないし、連続でやってると取れなくなる?のでスリープで回避してます。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# Google検索結果は取得できるのか?

import re
import time
import webbrowser as wb
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 100ランク取得
    load_url = "https://www.google.co.jp/search?hl=ja&source=hp&q=ジョジョ+スタンド&ie=utf-8&oe=utf-8&num=101"

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    list = web_data.findAll(True, {'class': 'BNeawe vvjwJb AP7Wnd'})

    # ランキング表示
    cnt = 0
    for ls in list:
        a = str(ls).strip('<div class="BNeawe vvjwJb AP7Wnd">')
        result_title = a.strip('</')
        print(str(cnt) + ":" + result_title)
        cnt = cnt + 1

    # Yahooは10件単位でしか取れないので10回まわす
    print("■Yahoo ランキング■")
    cnt = 0
    for i in range(10):
        # 10ランク取得
        pagenum = i * 10 + 1
        load_url = "https://search.yahoo.co.jp/search?p=ジョジョ+スタンド&ei=utf-8&b=" + str(pagenum)

        # HTML取得
        html = requests.get(load_url)
        web_data = BeautifulSoup(html.content, "html.parser")
        list = web_data.findAll('a')

        pattern = "(.*)clear.gif(.*)"
        # ランキング表示
        for ls in list:
            if str(ls).find('clear.gif') != -1:
                d = re.search(pattern, str(ls))
                a = d.group(2)
                a = a.replace("<b>", "")
                a = a.replace("</b>", "")
                a = a.replace(""""""">", "")
                a = a.replace("</a", "")

                result_title = a.strip('|')
                print(str(cnt) + ":" + result_title)
                cnt = cnt + 1

        time.sleep(1)
カテゴリー
プログラム

Googleの検索結果スクレイピング

Googleの検索結果を取得して、内容を表示。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# Google検索結果は取得できるのか?

import webbrowser as wb
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 100ランク取得
    load_url = "https://www.google.co.jp/search?hl=ja&source=hp&q=携帯+格安&ie=utf-8&oe=utf-8&num=101"

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    list = web_data.findAll(True, {'class': 'BNeawe vvjwJb AP7Wnd'})

    # ランキング表示
    cnt = 0
    for ls in list:
        a = str(ls).strip('<div class="BNeawe vvjwJb AP7Wnd">')
        result_title = a.strip('</')
        print(str(cnt) + ":" + result_title)
        cnt = cnt + 1