黄色草逼视频_久久夜夜视频_亚洲国产成人久久午夜_三级在线播放

網(wǎng)站改版|WAP網(wǎng)站制作|域名注冊|虛擬主機(jī)|服務(wù)器|海微商|海微信|海微通| 無障礙| 24小時服務(wù)電話:13807590485
海南網(wǎng)站建設(shè)海南網(wǎng)站制作海口網(wǎng)站建設(shè)三亞網(wǎng)站建設(shè)儋州網(wǎng)站建設(shè)五指山網(wǎng)站建設(shè)文昌網(wǎng)站建設(shè)瓊海網(wǎng)站建設(shè)萬寧網(wǎng)站建設(shè)東方網(wǎng)站建設(shè)定安網(wǎng)站建設(shè) 網(wǎng)站首頁網(wǎng)站首頁 網(wǎng)站建設(shè)網(wǎng)站建設(shè) 微信開發(fā)微信開發(fā) 網(wǎng)站推廣網(wǎng)站推廣 海南網(wǎng)站建設(shè)公司,海南網(wǎng)站開發(fā)制作公司,海南網(wǎng)頁設(shè)計(jì)公司,海南小程序開發(fā)公司,海南微信公眾號開發(fā)公司,海南網(wǎng)絡(luò)公司,海南世紀(jì)華聯(lián)海南世紀(jì)華聯(lián) 網(wǎng)站超市網(wǎng)站超市 客戶案例客戶案例 網(wǎng)站模板網(wǎng)站模板 關(guān)于我們關(guān)于我們
  • 微信開發(fā)
  • 持之以恒
  • 網(wǎng)站設(shè)計(jì)制作
  • 中立五年回報客戶
無障礙
微信開發(fā)
微信系統(tǒng)開發(fā) 微信開發(fā)功能 公眾號基礎(chǔ)教程 開發(fā)技術(shù)資訊 公眾號推廣營銷 客戶案例
聯(lián)系我們
QQ服務(wù)群:28519571 工作時間:86-0898-31568080 傳真號碼:86-0898-31568085 24小時服務(wù):0138-07590485
 您現(xiàn)在的位置: 首頁 >> 微信開發(fā) >> 開發(fā)技術(shù)資訊 開發(fā)技術(shù)資訊
微信機(jī)器人:有道翻譯小助手——Django + SAE + 微信公眾帳號自動回復(fù)開放接口
世紀(jì)華聯(lián) | 2018-01-26 23:32:14 | 閱讀:14491
Sina App Engine

  首先作為一個屌絲開發(fā)者要解決服務(wù)器的問題。去SAE的官網(wǎng)上用新浪微博的帳號注冊一個帳號,成功后會贈給你500云豆,可供一個開發(fā)者試用大概5天。SAE非常優(yōu)秀,如果以后我們想在上面寫點(diǎn)應(yīng)用什么的,可以去申請實(shí)名認(rèn)證和開發(fā)者認(rèn)證,那樣每個月都會給你一定數(shù)量的云豆,應(yīng)該能滿足日常需求。由于現(xiàn)在SAE上部署Python還處于公測階段,因此我們要去申請開通可以在上面部署Python程序的權(quán)限,現(xiàn)在很好申請的,不一會就會收到已經(jīng)為你開放了部署Python應(yīng)用權(quán)限的郵件,網(wǎng)上搜到的啥啥還需要排隊(duì)都是過去了(不排除當(dāng)你看到這篇文章時SAE已經(jīng)可以允許所有開發(fā)者部署Python的應(yīng)用了)。
 

  OK,完成這些后,就可以到SAE的文檔中心讀文檔來照著文檔里面的樣例創(chuàng)建一個應(yīng)用了。

  有道API

  然后,去有道API申請一個key,申請的時候網(wǎng)站地址隨便填就行。有道API非常簡單,直接以GET的形式把要翻譯的文本發(fā)送到指定的url,然后它會給我們回復(fù)翻譯結(jié)果,我們可以選擇xml、json等返回格式,我選得是xml,接著,在瀏覽器里面按著指定的格式輸入url,就可以看到返回結(jié)果啦:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <youdao-fanyi>  
  3.     <errorCode>0</errorCode>  
  4.     <query><![CDATA[這里是有道翻譯API]]></query>  
  5.     <!-- 有道翻譯 -->  
  6.     <translation>  
  7.             <paragraph><![CDATA[Here is the youdao translation API]]></paragraph>  
  8.         </translation>  
  9. </youdao-fanyi>  
