精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用 Python 監(jiān)控 NASA TV 直播畫面

開發(fā) 后端
本文分享一個名為"Spacestills"的開源程序,它可以用于查看 NASA TV 的直播畫面(靜止幀)。

 本文分享一個名為"Spacestills"的開源程序,它可以用于查看 NASA TV 的直播畫面(靜止幀)。

演示地址:

https://replit.com/@PaoloAmoroso/spacestills

在Replit上運行的Spacestills主窗口

這是一個具有GUI的簡單系統(tǒng),它訪問feed流并從Web下載數(shù)據(jù)。該程序僅需350行代碼,并依賴于一些開源的Python庫。

關(guān)于程序

Spacestills會定期從feed流中下載NASA TV靜止幀并將其顯示在GUI中。

該程序可以校正幀的縱橫比,并將其保存為PNG格式。它會自動下載最新的幀,并提供手動重新加載,禁用自動重新加載或更改下載頻率的選項。

Spacestillsis是一個比較初級的版本,但是它可以做一些有用的事情:捕獲并保存NASA TV直播的太空事件圖像。太空愛好者經(jīng)常在社交網(wǎng)絡(luò)或論壇共享他們從NASA TV手動獲取的屏幕截圖。Spacestills節(jié)省了使用屏幕捕獲工具的時間,并保存了可供共享的圖像文件。您可以在Replit上在線運行Spacestills。

開發(fā)環(huán)境

筆者用Replit開發(fā)了Spacestills。Replit是云上的開發(fā),部署和協(xié)作環(huán)境,它支持包括Python在內(nèi)的數(shù)十種編程語言和框架。作為Chrome操作系統(tǒng)和云計算愛好者,筆者非常喜歡Replit,因為它可以在瀏覽器中完全正常運行,無需下載或安裝任何內(nèi)容。

資源和依賴包

Spacestills依賴于一些外部資源和Python庫。

  •  NASA TV feed 流

肯尼迪航天中心的網(wǎng)站上有一個頁面,其中包含精選的NASA視頻流,包括NASA電視公共頻道。feed流顯示最新的靜止幀并自動更新。

每個feed都帶有三種尺寸的幀,Spacestills依賴于具有704x408像素幀的最大NASA TV feed流。最大更新頻率為每45秒一次。因此,檢索最新的靜止幀就像從feed流的URL下載JPEG圖像一樣簡單。

原始圖像被垂直拉伸,看起來很奇怪。因此,該程序可以通過壓縮圖像并生成未失真的16:9版本來校正縱橫比。

  •  Python

因PySimpleGUI的原因需要安裝 Python 3.6 版本。

  •  第三方庫

Pillow:圖像處理

PySimpleGUI:GUI框架(Spacestills使用Tkinter后端)

Request:HTTP請求

