Example #1
0
    def testTwoTags(self):
        """Places 3 videos on the server:
           one with two tags: 'tag1' and 'tag2'
           one with the tag 'tag1'
           one with the tag 'tag2'
           
           the kalutra object with two tags is provided to 'getRelated'
           
           we expect to get all three objects back from getRelated
        """

        #MediaEntry1
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName('rfa.kaltura.GetRelatedTests.testTwoTags1')
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry.setTags(u'tag1 tag2')
        mediaEntry1 = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry1.getId())

        #MediaEntry2
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName('rfa.kaltura.GetRelatedTests.testTwoTags2')
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry.setTags(u'tag1')
        mediaEntry2 = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry2.getId())

        #MediaEntry3
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName('rfa.kaltura.GetRelatedTests.testTwoTags3')
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry.setTags(u'tag2')
        mediaEntry3 = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry3.getId())

        self.readyWait(mediaEntry1.getId())
        self.readyWait(mediaEntry2.getId())
        self.readyWait(mediaEntry3.getId())

        #do it.
        results = kutils.getRelated(mediaEntry1)
        self.assertEqual(
            3, len(results),
            "Did not get expected # of objects back from kutils.getRelated()")
    def test_list_utf8_search(self):
        """Get a list of videos based on a tag search containing unicode"""
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName('pytest.MediaTests.test_UTF8_tags')
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry.setTags(self.test_unicode)
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry.getId())

        self.readyWait(mediaEntry.getId())

        #find it!
        kfilter = KalturaMediaEntryFilter()
        kfilter.setTagsLike(self.test_unicode)
        result = self.client.media.list(filter=kfilter)

        self.assertEqual(
            1,
            len(result.objects),
            msg="Did not get expected number of objects back from result")

        mediaResult = result.objects[0]
        self.assertEqual(mediaEntry.getId(),
                         mediaResult.getId(),
                         msg="Did not get expected media object from result")
Example #3
0
    def test_createAncestorCategoryRule(self):
        from KalturaClient.Plugins.Core import KalturaMediaEntry, KalturaMediaType
        from KalturaClient.Plugins.Core import KalturaPlaylistFilter
        from KalturaClient.Plugins.Core import KalturaCategory

        referenceId = 'pytest.DynamicPlaylistTests.test_createAncestorCategoryRule'

        #create category entry hierarchy
        topCategory = KalturaCategory()
        topCategory.setName("TopCategory")
        topCategory = self.client.category.add(topCategory)
        self.addCleanup(self.client.category.delete, topCategory.getId())

        subCategory = KalturaCategory()
        subCategory.setName("SubCategory")
        subCategory.setParentId(topCategory.getId())
        subCategory = self.client.category.add(subCategory)
        self.addCleanup(self.client.category.delete, subCategory.getId())

        #create a video, and assign it to subCategory.
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName(referenceId)
        mediaEntry.setReferenceId(referenceId)
        mediaEntry.setCategoriesIds(subCategory.getId())
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry.getId())

        #create a playlist
        kplaylist = KalturaPlaylist()
        kplaylist.setName(referenceId)
        kplaylist.setPlaylistType(
            KalturaPlaylistType(KalturaPlaylistType.DYNAMIC))
        kplaylist.setTotalResults(10)
        kplaylist.setReferenceId(referenceId)

        #Create A Filter - use Top Level Category
        kFilter = KalturaPlaylistFilter()
        kFilter.setCategoryAncestorIdIn(topCategory.getId())
        kplaylist.setFilters([kFilter])

        kplaylist = self.client.playlist.add(kplaylist)
        self.addCleanup(self.client.playlist.delete, kplaylist.getId())

        print "Waiting for Media Entry to be 'Ready'"
        sleeptime = 5
        mediaEntry = self.client.media.get(mediaEntry.getId())
        while mediaEntry.getStatus().getValue() != '2':
            print "media entry status is %s " % (
                mediaEntry.getStatus().getValue())
            time.sleep(sleeptime)
            mediaEntry = self.client.media.get(mediaEntry.getId())

        results = self.client.playlist.execute(kplaylist.getId(), kplaylist)

        self.assertEqual(len(results), 1)
        self.assertEqual(results[0].getName(), referenceId)