復(fù)制代碼

  注意,如果是對詞進(jìn)行翻譯的話有的詞還會返回一些啥網(wǎng)絡(luò)釋義,基本釋義啥的,具體對這個xml解析的方法請看下面的代碼。

  微信公眾帳號

  接著,我們要去微信的公眾帳號平臺去申請一個公眾帳號,不能用現(xiàn)有的已綁定私人微信帳號的QQ號申請,我用的是一個平時不用的QQ號申請的,申請成功后,可以大致看看微信公眾帳號的管理平臺(現(xiàn)在你知道那些公眾帳號,比如王力宏的帳號啥的是怎么運(yùn)作的了吧),接著去這里仔細(xì)閱讀微信公眾帳號自動回復(fù)開放接口的文檔,你要從這里學(xué)一種如何讓用戶認(rèn)證的思想(就是如果用戶做了XX,給我返回了XX結(jié)果,那么我就能確定,用戶是“合法”的),或者認(rèn)證的方法。大致有一個認(rèn)識后,趕緊下載他給的樣例php源碼,也是唯一的可以參考的源碼,仔細(xì)閱讀,如下:
  1. <?php  
  2. /** 
  3.   * wechat php test 
  4.   */  
  5.   
  6. //define your token  
  7. define("TOKEN", "weixin");  
  8. $wechatObj = new wechatCallbackapiTest();  
  9. $wechatObj->valid();  
  10.   
  11. class wechatCallbackapiTest  
  12. {  
  13.     public function valid()  
  14.     {  
  15.         $echoStr = $_GET["echostr"];  
  16.   
  17.         //valid signature , option  
  18.         if($this->checkSignature()){  
  19.             echo $echoStr;  
  20.             exit;  
  21.         }  
  22.     }  
  23.   
  24.     public function responseMsg()  
  25.     {  
  26.         //get post data, May be due to the different environments  
  27.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
  28.   
  29.         //extract post data  
  30.         if (!empty($postStr)){  
  31.        echoStr           
  32.                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);  
  33.                 $fromUsername = $postObj->FromUserName;  
  34.                 $toUsername = $postObj->ToUserName;  
  35.                 $keyword = trim($postObj->Content);  
  36.                 $time = time();  
  37.                 $textTpl = "<xml>  
  38.                             <ToUserName><![CDATA[%s]]></ToUserName>  
  39.                             <FromUserName><![CDATA[%s]]></FromUserName>  
  40.                             <CreateTime>%s</CreateTime>  
  41.                             <MsgType><![CDATA[%s]]></MsgType>  
  42.                             <Content><![CDATA[%s]]></Content>  
  43.                             <FuncFlag>0</FuncFlag>  
  44.                             </xml>";               
  45.                 if(!empty( $keyword ))  
  46.                 {  
  47.                     $msgType = "text";  
  48.                     $contentStr = "Welcome to wechat world!";  
  49.                     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
  50.                     echo $resultStr;  
  51.                 }else{  
  52.                     echo "Input something...";  
  53.                 }  
  54.   
  55.         }else {  
  56.             echo "";  
  57.             exit;  
  58.         }  
  59.     }  
  60.           
  61.     private function checkSignature()  
  62.     {  
  63.         $signature = $_GET["signature"];  
  64.         $timestamp = $_GET["timestamp"];  
  65.         $nonce = $_GET["nonce"];      
  66.                   
  67.         $token = TOKEN;  
  68.         $tmpArr = array($token, $timestamp, $nonce);  
  69.         sort($tmpArr);  
  70.         $tmpStr = implode( $tmpArr );  
  71.         $tmpStr = sha1( $tmpStr );  
  72.           
  73.         if( $tmpStr == $signature ){  
  74.             return true;  
  75.         }else{  
  76.             return false;  
  77.         }  
  78.     }  
  79. }  
  80.   
  81. ?>  
