0

私が解決できないこの問題について、誰かが私を少し助けてくれるかどうか疑問に思っていました。私は Pafy を使用して、曲名が書かれたテキスト ファイルから Youtube を検索し、数分ごとに新しい曲を取得しています。Watchdog を使用してファイルの変更を監視しています。最初にスクリプトを実行すると、watchdog はファイルの変更をキャッチし、pafy および opencv スクリプトを実行しますが、次の変更が発生すると同じことを行いません。

#watchdog file change monitoring
class MyHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print ("Received modified event - %s." % event.src_path)
        cv2.destroyAllWindows()

if __name__ == "__main__":
    event_handler = MyHandler()
    observer = Observer()
    observer.schedule(event_handler, path='//PLAYING', recursive=False)
    observer.start()
    try:
        while True:
            #read PLAYING.txt
            PLAYING = open('//PLAYING.txt').readline()
            PLAYING = PLAYING[7:]
            print (PLAYING)
            #search youtube based on NowOnAir.txt
            query_string = urllib.parse.urlencode({"search_query" : PLAYING})
            html_content = urllib.request.urlopen("http://www.youtube.com/results?" + query_string)
            search_results = re.findall(r'href=\"\/watch\?v=(.{11})', html_content.read().decode())
            link = ('http://www.youtube.com/watch?v=' + search_results[0])
            videoPafy = pafy.new(link)
            best = videoPafy.getbestvideo()
            videompv = best.url

            #opencv youtube video output
            video = cv2.VideoCapture(videompv)

            while(video.isOpened()):
                ret, frame = video.read()
                resize = cv2.resize(frame, (1680, 1050))
                gray = cv2.cvtColor(resize, cv2.COLOR_BGR2GRAY)
                result = cv2.addWeighted(image, 0.2, resize, 0.8, 0)
                cv2.namedWindow('frame', 0)
                cv2.resizeWindow('frame', 1680, 1050)
                cv2.imshow('frame', result)
                if cv2.waitKey(1) & 0xFF == ord('q'):
                    break

            time.sleep(1)

    except KeyboardInterrupt:
        observer.stop()
    observer.join()

だから、私がやりたいのは、ファイルが変更されたときに、openCV でウィンドウを閉じて、新しい youtube クエリ結果で新しいウィンドウを開くことです。

どんな提案でも大歓迎です、事前に感謝します。

4

1 に答える 1