アプリ(YouTubeWin)

Top

ウインドウでユーチューブ動画が見れるアプリ


本ページのYouTubeWinはブロックされているようです!

すいませんが、アプリは使えません! (こちらのソースは、wx.html2.WebView.Newを使用しています) 参考ソース
import wx 
import wx.html2 

class MyBrowser(wx.Dialog): 
  def __init__(self, *args, **kwds): 
    wx.Dialog.__init__(self, *args, **kwds) 
    sizer = wx.BoxSizer(wx.VERTICAL) 
    self.browser = wx.html2.WebView.New(self) 
    sizer.Add(self.browser, 1, wx.EXPAND, 10) 
    self.SetSizer(sizer) 
    self.SetSize((700, 700)) 

if __name__ == '__main__': 
  app = wx.App() 
  dialog = MyBrowser(None, -1) 

  # 動作する
  # //dialog.browser.LoadURL("https://www.google.com") 
  # 動作しない
  dialog.browser.LoadURL("https://www.youtube.com") 

  dialog.Show() 
  app.MainLoop() 
・いくつでも、動画ウインドウが開ける ・サイズ、配置は自由 ・最小化、閉じるで動画も自由に! ・動画の登録が可能、登録動画一覧は、起動時に表示 ・[ Shift + Esc ]でユーチューブのトップ画面が表示されます ・Escで動画一覧 ・動画登録は、[Alt + ファンクションキー]

ダウンロード(YouWin.zip)

インストールのやり方 「ダウンロード(YouWin.zip)」クリックしてダウンロードします ダウンロードした圧縮ファイルを解凍する YouWin.exeを起動してみます 発行元が未確認の為、実行しないが表示されますので 詳細をクリックしてから「実行」をクリックする (心配な方は、ソースをコピペして動かしてみて下さい) YouWin.exeをタスクバーに登録(マウスの右クリック、メニューより選択する)
仕事しながら動画を見る 動画のサイズ、配置は自由 見たくない動画は、最小化 アプリ起動時(登録した動画一覧が表示される) ウインドウごとに音量を調整

プログラムソース(YouWin.py)

import wx 
import wx.html2 
import keyboard
import mouse
import time
import os,sys

path = os.getcwd()
MY_BOOK = path + "/mybook."

actWinSW    = True
tBarSW      = True
mybook      = {}
mybookTtl   = {}
keyList = [ "f1","f2","f3","f4","f5","f6","f7","f8","f9","f10" ]



def dbg( s ):
    return
    
    home_path = os.getenv('HOMEPATH')
    fp=open( home_path + "/dbg.txt" , "a")
    fp.write( s+ "\n" )
    fp.close()


# //sys.exit()

headStr="""
 <h2>youtube登録リスト</h2>
<hr><pre>
<h3>
[esc]は、この画面を表示します
[esc+shift]は、<a href="https://www.youtube.com">youtube</a>へ
</h3></pre>
<hr>
"""
helpstr="""
<hr>
<pre>
画面表示は、<b>ファンクションを押すかリンク先</b>をクリックして下さい!

登録は、<b>f1 + alt</b>など
altキーを押しながらファンクションキーを押します。
登録されると、youtue登録リスト(この画面)が表示されます。


マウスポインターをウインドウ内に移動すると、
タイトルバーが表示されて<b>ウインドウの移動、リサイズ、最小化、終了</b>ができます。

ウインドウの外側ではタイトルバーが消えますので、
<b>youtube画面で全画面</b>にしておけば<b>ウインドウ全体</b>で見ることができます。


タイトルが無い所は未登録で、登録済みのファンクションは上書きされます。
</pre>
"""

st = os.path.exists( MY_BOOK + "txt" )
if not st:
    fp=open( MY_BOOK + "txt" , "w")
    fp.close()
    dbg("nasi"+ MY_BOOK + "txt" );
else:
    dbg("ari"+ MY_BOOK + "txt" );

st = os.path.exists( MY_BOOK + "html" )
if not st:
    fp=open( MY_BOOK + "html" , "w")
  
    s="""
<pre>
[f01]
[f02]
[f03]
[f04]
[f05]
[f06]
[f07]
[f08]
[f09]
[f10]
</pre>
    """
    fp.write( headStr )
    fp.write( s )
    fp.write( helpStr )
    fp.close()
    dbg("nasi"+ MY_BOOK + "html" );
else:
    dbg("ari"+ MY_BOOK + "html" );
    
    
# //class MyBrowser(wx.Dialog): 
class MyBrowser(wx.Frame): 
    
    def __init__(self, *args, **kwds): 
        wx.Frame.__init__(self, *args, **kwds) 
            # //style=(
               # //wx.DEFAULT_FRAME_STYLE|  wx.RESIZE_BORDER | wx.CLOSE_BOX | wx.CAPTION | wx.ICONIZE | wx.MAXIMIZE | wx.STAY_ON_TOP ))
                # //wx.RESIZE_BORDER | wx.FRAME_NO_TASKBAR  ))

        self.browser = wx.html2.WebView.New(self) 
        
        sizer = wx.BoxSizer(wx.VERTICAL) 
        sizer.Add(self.browser, 1, wx.EXPAND, 10) 
        self.SetSizer(sizer) 
        self.SetSize((900, 500)) 