Example #4
0
    def createEntry(self):
        entry = KalturaMediaEntry()
        entry.mediaType = KalturaMediaType.VIDEO
        entry.name = self.uniqid('test_')
        entry.description = self.uniqid('test ')
        entry.tags = self.uniqueTag

        entry = self.client.media.add(entry)

        return entry
 def test_utf8_name(self):
     test_unicode = '\u03dd\xf5\xf6'  #an odd representation of the word 'FOO'
     mediaEntry = KalturaMediaEntry()
     mediaEntry.setName('pytest.MediaTests.test_UTF8_name'+test_unicode)
     mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
     ulFile = getTestFile('DemoVideo.flv')
     uploadTokenId = self.client.media.upload(ulFile)
     
     #this will throw an exception if fail.
     mediaEntry = self.client.media.addFromUploadedFile(mediaEntry, uploadTokenId)
         
     self.addCleanup(self.client.media.delete, mediaEntry.getId())
Example #6
0
    def test_updateStaticContent(self):

        from KalturaClient.Plugins.Core import KalturaMediaEntry, KalturaMediaType

        mediaEntry1 = KalturaMediaEntry()
        mediaEntry1.setName('pytest.PlaylistTests.test_updateStaticContent1')
        mediaEntry1.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry1 = self.client.media.addFromUploadedFile(
            mediaEntry1, uploadTokenId)

        self.addCleanup(self.client.media.delete, mediaEntry1.getId())

        mediaEntry2 = KalturaMediaEntry()
        mediaEntry2.setName('pytest.PlaylistTests.test_updateStaticContent2')
        mediaEntry2.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry2 = self.client.media.addFromUploadedFile(
            mediaEntry2, uploadTokenId)

        self.addCleanup(self.client.media.delete, mediaEntry2.getId())

        #playlistContent is simply a comma separated string of id's ?
        playlistContent = u','.join([mediaEntry1.getId(), mediaEntry2.getId()])

        kplaylist = KalturaPlaylist()
        kplaylist.setName('pytest.PlaylistTests.test_updateStaticContent')
        kplaylist.setPlaylistType(
            KalturaPlaylistType(KalturaPlaylistType.STATIC_LIST))

        kplaylist.setPlaylistContent(playlistContent)
        kplaylist = self.client.playlist.add(kplaylist)

        self.addCleanup(self.client.playlist.delete, kplaylist.getId())

        #fetch the playlist from server and test it's content.
        resultPlaylist = self.client.playlist.get(kplaylist.getId())
        self.assertEqual(resultPlaylist.playlistContent, playlistContent)
    def test_utf8_name(self):
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName(u'pytest.MediaTests.test_UTF8_name' +
                           self.test_unicode)
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)

        #this will throw an exception if fail.
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)

        self.addCleanup(self.client.media.delete, mediaEntry.getId())
Example #8
0
    def _AdvancedMultiRequestExample(self):
        # this is a separate, local client - not 'self.client'
        client = KalturaClient(
            self.config)  # matches line 154 in PythonTester.py
        client.startMultiRequest()

        from KalturaClient.Plugins.Core import KalturaMixEntry
        from KalturaClient.Plugins.Core import KalturaEditorType

        # Request 1
        ks = client.session.start(ADMIN_SECRET, USER_NAME,
                                  KalturaSessionType.ADMIN, PARTNER_ID, 86400,
                                  "")
        # for the current multi request, the result of the first call will be
        # used as the ks for next calls
        client.setKs(ks)

        mixEntry = KalturaMixEntry()
        mixEntry.setName(".Net Mix %s" % (testString, ))
        mixEntry.setEditorType(KalturaEditorType.SIMPLE)

        # Request 2
        mixEntry = client.mixing.add(mixEntry)

        # Request 3
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = client.media.upload(ulFile)

        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName("Media Entry For Mix %s" % (testString, ))
        mediaEntry.setMediaType(KalturaMediaType.VIDEO)

        # Request 4
        mediaEntry = client.media.addFromUploadedFile(mediaEntry,
                                                      uploadTokenId)

        # Request 5
        client.mixing.appendMediaEntry(mixEntry.id, mediaEntry.id)

        response = client.doMultiRequest()

        for subResponse in response:
            if isinstance(subResponse, KalturaException):
                self.fail("Error occurred: " + subResponse.message)

        # when accessing the response object we will use an index and not the
        # response number (response number - 1)
        assert (isinstance(response[1], KalturaMixEntry))
        mixEntry = response[1]

        print("The new mix entry id is: {}".format(mixEntry.id))
 def test_createRemote(self):
     mediaEntry = KalturaMediaEntry()
     mediaEntry.setName('pytest.MediaTests.test_createRemote')
     mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
         
     ulFile = getTestFile('DemoVideo.flv')
     uploadTokenId = self.client.media.upload(ulFile)            
                  
     mediaEntry = self.client.media.addFromUploadedFile(mediaEntry, uploadTokenId)
     
     self.assertIsInstance(mediaEntry.getId(), str)
     
     #cleanup
     self.client.media.delete(mediaEntry.id)
