예제 #1
0
def get_amf(url, service, *args):
    # AMF remoting
    #gateway = RemotingService(url, pyamf.AMF0, user_agent='Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31')

    r = None
    for i in range(10):
        DBG('attempt', i)
        squid = tm.choose_proxy(url)
        DBG('proxy', squid['name'])

        gateway = RemotingService(url, pyamf.AMF0, user_agent='Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31', opener=urlopen_with_timeout)
        #gateway.setProxy('10.8.0.10:8888')
        gateway.setProxy('%s:%s' % (squid['ip'], int(squid['port'])))

        service_handle = gateway.getService(service)
        try:
            r = service_handle(*args)
            if r == '':
                print 'amf empty result', url, service, args
                ERR('amf empty result', url, service, args)
                continue

            break
        except:
            print 'amf failure', url, service, args, traceback.format_exc()
            ERR('amf failure', url, service, args, traceback.format_exc()) 

    if r == None:
        ERR(' *************** retry count exceeded', url, service, args)

    return r
예제 #2
0
 def findMediaById(self, playerId, videoPlayer, publisherId, userAgent, amfVersion = pyamf.AMF3, **kwargs):
     client = RemotingService(self._amfUrl, user_agent = userAgent, amf_version = amfVersion)
     for k, v in kwargs.iteritems():
         if k == 'headers':
             for header in v:
                 client.addHTTPHeader(header[0], header[1])
         if k == 'proxy':
             client.setProxy(v)
     service = client.getService(self._serviceName)
     return service.findMediaById(self._token, playerId, videoPlayer, publisherId)
예제 #3
0
 def getBrightCoveData(self, playerId, userAgent, amfVersion = pyamf.AMF3, **kwargs):
     client = RemotingService(self._amfUrl, user_agent = userAgent, amf_version = amfVersion)
     for k, v in kwargs.iteritems():
         if k == 'headers':
             for header in v:
                 client.addHTTPHeader(header[0], header[1])
         if k == 'proxy':
             client.setProxy(v)
     service = client.getService(self._serviceName)
     return service.getProgrammingForExperience(self._token, playerId)
예제 #4
0
 def getBrightCoveData(self,
                       playerId,
                       userAgent,
                       amfVersion=pyamf.AMF3,
                       **kwargs):
     client = RemotingService(self._amfUrl,
                              user_agent=userAgent,
                              amf_version=amfVersion)
     for k, v in kwargs.iteritems():
         if k == 'headers':
             for header in v:
                 client.addHTTPHeader(header[0], header[1])
         if k == 'proxy':
             client.setProxy(v)
     service = client.getService(self._serviceName)
     return service.getProgrammingForExperience(self._token, playerId)
예제 #5
0
 def findMediaById(self,
                   playerId,
                   videoPlayer,
                   publisherId,
                   userAgent,
                   amfVersion=pyamf.AMF3,
                   **kwargs):
     client = RemotingService(self._amfUrl,
                              user_agent=userAgent,
                              amf_version=amfVersion)
     for k, v in kwargs.iteritems():
         if k == 'headers':
             for header in v:
                 client.addHTTPHeader(header[0], header[1])
         if k == 'proxy':
             client.setProxy(v)
     service = client.getService(self._serviceName)
     return service.findMediaById(self._token, playerId, videoPlayer,
                                  publisherId)
예제 #6
0
 def get_clip_info(self, contentID, url):
  serviceUrl = "http://c.brightcove.com/services/messagebroker/amf?playerId=" + self.urls['playerID']
  serviceName = "com.brightcove.experience.ExperienceRuntimeFacade"
  proxy = Proxy()
  client = RemotingService(serviceUrl, amf_version=3,
                           user_agent=webpage().fullagent('chrome'))
  client.setProxy(proxy.httpProxyString, type='http')
  service = client.getService(serviceName)

  pyamf.register_class(ViewerExperienceRequest,
                       'com.brightcove.experience.ViewerExperienceRequest')
  pyamf.register_class(ContentOverride,
                       'com.brightcove.experience.ContentOverride')

  content_override = ContentOverride(contentId=float("nan"),
                                     contentRefId=str(contentID))
  viewer_exp_req = ViewerExperienceRequest(url, [content_override],
                                           int(self.urls['playerID']), "")

  response = service.getDataForExperience(self.urls['const'], viewer_exp_req)

  #self._printResponse(response)
  return response['programmedContent']['videoPlayer']['mediaDTO']['renditions']