# //-------------------------------------------------------
# //   
# //-------------------------------------------------------
def readFile():
    
    fp =open( MY_BOOK + "txt" )

    data = fp.read()
    fp.close()
    
    dataList = data.split("\n")
    
    for line in dataList:
        if line == "":
            break
            
        s = line.split(":")
        #print( "line=", line  )
        #print( "s=", s  )
        ky = s[0]
        bdy= s[1]
        ttl= s[2]
        mybook[ ky ]    = bdy
        mybookTtl[ ky ] = ttl

    #print( "mybook=", mybook)
    
def wrtFile():

    global mybook
            
    fp =open(   MY_BOOK + "txt",    "w" )
    fp2 =open( MY_BOOK + "html",    "w" )
    
    
    fp2.write( headStr )
    
    
    for i in range(1, 10+1):
        #print(i)
        
        key = "f%d" %i
        if key in mybook:
        
            s = "%s:%s:%s\n" %( key, mybook[key], mybookTtl[key]  )
            #print( "s=",s )
            fp.write(s)

            s2 = "[f%02d] <a href='https://%s'>%s</a><br>\n" %( i, mybook[key], mybookTtl[key]  )
            #print( "s2=",s2 )
            fp2.write(s2)
        else:
            s2 = "[f%02d] <a href='https://%s'>%s</a><br>\n" %( i, "", ""  )
            #print( "s2=",s2 )
            fp2.write(s2)

    fp2.write(helpStr)
        
    fp.close()
    fp2.close()
    

# //-------------------------------------------------------
# //    キーボードイベント
# //-------------------------------------------------------
def keyCallback( event ):

    global dialog, mybook, mybookTtl, actWinSW
    
    #print( event )
    #print( keyboard.is_pressed('alt'))

    if not tBarSW:
        return
        
        
    if "up" == event.event_type:
        if "left" == event.name:
            dialog.browser.GoBack()
            return
        if "right" == event.name:
            dialog.browser.GoForward()
            return
            
        if "esc" == event.name:
            if keyboard.is_pressed('shift'):
                dialog.browser.LoadURL("https://www.youtube.com/") 
            else:
                dialog.browser.LoadURL( "file:///%shtml" %( MY_BOOK ) ) 
            return
            
        elif event.name in keyList:
            if  keyboard.is_pressed('alt'):
                url =dialog.browser.GetCurrentURL()
                ttl =dialog.browser.GetCurrentTitle()
                url = url.replace( "https://","")
                url = url.replace( "http://", "")
                # //url = url.replace("www.youtube.com/watch?v=", "www.youtube.com/embed/")
                #print( "(FN)url", url)
                mybook[ event.name ] = url
                mybookTtl[ event.name ] = ttl
                #print( "mybook=", mybook)
                wrtFile()
                time.sleep(1)
                dialog.browser.LoadURL( "file:///%shtml" %( MY_BOOK ) ) 
            else:
                key = event.name
                readFile()              # ブックマークの読み込み
                if key in mybook:
                    dialog.browser.LoadURL( mybook[ key  ] ) 
     
            actWinSW= False


# //-------------------------------------------------------
# //マウスのイベント
# //-------------------------------------------------------
def mouseCallback( event ):

    global dialog, actWinSW, tBarSW

    # //print('mouseCallback-Event:', event )
    # //print('mouseCallback-Event:', type(event) == mouse.ButtonEvent      )

    actWinSW = False
    if type(event) == mouse.MoveEvent:

        pos = dialog.GetScreenPosition()
        sz  = dialog.GetSize()
        x1 = pos.x
        y1 = pos.y
        x2 = pos.x + sz.width
        y2 = pos.y + sz.height
        x0 = event.x
        y0 = event.y
        
        if (x0 > x1 and x0 < x2): 
            if (y0 > y1 and y0 < y2):
                # //print("OK")
                actWinSW = True
                 
        if tBarSW:
            # タイトルバーは表示中
            if actWinSW:
                pass
            else:
                #タイトルバーを消す
                tBarSW = False
                dialog.SetWindowStyle( wx.FRAME_NO_TASKBAR | wx.RESIZE_BORDER ) 
        else:
            # タイトルバーは表示されていない!
            if actWinSW:
                # タイトルバーを表示させる
                tBarSW = True
                dialog.SetWindowStyle( wx.DEFAULT_FRAME_STYLE ) 
            else:
                pass

            
    if type(event) == mouse.ButtonEvent:
        if event.event_type == "up" and event.button=="left":
            pass

   

if __name__ == '__main__': 

    readFile()              # ブックマークの読み込み
    app = wx.App() 
    dialog = MyBrowser(None, -1) 
    # //dialog.browser.LoadURL("https://www.youtube.com") 
    dialog.browser.LoadURL( "file:///%shtml" %( MY_BOOK ) ) 
    # //dialog.browser.LoadURL("https://youtu.be/c4AIZcmb23s") 
    # //dialog.browser.LoadURL("https://www.youtube.com/watch?v=86LY7h7xoIA") 


    keyboard.hook( keyCallback )
    mouse.hook( mouseCallback )
    dialog.Show() 
    dialog.Maximize(False)
    app.MainLoop() 

©2022 Kenji Kobayashi YouTube