Example #10
0
def kupload(FileObject, mediaEntry=None):
    """Provide an ATCTFileContent based object
       Upload attached contents to Kaltura
       Currently Treats all objects as 'videos' - 
         this should change when other kaltura media types are implemented.
       If MediaEntry is provided, the uploaded video is associated with that media entry
    """
    usingEntitlements = False

    #this check can be done better
    if not hasattr(FileObject, 'get_data'):
        print "nothing to upload to kaltura from object %s" % (
            str(FileObject), )
        return 1

    #XXX Configure Temporary Directory and name better
    #XXX Turn into a file stream from context.get_data to avoid write to file...
    tempfh = open('/tmp/tempfile', 'wr')
    tempfh.write(FileObject.get_data())
    tempfh.close()

    #XXX Not A good idea if we plan on not using the ZODB
    name = FileObject.Title()
    ProviderId = FileObject.UID()

    (client, session) = kconnect()

    if mediaEntry is None:
        #create an entry
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName(name)
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        mediaEntry.searchProviderId = ProviderId
        mediaEntry.setReferenceId = ProviderId
    uploadTokenId = client.media.upload(file('/tmp/tempfile', 'rb'))

    os.remove('/tmp/tempfile')

    catIds = mediaEntry.getCategoriesIds()
    if catIds is not NotImplemented:
        catIds = catIds.split(',')
        mediaEntry.setCategoriesIds(NotImplemented)
    else:
        catIds = []

    mediaEntry = client.media.addFromUploadedFile(mediaEntry, uploadTokenId)
    KalturaLoggerInstance.log("uploaded.  MediaEntry %s" %
                              (mediaEntry.__repr__()))
    return mediaEntry
Example #11
0
    def __init__(self, context):

        self.mediaEntry = KalturaMediaEntry()
        directlyProvides(self.mediaEntry, IKalturaMediaEntry)

        self.mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        self.mediaEntry.setReferenceId(context.UID())

        self.mediaEntry.setName(context.title)

        #set Description
        self.mediaEntry.setDescription(context.description)
        #Set Tags
        #make a comma delimited string, and pass that in.
        tags = ','.join([t for t in context.tags if t])
        self.mediaEntry.setTags(tags)
Example #12
0
def kcreateVideo(context):
    """given a plone content-type of kalturavideo,
       create a video entry on Kaltura
       The mediaEntry ReferenceId is set to the UID of the plone object to tie them together
    """
    mediaEntry = KalturaMediaEntry()
    mediaEntry.setName(context.Title())
    mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
    mediaEntry.searchProviderId = context.UID() #XXX Is this correct?  We assign this to the file UID stored in plone.
    
    #kaltura referenceId == plone UID
    mediaEntry.setReferenceId(context.UID())
    
    if len(context.getCategories()):
        mediaEntry.setCategoriesIds(','.join([c for c in context.getCategories() if c]))
        
    if len(context.getTags()):
        mediaEntry.setTags(','.join([t for t in context.getTags() if t]))
    
    return mediaEntry
    def test_addmedia(self):
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)

        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName("Media Entry Using Python Client ver %s" %
                           (API_VERSION, ))
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)

        # serve
        DATA_ENTRY_CONTENT = 'bla bla bla'
        dataEntry = KalturaDataEntry()
        dataEntry.setName('test data entry')
        dataEntry.setDataContent(DATA_ENTRY_CONTENT)
        addedDataEntry = self.client.data.add(dataEntry)
        serveUrl = self.client.data.serve(addedDataEntry.id)
        f = urllib.urlopen(serveUrl)
        assert (DATA_ENTRY_CONTENT == f.read())