完整代碼 

  1. from io import BytesIO  
  2. from datetime import datetime, timedelta  
  3. from pathlib import Path  
  4. import requests  
  5. from requests.exceptions import Timeout  
  6. from PIL import Image  
  7. import PySimpleGUI as sg 
  8. FEED_URL = 'https://science.ksc.nasa.gov/shuttle/countdown/video/chan2large.jpg' 
  9. # Frame size without and with 16:9 aspect ratio correction  
  10. WIDTH = 704  
  11. HEIGHT = 480  
  12. HEIGHT_16_9 = 396 
  13. # Minimum, default, and maximum autoreload interval in seconds  
  14. MIN_DELTA = 45  
  15. DELTA = MIN_DELTA  
  16. MAX_DELTA = 300  
  17. class StillFrame():  
  18.     """Holds a still frame.  
  19.     The image is stored as a PNG PIL.Image and kept in PNG format.  
  20.     Attributes  
  21.     ----------  
  22.         image : PIL.Image  
  23.             A still frame  
  24.         original : PIL.Image  
  25.             Original frame with wchich the instance is initialized, cached in case of  
  26.             resizing to the original size  
  27.      Methods  
  28.     -------  
  29.         bytes : Return the raw bytes  
  30.         resize : Resize the screenshot  
  31.         new_size : Calculate new aspect ratio  
  32.     """ 
  33.     def __init__(self, image):  
  34.         """Convert the image to PNG and cache the converted original.  
  35.         Parameters  
  36.         ----------  
  37.             image : PIL.Image  
  38.                 Image to store  
  39.         """  
  40.         self.image = image  
  41.         self._topng()  
  42.         selfself.original = self.image  
  43.     def _topng(self):  
  44.         """Convert image format of frame to PNG.  
  45.         Returns  
  46.         -------  
  47.             StillFrame  
  48.                 Frame with image in PNG format  
  49.         """  
  50.         if not self.image.format == 'PNG':  
  51.             png_file = BytesIO()  
  52.             self.image.save(png_file, 'png')  
  53.             png_file.seek(0)  
  54.             png_image = Image.open(png_file)  
  55.             self.image = png_image  
  56.         return self 
  57.     def bytes(self):  
  58.         """Return raw bytes of a frame image.       
  59.          Returns  
  60.         -------  
  61.             bytes  
  62.                 Byte stream of the frame image  
  63.         """  
  64.         file = BytesIO()  
  65.         self.image.save(file, 'png')  
  66.         file.seek(0)  
  67.         return file.read()  
  68.     def new_size(self):  
  69.         """Return image size toggled between original and 16:9.      
  70.          Returns  
  71.         -------  
  72.             2-tuple  
  73.                 New size  
  74.         """  
  75.         size = self.image.size  
  76.         original_size = self.original.size  
  77.         new_size = (WIDTH, HEIGHT_16_9) if size == original_size else (WIDTH, HEIGHT)  
  78.         return new_size  
  79.     def resize(self, new_size):  
  80.         """Resize frame image.       
  81.          Parameters  
  82.         ----------  
  83.             new_size : 2-tuple  
  84.                 New size  
  85.         Returns  
  86.         -------  
  87.             StillFrame  
  88.                 Frame with image resized  
  89.         """  
  90.         if not(self.image.size == new_size):  
  91.             selfself.image = self.image.resize(new_size)  
  92.         return self 
  93. def make_blank_image(size=(WIDTH, HEIGHT)):  
  94.     """Create a blank image with a blue background.   
  95.      Parameters  
  96.     ----------  
  97.         size : 2-tuple  
  98.             Image size  
  99.      Returns  
  100.     -------  
  101.         PIL.Image  
  102.             Blank image  
  103.     """  
  104.     image = Image.new('RGB', sizesize=size, color='blue' 
  105.     return image  
  106. def download_image(url):  
  107.     """Download current NASA TV image.  
  108.     Parameters  
  109.     ----------  
  110.         url : str  
  111.             URL to download the image from   
  112.      Returns  
  113.     -------  
  114.         PIL.Image  
  115.             Downloaded image if no errors, otherwise blank image  
  116.     """  
  117.     try:  
  118.         response = requests.get(url, timeout=(0.5, 0.5))  
  119.         if response.status_code == 200:  
  120.             image = Image.open(BytesIO(response.content)) 
  121.         else:  
  122.             image = make_blank_image()  
  123.     except Timeout:  
  124.         image = make_blank_image()  
  125.     return image 
  126. def refresh(window, resize=Falsefeed=FEED_URL):  
  127.     """Display the latest still frame in window.    
  128.      Parameters  
  129.     ----------  
  130.         window : sg.Window  
  131.             Window to display the still to  
  132.         feed : string  
  133.             Feed URL    
  134.      Returns  
  135.     -------  
  136.         StillFrame  
  137.             Refreshed screenshot  
  138.     """  
  139.     still = StillFrame(download_image(feed))  
  140.     if resize:  
  141.         still = change_aspect_ratio(window, still, new_size=(WIDTH, HEIGHT_16_9))  
  142.     else:  
  143.         window['-IMAGE-'].update(data=still.bytes())  
  144.     return still  
  145. def change_aspect_ratio(window, still, new_size=(WIDTH, HEIGHT_16_9)):  
  146.     """Change the aspect ratio of the still displayed in window.  
  147.      Parameters  
  148.     ----------  
  149.         window : sg.Window  
  150.             Window containing the still  
  151.         new_size : 2-tuple  
  152.             New size of the still   
  153.      Returns  
  154.     -------  
  155.         StillFrame  
  156.             Frame containing the resized image  
  157.     """  
  158.     resized_still = still.resize(new_size)  
  159.     window['-IMAGE-'].update(data=resized_still.bytes())  
  160.     return resized_still  
  161. def save(still, path):  
  162.     """Save still to a file.  
  163.     Parameters  
  164.     ----------  
  165.         still : StillFrame  
  166.             Still to save  
  167.         path : string  
  168.             File name  
  169.      Returns  
  170.     -------  
  171.         Boolean  
  172.             True if file saved with no errors  
  173.     """  
  174.     filename = Path(path)  
  175.     try:  
  176.         with open(filename, 'wb') as file:  
  177.             file.write(still.bytes())  
  178.         saved = True  
  179.     except OSError:  
  180.         saved = False  
  181.     return saved  
  182. def next_timeout(delta):  
  183.     """Return the moment in time right now + delta seconds from now.  
  184.     Parameters  
  185.     ----------  
  186.         delta : int  
  187.             Time in seconds until the next timeout  
  188.      Returns  
  189.     -------  
  190.         datetime.datetime  
  191.             Moment in time of the next timeout  
  192.     """  
  193.     rightnow = datetime.now()  
  194.     return rightnow + timedelta(seconds=delta
  195. def timeout_due(next_timeout):  
  196.     """Return True if the next timeout is due.  
  197.     Parameters  
  198.     ----------  
  199.         next_timeout : datetime.datetime   
  200.      Returns  
  201.     -------  
  202.         bool  
  203.             True if the next timeout is due  
  204.     """  
  205.     rightnow = datetime.now()  
  206.     return rightnow >= next_timeout   
  207. def validate_delta(value):  
  208.     """Check if value is an int within the proper range for a time delta.  
  209.     Parameters  
  210.     ----------  
  211.         value : int  
  212.             Time in seconds until the next timeout    
  213.      Returns  
  214.     -------  
  215.         int  
  216.             Time in seconds until the next timeout  
  217.         bool  
  218.             True if the argument is a valid time delta  
  219.     """  
  220.     isinteger = False  
  221.     try:  
  222.         isinteger = type(int(value)) is int  
  223.     except Exception:  
  224.         delta = DELTA  
  225.     delta = int(value) if isinteger else delta  
  226.     isvalid = MIN_DELTA <= delta <= MAX_DELTA  
  227.     deltadelta = delta if isvalid else DELTA  
  228.     return delta, isinteger and isvalid  
  229. LAYOUT = [[sg.Image(key='-IMAGE-')],  
  230.           [sg.Checkbox('Correct aspect ratio', key='-RESIZE-'enable_events=True),  
  231.            sg.Button('Reload', key='-RELOAD-'),  
  232.            sg.Button('Save', key='-SAVE-'),  
  233.            sg.Exit()],  
  234.           [sg.Checkbox('Auto-reload every (seconds):', key='-AUTORELOAD-' 
  235.                        default=True),  
  236.            sg.Input(DELTA, key='-DELTA-'size=(3, 1), justification='right'),  
  237.            sg.Button('Set', key='-UPDATE_DELTA-')]]  
  238. def main(layout):  
  239.     """Run event loop."""  
  240.     window = sg.Window('Spacestills', layout, finalize=True 
  241.     current_still = refresh(window)  
  242.     delta = DELTA  
  243.     next_reload_time = datetime.now() + timedelta(seconds=delta 
  244.     while True:  
  245.         event, values = window.read(timeout=100 
  246.         if event in (sg.WIN_CLOSED, 'Exit'):  
  247.             break  
  248.         elif ((event == '-RELOAD-') or  
  249.                 (values['-AUTORELOAD-'] and timeout_due(next_reload_time))):  
  250.             current_still = refresh(window, values['-RESIZE-'])  
  251.             if values['-AUTORELOAD-']:  
  252.                 next_reload_time = next_timeout(delta)  
  253.         elif event == '-RESIZE-':  
  254.             current_still = change_aspect_ratio 
  255.                 window, current_still, current_still.new_size())  
  256.         elif event == '-SAVE-':  
  257.             filename = sg.popup_get_file(  
  258.                 'File name', file_types=[('PNG', '*.png')], save_as=True 
  259.                 title='Save image'default_extension='.png' 
  260.             if filename:  
  261.                 savesaved = save(current_still, filename)  
  262.                 if not saved:  
  263.                     sg.popup_ok('Error while saving file:', filename, title='Error' 
  264.         elif event == '-UPDATE_DELTA-':  
  265.             # The current cycle should complete at the already scheduled time. So  
  266.             # don't update next_reload_time yet because it'll be taken care of at the  
  267.             # next -AUTORELOAD- or -RELOAD- event.  
  268.             delta, valid = validate_delta(values['-DELTA-'])  
  269.             if not valid:  
  270.                 window['-DELTA-'].update(str(DELTA))  
  271.     window.close() 
  272.     del window  
  273. if __name__ == '__main__':  
  274.     main(LAYOUT)  

 

責任編輯:龐桂玉 來源: Python中文社區(qū) (ID:python-china)
相關(guān)推薦

2015-06-30 17:41:31

戰(zhàn)旗TV

2013-02-01 10:09:46

TV客

2019-11-22 23:46:38

PythonNBAsh球員

2021-06-04 10:31:41

PythonUniswap加密貨幣

2016-07-05 14:50:57

熊貓 領(lǐng)域

2016-05-12 17:41:44

2016-05-17 20:57:43

2012-01-06 10:42:43

NASA開源

2022-03-24 14:42:19

Python編程語言

2020-12-09 11:53:24

鴻蒙開發(fā)HelloWord

2011-09-30 13:04:17

51CTO博客一周熱門監(jiān)控網(wǎng)絡(luò)

2012-01-10 09:30:02

UbuntuCanonical

2023-04-09 23:17:16

Python監(jiān)控城市空氣

2012-08-07 08:55:40

2020-01-13 07:42:01

技術(shù)研發(fā)指標

2011-05-31 16:14:26

Android

2021-04-16 08:20:00

Flink CEP直播監(jiān)控

2015-01-27 15:30:10

反監(jiān)控監(jiān)控探測SnoopSnitch

2017-12-20 10:33:02

直播

2016-01-04 16:19:31

阿里云芒果TV云計算
點贊
收藏

51CTO技術(shù)棧公眾號

久久精品资源| 国产精品探花视频| 国产精品视频一区二区三区四蜜臂| 欧美色视频日本版| 少妇特黄a一区二区三区| 伊人精品一区二区三区| 欧美精品国产一区| 亚洲天堂免费在线| 中文字幕亚洲欧洲| gogo高清在线播放免费| 久久嫩草精品久久久久| 亚洲xxxx18| 超碰超碰超碰超碰| 一区二区三区毛片免费| 亚洲欧洲xxxx| www.久久com| 少妇一区视频| 亚洲妇女屁股眼交7| 亚洲欧美99| 欧美一区二不卡视频| 日韩精品成人一区二区在线| 久久精品亚洲一区| 亚洲精品午夜视频| 国产精品x8x8一区二区| 欧美日韩成人激情| 精品国产一区三区| 国产激情在线观看| 国产欧美一区二区精品性色超碰| caoporn国产精品免费公开| www.亚洲激情| 午夜影院日韩| 韩国国内大量揄拍精品视频| 特一级黄色录像| 日本道不卡免费一区| 日韩精品极品视频免费观看| 手机版av在线| 国产精品一区二区免费福利视频| 一区二区在线观看不卡| 五月天男人天堂| 黄色视屏网站在线免费观看| www.色综合.com| 99精品国产高清一区二区| 一级黄色a视频| 奇米四色…亚洲| 日本不卡高字幕在线2019| 国产午夜小视频| 很黄很黄激情成人| 欧美大秀在线观看| 91在线播放观看| 天天做综合网| 日韩中文字幕国产| 日本女人性生活视频| 欧美精品久久久久久| 亚洲一区二区国产| 蜜臀久久99精品久久久久久| 国产亚洲电影| 亚洲天堂男人天堂女人天堂| 女女互磨互喷水高潮les呻吟| 亚洲人亚洲人色久| 亚洲美女喷白浆| 天天躁日日躁aaaa视频| 国产精品免费99久久久| 亚洲人精品午夜在线观看| 谁有免费的黄色网址| 国产一区二区三区四区| 亚洲最大在线视频| 亚洲色图100p| 911久久香蕉国产线看观看| 欧美成人激情视频| 色在线观看视频| 午夜精品久久99蜜桃的功能介绍| 九九久久精品一区| 国产 日韩 欧美 成人| 亚洲久久视频| 国产精品999999| 一区二区精品视频在线观看| 国内精品免费**视频| 97人人模人人爽视频一区二区| 国产普通话bbwbbwbbw| 国产成人精品综合在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 飘雪影视在线观看免费观看 | 奇米四色中文综合久久| 日本特级黄色片| 美女尤物国产一区| 97在线中文字幕| 亚洲区小说区图片区| 国产欧美日韩亚州综合| 最新黄色av网站| 136福利第一导航国产在线| 色婷婷av一区| 天天久久综合网| 欧美理论电影在线精品| 正在播放亚洲1区| 69av视频在线| 男人的天堂亚洲在线| 国产精品中文在线| 成人午夜免费在线观看| 久久久蜜桃精品| 永久免费看av| 网友自拍亚洲| 欧美成人激情免费网| 无码熟妇人妻av| 亚洲男女av一区二区| 555www成人网| 国产毛片毛片毛片毛片| 久久嫩草精品久久久精品| 99精品一级欧美片免费播放| 亚洲天堂av在线| 91精品国产麻豆| 亚洲 小说 欧美 激情 另类| 亚洲激情久久| 国产不卡av在线免费观看| 亚洲av永久纯肉无码精品动漫| 久久久国产午夜精品| 日韩精品在线观看av| 国产极品一区| 亚洲欧美日韩图片| 九九九在线视频| 美国一区二区三区在线播放 | 成人羞羞动漫| 欧美亚洲国产视频| 国产xxxx在线观看| 国产精品美女视频| 少妇性饥渴无码a区免费| 激情综合五月| 色吧影院999| 亚洲天堂男人av| 99久精品国产| 国产又粗又猛又爽又黄的网站| 97成人超碰| 国产丝袜精品视频| 日本五十熟hd丰满| 国产精品一区二区黑丝| 杨幂一区欧美专区| 日韩一级二级| 国产亚洲精品久久久优势| 日韩免费视频网站| 国产传媒一区在线| 在线观看av的网址| 精品一区二区三区视频在线播放| 在线观看欧美成人| а中文在线天堂| 久久久电影一区二区三区| 狠狠干 狠狠操| 精品三级在线观看视频| 欧美激情视频在线观看| 国产成人精品亚洲精品色欲| 综合欧美一区二区三区| 一区二区在线免费看| 欧美肉体xxxx裸体137大胆| 日本三级久久久| 黄色在线视频观看网站| 色域天天综合网| 久久国产柳州莫菁门| 久久一区二区三区超碰国产精品| 久久艳妇乳肉豪妇荡乳av| 美女av在线免费看| 亚洲欧美日韩综合| 伊人久久中文字幕| 国产精品卡一卡二| 天天久久综合网| 狠狠爱综合网| 韩国成人av| 欧美xxx网站| 在线成人一区二区| 国产精品一区二区三区在线免费观看| 综合久久久久综合| 国产xxxxhd| 在线综合欧美| 欧美在线激情| 亚洲香蕉久久| 欧美高清电影在线看| 少妇人妻偷人精品一区二区 | 不卡av电影在线观看| 草草视频在线播放| 婷婷六月综合亚洲| 国产一二三四区在线| 国产一区二区三区免费播放| 国产成人在线小视频| 色综合久久中文| 国产美女久久精品香蕉69| 国产黄色小视频在线| 亚洲国产精品嫩草影院久久| 天干夜夜爽爽日日日日| 国产精品国模大尺度视频| 9.1在线观看免费| 三级精品在线观看| 大荫蒂性生交片| 国产在线日韩精品| 99久久精品免费看国产四区| 国产资源在线观看入口av| 综合网中文字幕| 黑人操亚洲女人| 欧美在线观看视频一区二区三区 | 欧美日韩一区二区免费在线观看| 国产视频不卡在线| 成人午夜激情在线| 亚洲色图久久久| 黑丝一区二区| 亚洲一区二区四区| 美女视频免费精品| 国产一区视频在线| 亚洲国产欧美日本视频| 欧美老女人xx| 在线观看免费黄色| 亚洲精品久久久久国产| 国产精品久久久久久久久久久久久久久久久久| 亚洲一区免费在线观看| 欧美激情亚洲色图| av影院午夜一区| 日韩av加勒比| 日韩精品三区四区| 成人在线播放网址| 国产精品传媒精东影业在线| 蜜桃传媒视频麻豆第一区免费观看 | 欧美性色视频在线| 精品无码久久久久久久| 中文字幕一区二区三区在线观看 | 亚洲人成精品久久久 | 香蕉久久国产av一区二区| 69av一区二区三区| 最近中文字幕免费在线观看| 欧美日韩国产专区| 精品少妇一二三区| 亚洲欧美日韩国产另类专区 | 国产农村老头老太视频| 国内精品一区视频| 后进极品白嫩翘臀在线播放| 亚洲中字黄色| 先锋影音一区二区三区| 欧美国产不卡| 91嫩草在线| 亚洲影视资源| 国产在线不卡精品| 91亚洲视频| 国产精品狼人色视频一区| 成人一区福利| 2018中文字幕一区二区三区| 变态调教一区二区三区| 欧美成人一区在线| caoporn免费在线| 久久久精品国产一区二区| 91caoporm在线视频| 在线观看中文字幕亚洲| jizz在线观看| 深夜福利日韩在线看| 91涩漫在线观看| 在线精品国产欧美| 91精品国产91久久久久游泳池| 亚洲视频日韩精品| а天堂8中文最新版在线官网| 亚洲视频视频在线| se在线电影| 久久国产一区二区三区| 黄色网在线免费看| 久久国产视频网站| 18+激情视频在线| 欧美国产日韩中文字幕在线| 国产99re66在线视频| 欧美极品在线视频| f2c人成在线观看免费视频| 2019av中文字幕| 婷婷综合六月| 成人福利网站在线观看11| 伊人久久综合网另类网站| 91久久嫩草影院一区二区| 日本一区二区三区视频在线看 | 欧美日韩dvd| 在线不卡视频| 国产精品97在线| 麻豆精品在线观看| 免费观看黄网站| 99精品国产视频| 免费看污片的网站| 亚洲女爱视频在线| 日韩欧美a级片| 色天天综合色天天久久| 一级黄色小视频| 日韩精品一区二区三区在线播放| 日批视频免费播放| 亚洲女成人图区| 久草免费在线观看| 久久久久久久久久久免费| 玛雅亚洲电影| 91在线观看免费高清| 久久亚州av| 亚洲在线不卡| 亚洲国产第一| 亚洲精品自拍网| 成人深夜福利app| 久久久久无码精品国产sm果冻| 亚洲素人一区二区| 国产又粗又爽视频| 欧美一级高清大全免费观看| 亚洲av毛片成人精品| 日韩一区二区欧美| 蜜桃视频m3u8在线观看| 成人性生交xxxxx网站| 日韩黄色网络| 色哟哟免费网站| 葵司免费一区二区三区四区五区| 成年人网站av| 久久久不卡影院| 日韩av在线播放观看| 欧美三级中文字幕在线观看| 人妻无码中文字幕| 中文亚洲视频在线| 日本不卡1234视频| 亚洲最大福利视频网站| 欧州一区二区| 日韩欧美一区三区| 国产一区二区三区国产| 中国女人特级毛片| 精品国产福利视频| 亚洲精品无遮挡| 神马久久久久久| 日本美女一区| 精品一区二区日本| 欧美激情91| 99日在线视频| 国产女人aaa级久久久级 | 精品国产一二| 欧美日韩亚洲一区三区| 亚洲欧美日韩综合网| 久久久久88色偷偷免费| 日本少妇久久久| 欧美一级黄色片| 国产剧情在线| 国产精品羞羞答答| 国产精品最新| 国产精品欧美激情在线观看| av在线综合网| 国产小视频在线观看免费| 日韩一二在线观看| 国产激情小视频在线| 成人国产精品久久久久久亚洲| 欧美日韩老妇| 日韩爱爱小视频| 国产蜜臀97一区二区三区| 日日夜夜狠狠操| 亚洲欧美在线一区二区| 中文字幕色婷婷在线视频| 精品日本一区二区三区在线观看| 亚洲特级毛片| 美女流白浆视频| 亚洲综合免费观看高清完整版| 国产成人免费看一级大黄| 久久国产精品网站| 伊人久久影院| 黄色一级片在线看| 99热精品一区二区| 国产高清中文字幕| 亚洲色图综合久久| 成人在线免费av| 在线视频欧美一区| 国产在线国偷精品产拍免费yy| 麻豆天美蜜桃91| 欧美成人a在线| 嗯啊主人调教在线播放视频 | 国产精品日韩专区| 欧美激情另类| 在线视频日韩欧美| 亚洲一区二区美女| 凸凹人妻人人澡人人添| 日韩美女免费观看| 欧美美女视频| 精品亚洲视频在线| 亚洲一区二区三区视频在线播放| 天堂在线视频网站| 日本午夜精品理论片a级appf发布| 精品国产一区二区三区久久久蜜臀| 亚洲免费一级视频| 亚洲尤物视频在线| 四虎影视在线观看2413| 国产精品999999| 午夜欧美精品久久久久久久| 国产精品无码专区| 欧美性生活大片视频| av在线下载| 免费成人深夜夜行视频| 久久精品国产精品亚洲红杏| 麻豆成人在线视频| 亚洲欧美国产精品| 国产电影一区二区| 一二三四视频社区在线| 欧美激情一区二区三区四区| www.天天干.com| 日本高清久久天堂| 中文字幕一区二区三区在线视频 | 国产高清视频网站| 亚洲伊人色欲综合网| 国产小视频免费在线网址| 91欧美精品午夜性色福利在线| 亚洲激情午夜| 国产亚洲精品久久久久久豆腐| 欧美精品一区二区三区蜜臀| 成人精品高清在线视频| 精品这里只有精品| 综合久久久久久|