zoukankan      html  css  js  c++  java
  • Twitter视频下载方式

    本文是传入Twitter视频播放链接通过http://twdown.net/网站获得Twitter视频的MP3,MP4下载链接用YouTube-dl下载Twitter视频

    #coding=utf-8
    import os
    import re
    import sys
    import time
    import datetime
    import requests
    # import pdfkit
    import hashlib
    from scrapy.http import Request, HtmlResponse
    from scrapy.selector import HtmlXPathSelector
    from pymongo import MongoClient
    import smtplib
    import urlparse
    import json
    import redis

    from gevent.pool import Pool
    from gevent import monkey
    monkey.patch_all()

    reload(sys)
    sys.setdefaultencoding('utf-8')

    def get_url(data):
           proxies={'https':'127.0.0.1:8123'}
           url = 'http://twdown.net/download.php/'
           print data
           # data = {
           # 'URL':'https://twitter.com/ciamemewarfare/status/839957301981220864'
           # }
           headers={
           'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
           'Accept-Encoding':'gzip, deflate',
           'Accept-Language':'zh-CN,zh;q=0.8',
           'Cache-Control':'max-age=0',
           'Content-Length':'73',
           'Content-Type':'application/x-www-form-urlencoded',
            # 'Cookie':'__cfduid=d5949cf9b7f7659555bf30bd1176139981497940317; td_cookie=18446744071807429655; _ga=GA1.2.2022387890.1497940226;     _gid=GA1.2.1592134325.1497940226; _gat=1',
            # 'Cookie':'__cfduid=d31e200302b2de7c45238b596be124e011497948038; td_cookie=18446744071812537626; _ga=GA1.2.347564219.1497947962; _gid=GA1.2.1008045576.1497947962; _gat=1',
            # 'Cookie':'__cfduid=d31e200302b2de7c45238b596be124e011497948038; td_cookie=18446744071812537626; _ga=GA1.2.347564219.1497947962; _gid=GA1.2.1008045576.1497947962; _gat=1',
            # 'Cookie':'__cfduid=d5949cf9b7f7659555bf30bd1176139981497940317; td_cookie=18446744071809053771; _ga=GA1.2.2022387890.1497940226; _gid=GA1.2.1592134325.1497940226; _gat=1',
            'Cookie':'__cfduid=d5949cf9b7f7659555bf30bd1176139981497940317; td_cookie=18446744071819015387; _ga=GA1.2.2022387890.1497940226; _gid=GA1.2.1592134325.1497940226',
            'Host':'twdown.net',
            'Origin':'http://twdown.net',
            'Proxy-Connection':'keep-alive',
            'Referer':'http://twdown.net/',
            'Upgrade-Insecure-Requests':'1',
            'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
            }

            try_count = 10
            hxs = None
            while try_count:
                    print try_count
                    try:
                    #html = requests.get(url,headers=headers,proxies=proxies,verify=False).content
                    html = requests.post(url,headers=headers,proxies=proxies,data=data).content
                    response = HtmlResponse(url=url, body=html,encoding = 'utf-8')
                    # print response
                    hxs = HtmlXPathSelector(response)
                    break
            except Exception as e:
                    print e
                    time.sleep(2)
                    print try_count
                    try_count -= 1
                    return hxs,html
                    pass

    def get_download_url(p):# 通过http://twdown.net/,这个网站获得Twitter视频的MP3,MP4下载链接
                    link = 'http://twdown.net/'
                    temp = db_client.alex_movie.alex_movie_bytwitter.find_one({'_id':p})
                    title = temp['title']
                    url = temp['url']#链接
                    alex_id = temp['_id']
                    data = {}
                    data['URL'] = url
                    hxs,html = get_url(data)
                    # print html
                    mp4 = ''
                    mp3 = ''
                    download_list = hxs.select('//div[@class="col-md-8"]/table[@class="table table-condensed table-hover table-striped"]/tbody/tr')
                    for d_l in download_list:
                             d_l_td_a = d_l.select('./td/a')
                             for td_a in d_l_td_a:
                                       td_a_href = ''.join(td_a.select('./@href').extract()).strip()
                                       if '.mp4' in td_a_href:
                                                td_a_mp4 = td_a_href
                                                mp4 = td_a_mp4
                                                print td_a_mp4
                                                pass
                                       if 'mp3.' in td_a_href:
                                                td_a_mp3 = urlparse.urljoin(link,td_a_href)
                                                mp3 = td_a_mp3
                                                print td_a_mp3
                                                pass
                                       pass
                              pass
                    if not mp4 == '':
                            db_client.alex_movie.alex_movie_bytwitter.update({'_id':temp['_id']},{'$set':{'mp4_url':mp4,'is_download':True}})
                            pass
                    if not mp3 == '':
                            db_client.alex_movie.alex_movie_bytwitter.update({'_id':temp['_id']},{'$set':{'mp3_url':mp3,'is_download':True}})
                            pass
                    pass

    def download(p): # 用YouTube-dl下载视频实体
          movie_site = '/mnt/parastor/data/downdata/videos/usatoday_mp4/'
          temp = db_client.alex_movie.alex_movie_bytwitter.find_one({'_id':p})
          title = temp['title']#
          url = temp['url']#链接
          alex_id = temp['_id']
          video_path = os.path.join(movie_site,'%s.mp4'%alex_id.encode('utf-8'))
          try:
              re_num = 10
              while re_num:
                     # youtube-dl --proxy socks5://127.0.0.1:1080 https://www.youtube.com/watch?v=lokN6d1GaK4
                     youtube_content = 'youtube-dl --proxy socks5://127.0.0.1:1080 -i --no-check-certificate -o "%s" -R 20 "%s"'%(video_path,url)
                     # youtube_content = 'youtube-dl --proxy socks5://127.0.0.1:1080 -i -o "%s" -R 20 "%s" --get-url'%(video_path,url)
                     a = os.system(youtube_content.encode('utf-8'))
                     # print a
                     if a ==256:
                           print '错误'
                           if re_num == 1:
                                  db_client.alex_movie.alex_movie_bytwitter.update({'_id':temp['_id']},{'$set':{'is_download':False}})
                                  pass
                            pass
                     if a ==0:
                           print '成功'
                           db_client.alex_movie.alex_movie_bytwitter.update({'_id':temp['_id']},{'$set':{'is_mp4':True,'movie_download_site':video_path,'download_time':int(time.time())}})
                           break
                           pass
                      time.sleep(3)
                      re_num -= 1
                      pass
           except Exception, e:
                 print '....'
                 pass

    if __name__ == '__main__':
          db_client = MongoClient('192.168.86.136',27017)
          while True:
              result1 = db_client.alex_movie.alex_movie_bytwitter.find({'is_download':True,'mp3_url':{'$exists':False}}).limit(1)
              # r_num =len(result1)
              if result1:
                  print '------>ok'
                  for r_1 in result1:
                          p = r_1['_id']
                          db_client.alex_movie.alex_movie_bytwitter.update({'_id':p},{'$set':{'is_download':False}})
                          # download(p)
                          get_download_url(p)
                          pass
                  pass
              else:
                   break
                   pass
              pass
              db_client.close()

  • 相关阅读:
    微软发布3款SQL Injection(SQL 注入)攻击检测工具
    TortoiseSVN 使用介绍
    windows下的Bug跟踪管理软件Bugfree的安装
    国内PHP开源建站程序一览
    55个经典开源Windows工具
    JavaScript代码格式化工具(JS代码分析必备)
    Javascript工具 使用packer来压缩JS文件
    开源UML设计工具StarUML
    看似简单的问题其实不简单
    Javascript工具 使用JSDoc建立JavaScript代码的文档
  • 原文地址:https://www.cnblogs.com/zhaobang/p/7106801.html
Copyright © 2011-2022 走看看