Example #14
0
def change_mediaentry_objects(client, filename, newdomain, subdomains):
    """ change mediaEntry objects to new domain """

    with open(filename, "r") as csvfile:
        logging.debug("parsing " + filename)
        line_count = file_len(filename)
        change_data = reader(csvfile)
        for user in track(change_data,
                          total=line_count,
                          description="Updating mediaEntry objects"):
            logging.debug(user)
            new_id = exchange_domain(user[0], newdomain, subdomains)
            for media_entry in user[1:]:
                if media_entry == "":
                    continue
                update_body = KalturaMediaEntry()
                update_body.userId = new_id
                try:
                    client.media.update(media_entry, update_body)
                except Exception as error:
                    logging.error("error: ", exc_info=error)
Example #15
0
    def test_addStaticToExistingEmpty(self):
        from KalturaClient.Plugins.Core import KalturaMediaEntry, KalturaMediaType
        referenceId = 'pytest.PlaylistTests.test_addStaticToExistingEmpty'
        #create empty playlist on server
        kplaylist = KalturaPlaylist()
        kplaylist.setName(referenceId)
        kplaylist.setReferenceId(referenceId)
        kplaylist.setPlaylistType(
            KalturaPlaylistType(KalturaPlaylistType.STATIC_LIST))
        kplaylist = self.client.playlist.add(kplaylist)
        self.addCleanup(self.client.playlist.delete, kplaylist.getId())

        playlistId = kplaylist.getId()

        #now, add some media

        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName(referenceId)
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry.getId())

        #add to (update) existing playlist
        newplaylist = KalturaPlaylist()
        newplaylist.setReferenceId(referenceId)

        playlistContent = u','.join([mediaEntry.getId()])
        newplaylist.setPlaylistContent(playlistContent)

        self.client.playlist.update(playlistId, newplaylist)

        #check it.
        resultPlaylist = self.client.playlist.get(playlistId)

        self.assertEqual(playlistContent, resultPlaylist.getPlaylistContent())
    def test_updateContent(self):
        mediaEntry = KalturaMediaEntry()
        mediaEntry.setName('pytest.MediaTests.test_updateContent')
        mediaEntry.setMediaType(KalturaMediaType(KalturaMediaType.VIDEO))
        ulFile = getTestFile('DemoVideo.flv')
        uploadTokenId = self.client.media.upload(ulFile)
        mediaEntry = self.client.media.addFromUploadedFile(
            mediaEntry, uploadTokenId)
        self.addCleanup(self.client.media.delete, mediaEntry.getId())
        self.readyWait(mediaEntry.getId())

        #now, change the content on the mediaEntry to another video file
        token = KalturaUploadToken()
        token = self.client.uploadToken.add(token)
        self.addCleanup(self.client.uploadToken.delete, token.getId())
        ulFile = getTestFile('countdown.mp4')
        token = self.client.uploadToken.upload(token.getId(), ulFile)

        #create a resource
        resource = KalturaUploadedFileTokenResource()
        resource.setToken(token.getId())

        #DO THE TEST
        newMediaEntry = self.client.media.updateContent(
            mediaEntry.getId(), resource)

        #must approve it...
        newMediaEntry = self.client.media.approveReplace(newMediaEntry.getId())
        self.readyWait(newMediaEntry.getId())

        #make sure everything but content is the same
        self.assertEqual(mediaEntry.getId(), newMediaEntry.getId())
        self.assertEqual(mediaEntry.getName(), newMediaEntry.getName())

        self.assertNotEqual(mediaEntry.getDuration(),
                            newMediaEntry.getDuration())