復(fù)制代碼

  很簡單吧,以至于被一些人說寫的很水,但是我覺得,這份php源碼還是很有含金量的;網(wǎng)上一些哥們還抱怨啥啥的直接部署樣例php不能運(yùn)行啥的,拜托,有點(diǎn)職業(yè)精神好不好,連我這個之前完全不會php的人都能看出來要調(diào)用里面的responseMsg( )方法才能實(shí)現(xiàn)自動回復(fù),樣例里面的只是調(diào)用了微信接入的認(rèn)證功能的函數(shù)。
上面的代碼寫的很好,不需要我多解釋,相信大家能看出來它是怎么工作的。
設(shè)計(jì)與實(shí)現(xiàn)
  接著就可以實(shí)現(xiàn)我們自己的應(yīng)用了,首先把我們在SAE上創(chuàng)建的應(yīng)用通過SVN檢出到本地,然后切換到檢出的目錄,用Django的命令創(chuàng)建一個應(yīng)用,目錄結(jié)構(gòu)如下:
 

  其中,index.wsgi和config.yaml是SAE規(guī)定的文件,具體請仔細(xì)閱讀SAE的文檔。
  之后就可以編寫我們自己的服務(wù)端代碼了,大致思想就是:用戶A向公眾帳號發(fā)送一條消息,微信平臺會按著公眾帳號預(yù)先的設(shè)置,把用戶A的消息內(nèi)容和一些其他信息(如創(chuàng)建時間等)以xml的形式post到我們預(yù)先設(shè)置好的url上(這個url的服務(wù)端就是我們要寫的在SAE上的應(yīng)用),我們要做的就是每當(dāng)接受到微信post請求,我們解析微信平臺post過來的xml,得到用戶A的消息內(nèi)容,把消息內(nèi)容以get的形式發(fā)送到有道API,獲取有道API返回的xml(或json等),解析,之后按微信平臺規(guī)定的格式構(gòu)造成一個xml,作為微信平臺post請求的結(jié)果給其返回,微信平臺收到結(jié)果后,會把消息自動回復(fù)給用戶,用戶就能收到翻譯結(jié)果了。
  用一個圖表示上述過程如下:
 

