twitter视频下载方式

zhaobeng zhaobeng     2022-09-06     443

关键词:

本文是传入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()

你认为从 twitter 获得所有转推的最佳方式是啥

】你认为从twitter获得所有转推的最佳方式是啥【英文标题】:whatinyouropinionwouldbebestwaytogetalltheretweetsfromtwitter你认为从twitter获得所有转推的最佳方式是什么【发布时间】:2009-09-2716:23:20【问题描述】:可能在亚马逊ec2上运行PHP...... 查看详情

SLComposeViewController 对 Facebook 和 Twitter 的处理方式不同?

】SLComposeViewController对Facebook和Twitter的处理方式不同?【英文标题】:SLComposeViewControllerdismissesdifferentlyforFacebookandTwitter?【发布时间】:2012-11-0609:21:39【问题描述】:我有一些如下所示的社交分享代码:SLComposeViewController*composer=[S... 查看详情

结合 AngularJS 和 Twitter Bootstrap 的最佳方式

】结合AngularJS和TwitterBootstrap的最佳方式【英文标题】:BestwaytocombineAngularJSandTwitterBootstrap【发布时间】:2014-04-2017:31:54【问题描述】:我想将AngularJS和TwitterBootstrap组合成一个全新的网络应用程序。好像是AngularJSdirectiveshavebeenwritt... 查看详情

如何使 twitter 在页面上嵌入中心?

】如何使twitter在页面上嵌入中心?【英文标题】:HowdoImaketwitterembedcenteronpage?【发布时间】:2018-04-1803:08:25【问题描述】:我正在尝试以这样的方式嵌入twitter视频和twit,以便它们在页面上居中并且还占据整个容器宽度(my-contain... 查看详情

twitter bootstrap 下拉菜单的对齐方式

】twitterbootstrap下拉菜单的对齐方式【英文标题】:alignmentfortwitterbootstrapdropdown-menu【发布时间】:2013-02-1310:39:08【问题描述】:我设计了一个带有下拉菜单的引导导航栏http://jsfiddle.net/yabasha/fex8N/3/<navclass="navbarnavbar-inverse"><... 查看详情

以简单的方式或工具在 Twitter(机器人)中自动回复推文?

】以简单的方式或工具在Twitter(机器人)中自动回复推文?【英文标题】:Auto-ReplyTweetsinTwitter(bot)insimplewayortools?【发布时间】:2011-08-1711:32:43【问题描述】:是任何可能且简单的方法来制作一个twitter机器人,它将在特定时间间... 查看详情

Twitter 分享:如何在视频中显示链接 [内有示例]

】Twitter分享:如何在视频中显示链接[内有示例]【英文标题】:Twittershare:Howtoshowalinkonvideo[exampleinside]【发布时间】:2021-02-0719:49:23【问题描述】:如何在Twitter上共享的视频上显示浮动链接。如下图:https://twitter.com/TheNationalNews/s... 查看详情

如何在 android 中使用 Twitter kit 3 在 Twitter 中分享视频?

】如何在android中使用Twitterkit3在Twitter中分享视频?【英文标题】:HowtosharevideoinTwitterusingTwitterkit3intheandroid?【发布时间】:2018-03-2111:01:52【问题描述】:去除织物后,现在在android中使用Twitterkit3案例:我需要在不打开TwitterComposer... 查看详情

Twitter 视频嵌入自动播放

】Twitter视频嵌入自动播放【英文标题】:TwitterVideoEmbedautoplay【发布时间】:2018-08-0522:28:03【问题描述】:我已经查看了堆栈上的某些资源,但有些没有答案,也没有处于非活动状态。当一些推特视频到达我的网站时,我会想要... 查看详情

Twitter 状态时间戳帮助

】Twitter状态时间戳帮助【英文标题】:Twitterstatusestimestamphelp【发布时间】:2010-09-2818:08:40【问题描述】:我正在尝试在我的博客上显示Twitter状态,但是我无法获得每个状态的创建时间来显示我想要的方式。这是它现在的打印方... 查看详情

将 facebook、twitter 和 Google+ 共享按钮放在 html 中的最佳方式? [关闭]

】将facebook、twitter和Google+共享按钮放在html中的最佳方式?[关闭]【英文标题】:Bestwaytoputfacebook,twitterandGoogle+sharebuttonsinhtml?[closed]【发布时间】:2013-03-0316:01:17【问题描述】:我在google中搜索,我看到了在html中放置共享按钮的... 查看详情

使用 Twitter Bootstrap 切换单选按钮,获取表单输入的简洁方式是啥?

】使用TwitterBootstrap切换单选按钮,获取表单输入的简洁方式是啥?【英文标题】:WithTwitterBootstraptoggleradiobuttons,what\'sthecleanwaytogetforminput?使用TwitterBootstrap切换单选按钮,获取表单输入的简洁方式是什么?【发布时间】:2012-07-13... 查看详情

iphone以编程方式在twitter上关注用户(代码片段)

我想按下按钮点击Twitter用户。我使用共享工具包跟随我使用oauth方法。但总是我得到这个错误。“error”:“无法通过OAuth进行身份验证。”,“请求”:“/1/friendships/create/priyankav89.json”然后我试着自己实现它NSURL*url=[NSURLURLWithS... 查看详情

使用 rvest 在 Twitter 中抓取用户视频

】使用rvest在Twitter中抓取用户视频【英文标题】:ScrapingusersvideoinTwitterwithrvest【发布时间】:2018-10-2513:36:27【问题描述】:我正在使用rvest抓取网络中的一些网络静态元素。但是,我无法抓取动态内容。比如下面videopost中如何抓... 查看详情

从 twitter 找出 Flume 下载的推文的位置

】从twitter找出Flume下载的推文的位置【英文标题】:Findingoutthelocationoftweetsdownloadedbyflumefromtwitter【发布时间】:2014-06-1920:28:18【问题描述】:我使用了一些关键字并使用flume从twitter下载了推文。示例数据如下所示"filter_level":"mediu... 查看详情

HTML5 视频播放器不适用于 Twitter 视频

】HTML5视频播放器不适用于Twitter视频【英文标题】:HTML5videoplayernotworkingforTwittervideos【发布时间】:2021-11-2702:48:13【问题描述】:我正在通过Twitterapi检索推文并尝试嵌入他们的视频附件。嵌入代码:<videocontrols=""><sourcesrc=... 查看详情

有没有办法在 iframe 中嵌入 Facebook/Twitter 帖子/视频?

】有没有办法在iframe中嵌入Facebook/Twitter帖子/视频?【英文标题】:IsthereawaytoembedFacebook/Twitterposts/videosinaniframe?【发布时间】:2021-03-1210:22:37【问题描述】:我正在尝试找到一种简单的方法来将Facebook和Twitter帖子/视频嵌入到我的... 查看详情

在 Facebook、Twitter 和电子邮件上捕获视频共享

】在Facebook、Twitter和电子邮件上捕获视频共享【英文标题】:capturedvideosharingonfacebook,twitterandemail【发布时间】:2013-10-2204:34:41【问题描述】:我想拍摄一段视频,然后在一些社交网站和电子邮件上分享,所以我已经拍摄了视频... 查看详情