源碼
  下面貼出邏輯處理部分代碼如下(Views.py),各函數(shù)功能不言而喻:
  1. [python] view plaincopy
  2. # -*- coding: utf-8 -*-  
  3. from django.http import HttpResponse  
  4. from django.template import RequestContext, Template  
  5. from django.views.decorators.csrf import csrf_exempt  
  6. from django.utils.encoding import smart_str, smart_unicode  
  7.   
  8. import xml.etree.ElementTree as ET  
  9. import urllib,urllib2,time,hashlib  
  10.   
  11. TOKEN = "你設(shè)置的Token"  
  12.   
  13. YOUDAO_KEY = 你申請到的有道的Key  
  14. YOUDAO_KEY_FROM = "有道的key-from"  
  15. YOUDAO_DOC_TYPE = "xml"  

  16. @csrf_exempt  
  17. def handleRequest(request):  
  18.     if request.method == 'GET':  
  19.         #response = HttpResponse(request.GET['echostr'],content_type="text/plain")  
  20.         response = HttpResponse(checkSignature(request),content_type="text/plain")  
  21.         return response  
  22.     elif request.method == 'POST':  
  23.         #c = RequestContext(request,{'result':responseMsg(request)})  
  24.         #t = Template('{{result}}')  
  25.         #response = HttpResponse(t.render(c),content_type="application/xml")  
  26.         response = HttpResponse(responseMsg(request),content_type="application/xml")  
  27.         return response  
  28.     else:  
  29.         return None  
  30.   
  31. def checkSignature(request):  
  32.     global TOKEN  
  33.     signature = request.GET.get("signature", None)  
  34.     timestamp = request.GET.get("timestamp", None)  
  35.     nonce = request.GET.get("nonce", None)  
  36.     echoStr = request.GET.get("echostr",None)  
  37.   
  38.     token = TOKEN  
  39.     tmpList = [token,timestamp,nonce]  
  40.     tmpList.sort()  
  41.     tmpstr = "%s%s%s" % tuple(tmpList)  
  42.     tmpstr = hashlib.sha1(tmpstr).hexdigest()  
  43.     if tmpstr == signature:  
  44.         return echoStr  
  45.     else:  
  46.         return None  
  47.   
  48. def responseMsg(request):  
  49.     rawStr = smart_str(request.raw_post_data)  
  50.     #rawStr = smart_str(request.POST['XML'])  
  51.     msg = paraseMsgXml(ET.fromstring(rawStr))  
  52.       
  53.     queryStr = msg.get('Content','You have input nothing~')  
  54.   
  55.     raw_youdaoURL = "http://fanyi.youdao.com/openapi.do?keyfrom=%s&key=%s&type=data&doctype=%s&version=1.1&q=" % (YOUDAO_KEY_FROM,YOUDAO_KEY,YOUDAO_DOC_TYPE)     
  56.     youdaoURL = "%s%s" % (raw_youdaoURL,urllib2.quote(queryStr))  
  57.   
  58.     req = urllib2.Request(url=youdaoURL)  
  59.     result = urllib2.urlopen(req).read()  
  60.   
  61.     replyContent = paraseYouDaoXml(ET.fromstring(result))  
  62.   
  63.     return getReplyXml(msg,replyContent)  
  64.   
  65. def paraseMsgXml(rootElem):  
  66.     msg = {}  
  67.     if rootElem.tag == 'xml':  
  68.         for child in rootElem:  
  69.             msg[child.tag] = smart_str(child.text)  
  70.     return msg  
  71.   
  72. def paraseYouDaoXml(rootElem):  
  73.     replyContent = ''  
  74.     if rootElem.tag == 'youdao-fanyi':  
  75.         for child in rootElem:  
  76.             # 錯誤碼  
  77.             if child.tag == 'errorCode':  
  78.                 if child.text == '20':  
  79.                     return 'too long to translate\n'  
  80.                 elif child.text == '30':  
  81.                     return 'can not be able to translate with effect\n'  
  82.                 elif child.text == '40':  
  83.                     return 'can not be able to support this language\n'  
  84.                 elif child.text == '50':  
  85.                     return 'invalid key\n'  
  86.   
  87.             # 查詢字符串  
  88.             elif child.tag == 'query':  
  89.                 replyContent = "%s%s\n" % (replyContent, child.text)  
  90.   
  91.             # 有道翻譯  
  92.             elif child.tag == 'translation':   
  93.                 replyContent = '%s%s\n%s\n' % (replyContent, '-' * 3 + u'有道翻譯' + '-' * 3, child[0].text)  
  94.   
  95.             # 有道詞典-基本詞典  
  96.             elif child.tag == 'basic':   
  97.                 replyContent = "%s%s\n" % (replyContent, '-' * 3 + u'基本詞典' + '-' * 3)  
  98.                 for c in child:  
  99.                     if c.tag == 'phonetic':  
  100.                         replyContent = '%s%s\n' % (replyContent, c.text)  
  101.                     elif c.tag == 'explains':  
  102.                         for ex in c.findall('ex'):  
  103.                             replyContent = '%s%s\n' % (replyContent, ex.text)  
  104.   
  105.             # 有道詞典-網(wǎng)絡(luò)釋義  
  106.             elif child.tag == 'web':   
  107.                 replyContent = "%s%s\n" % (replyContent, '-' * 3 + u'網(wǎng)絡(luò)釋義' + '-' * 3)  
  108.                 for explain in child.findall('explain'):  
  109.                     for key in explain.findall('key'):  
  110.                         replyContent = '%s%s\n' % (replyContent, key.text)  
  111.                     for value in explain.findall('value'):  
  112.                         for ex in value.findall('ex'):  
  113.                             replyContent = '%s%s\n' % (replyContent, ex.text)  
  114.                     replyContent = '%s%s\n' % (replyContent,'--')  
  115.     return replyContent  
  116.   
  117. def getReplyXml(msg,replyContent):  
  118.     extTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";  
  119.     extTpl = extTpl % (msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',replyContent)  
  120.     return extTpl  
復(fù)制代碼

  之后通過SVN把項(xiàng)目部署到SAE上,就OK啦~
遇到的問題
  現(xiàn)在網(wǎng)上這種參考的代碼還很少,在SAE上部署調(diào)試也非常困難,無奈下我自己寫了個腳本,模仿微信平臺給自己部署在SAE上的服務(wù)端POST消息,看返回的結(jié)果。如果出現(xiàn)錯誤,Django都會產(chǎn)生一個優(yōu)美的錯誤頁面,獲取這個錯誤頁面把它寫到本地的一個html里面,用瀏覽器打開就可以知道是什么錯誤了。
寫的過程中還是遇到不少問題的:
1.Django的CSRF錯誤:
我用的Django 1.4,我嘗試了大家說的很多解決辦法都會出現(xiàn)403錯誤,無奈下只能暫時通過修飾符把Django的CSRF暫時禁掉,這個還要以后學(xué)Django的深入調(diào)研一下;
2.Django的編碼錯誤:
我也嘗試了很多方法,但是都不行,主要是中文處理上,遇到了很多麻煩,最終在這里找到了完美的解決方案,用可愛的Django自帶的可愛的方法:smart_str、smart_unicode,就能完美處理中文了。
海南網(wǎng)站建設(shè)|海南網(wǎng)站制作|?诰W(wǎng)站建設(shè)|三亞網(wǎng)站建設(shè)|儋州網(wǎng)站建設(shè)|五指山網(wǎng)站建設(shè)|文昌網(wǎng)站建設(shè)|瓊海網(wǎng)站建設(shè)|萬寧網(wǎng)站建設(shè)|東方網(wǎng)站建設(shè)|定安網(wǎng)站建設(shè)|屯昌網(wǎng)站建設(shè)|澄邁網(wǎng)站建設(shè)|臨高網(wǎng)站建設(shè)|白沙網(wǎng)站建設(shè)|昌江網(wǎng)站建設(shè)|樂東網(wǎng)站建設(shè)|陵水網(wǎng)站建設(shè)|保亭網(wǎng)站建設(shè)|瓊中網(wǎng)站建設(shè)|?诰⒕W(wǎng)|三亞精英網(wǎng)|文昌精英網(wǎng)|瓊海精英網(wǎng)|陵水精英網(wǎng)|儋州精英網(wǎng)|萬寧精英網(wǎng)|澄邁精英網(wǎng)|海微通
合作伙伴 企業(yè)發(fā)展 企業(yè)文化 聯(lián)系我們 在線訂購 網(wǎng)站地圖 返回首頁手機(jī)版
海口世紀(jì)華聯(lián)科技有限公司2025版權(quán)所有 24小時服務(wù)熱線:13807590485   歡迎來電咨詢
地址:海南省.?谑.海甸二東路環(huán)惠大廈6樓(南寶路明都大廈107#) 公司電話:0898-31568080 31568060 QQ:85398489
全國合作聯(lián)盟分布:海南海口 四川成都 湖北武漢 湖南長沙 安徽合肥 廣東深圳 山西太原 西藏拉薩
技術(shù)服務(wù): E_mail:server@www.0118yy.com 服務(wù)訂購:E_mail:server@www.0118yy.com 在線客服邀請 瓊ICP備10201086號-15
推廣關(guān)鍵字:海南網(wǎng)站建設(shè)公司,海南網(wǎng)站制作公司,海南網(wǎng)站開發(fā)公司,海南微信開發(fā)公司,海南微信公眾號開發(fā)公司,海南微信公眾號代運(yùn)營公司,海南模板網(wǎng)站制作公司,海南網(wǎng)頁設(shè)計(jì)公司,海南網(wǎng)絡(luò)公司
黄色草逼视频_久久夜夜视频_亚洲国产成人久久午夜_三级在线播放
欧美精品一二三区| 亚洲自拍都市欧美小说| 日本伊人色综合网| 91蜜桃视频在线| 亚洲国产精品成人综合| 国产在线不卡视频| 日韩精品一区二区三区四区视频| 亚洲成人7777| 欧美日韩五月天| 亚洲国产欧美在线| 欧美色综合久久| 亚洲成人综合网站| 91精品婷婷国产综合久久| 亚洲国产成人tv| 欧美日本韩国一区| 蜜臀久久99精品久久久久久9| 在线不卡的av| 久久国产精品72免费观看| 欧美成人三级在线| 国内精品第一页| 中文字幕欧美激情| www.亚洲精品| 亚洲国产成人91porn| 56国语精品自产拍在线观看| 另类小说综合欧美亚洲| 精品国产乱子伦一区| 国产一区二区调教| 国产精品久久久久久福利一牛影视| av不卡免费在线观看| 亚洲综合丝袜美腿| 日韩色在线观看| 国产99久久精品| 夜夜嗨av一区二区三区| 日韩视频一区二区在线观看| 国产精品一二二区| 亚洲欧美一区二区三区久本道91 | 91视频在线观看免费| 亚洲欧美视频在线观看| 欧美日韩国产成人在线91| 蜜桃av一区二区在线观看 | 久久久久久久久免费| 成人三级伦理片| 亚洲黄色av一区| 日韩欧美激情在线| 96av麻豆蜜桃一区二区| 奇米影视一区二区三区| 国产精品伦一区二区三级视频| 在线一区二区三区四区| 久久精品噜噜噜成人88aⅴ| 亚洲欧美中日韩| 日韩一卡二卡三卡四卡| 成+人+亚洲+综合天堂| 欧美aaaaa成人免费观看视频| 国产精品入口麻豆原神| 欧美精品色一区二区三区| 成人久久久精品乱码一区二区三区| 亚洲超丰满肉感bbw| 日本一区二区免费在线| 在线播放亚洲一区| 99国产精品久久久久久久久久 | 欧美激情在线观看视频免费| 欧美日韩免费一区二区三区 | www国产成人| 欧美视频你懂的| 99热精品国产| 国产91在线观看丝袜| 捆绑紧缚一区二区三区视频| 亚洲一卡二卡三卡四卡五卡| 国产精品国产三级国产三级人妇 | 天天亚洲美女在线视频| 亚洲欧美在线视频| 久久久久久久久久电影| 91精品黄色片免费大全| 欧美亚洲日本国产| 99久久伊人精品| 成人黄色一级视频| 国产传媒日韩欧美成人| 看电视剧不卡顿的网站| 日韩国产精品91| 亚洲精品少妇30p| 亚洲同性gay激情无套| 国产喷白浆一区二区三区| 欧美精品一区二区三区高清aⅴ| 欧美久久久久久久久久| 欧美网站大全在线观看| 色av成人天堂桃色av| 99久久免费精品高清特色大片| 国产91丝袜在线播放九色| 国产一区欧美一区| 国产乱码精品一区二区三区五月婷| 日韩二区在线观看| 青青草一区二区三区| 美女国产一区二区三区| 蜜臀av一区二区| 久久成人免费网| 国产尤物一区二区| 国产成人在线免费观看| 国产suv精品一区二区6| www.在线成人| 色香蕉成人二区免费| 欧美在线视频全部完| 欧美日韩精品一区二区三区四区| 欧美色电影在线| 在线电影一区二区三区| 91精品国产色综合久久不卡电影 | 日本中文字幕一区二区有限公司| 亚洲高清免费观看高清完整版在线观看| 亚洲另类在线视频| 亚洲成人一区二区| 青青草97国产精品免费观看 | 性久久久久久久久| 免费在线观看一区二区三区| 久久电影网电视剧免费观看| 国产在线国偷精品产拍免费yy| 国产成人a级片| 色综合久久99| 这里只有精品免费| 久久久不卡网国产精品二区| 国产精品久久久久一区| 亚洲.国产.中文慕字在线| 精品一区二区三区在线播放| 成人av电影免费观看| 欧美色综合影院| 26uuu精品一区二区| 亚洲另类春色校园小说| 日韩黄色免费电影| 成人蜜臀av电影| 91精品福利在线一区二区三区 | 欧美日韩国产片| 久久蜜桃香蕉精品一区二区三区| 中文字幕亚洲欧美在线不卡| 日韩影院免费视频| 不卡的电影网站| 日韩一区二区影院| 亚洲四区在线观看| 精品在线观看免费| 91激情五月电影| 久久久久久久久久久99999| 一区二区三区波多野结衣在线观看| 老司机精品视频导航| 在线观看一区不卡| 久久精品欧美日韩| 男女男精品网站| 色国产综合视频| 欧美—级在线免费片| 奇米在线7777在线精品| 欧美这里有精品| 国产精品污污网站在线观看| 蜜臀av一区二区在线观看 | 激情文学综合丁香| 欧美日韩在线三区| 中文字幕日韩一区| 国产九色精品成人porny| 欧美一区二区三区视频在线观看| 国产精品久久久久久久久动漫| 激情久久五月天| 欧美一区二区三区四区久久| 一区二区三区在线视频观看58| 成人精品小蝌蚪| 久久久午夜精品| 麻豆精品久久精品色综合| 欧美日韩一级视频| 一区二区三区在线观看国产| youjizz久久| 国产精品乱人伦中文| 国产在线一区观看| 精品国产乱码久久久久久影片| 日韩高清不卡一区| 欧美日韩精品一区二区三区蜜桃| 亚洲自拍偷拍av| 一本一本大道香蕉久在线精品 | 国产成人亚洲精品青草天美| 精品久久久久久久久久久久久久久久久| 亚洲午夜影视影院在线观看| 91久久香蕉国产日韩欧美9色| 亚洲特级片在线| 一本色道久久加勒比精品 | 亚洲综合色成人| 91黄视频在线观看| 亚洲自拍偷拍图区| 欧美日产在线观看| 日韩高清不卡一区二区三区| 91精品啪在线观看国产60岁| 午夜精品影院在线观看| 91精品国模一区二区三区| 奇米色一区二区| 久久色视频免费观看| 成人一区二区三区视频| 国产精品免费人成网站| 色婷婷久久久久swag精品| 亚洲一区二区偷拍精品| 在线91免费看| 国产在线精品不卡| 国产精品久线观看视频| 色一情一乱一乱一91av| 日韩精品三区四区| 久久久久久一级片| 99精品国产热久久91蜜凸| 亚洲成人在线观看视频| 精品欧美一区二区在线观看|