def trimAudioFile(self, audioFilePathName):
        """
		Example of command line:
		
		audiodownload.py filePathName e0:0:2-e e0:0:3-e
		audiodownload filePathName e0:0:2-0:10:55 e0:0:3-0:10:53
		
		:param audioFilePathName:
		:return:
		"""
        audioFileName = audioFilePathName.split(DIR_SEP)[-1]
        audioFileDir = audioFilePathName.replace(DIR_SEP + audioFileName, '')

        # initializing a partially filled DownloadVideoInfoDic with only the informations
        # required to trim the audio file
        downloadVideoInfoDic = DownloadVideoInfoDic(audioFileDir)
        downloadVideoInfoDic.addVideoInfoForVideoIndex(
            1,
            audioFileName.split('.')[0], '', audioFileName)

        # getting the extract time frames specified as command line argument
        # and adding them to the DownloadVideoInfoDic
        extractStartEndSecondsLists = self.requester.getExtractStartEndSecondsLists(
        )

        for extractStartEndSecondsList in extractStartEndSecondsLists:
            downloadVideoInfoDic.addExtractStartEndSecondsListForVideoIndex(
                1, extractStartEndSecondsList)

        # now trimming the audio file
        audioExtractor = AudioExtractor(self, audioFileDir,
                                        downloadVideoInfoDic)
        audioExtractor.extractAudioPortions(1, audioFileName,
                                            downloadVideoInfoDic)
Esempio n. 2
0
    def testAddSuppressedFileInfoForVideoIndex_existing_info_dic_file(self):
        playListName = 'test_download_vid_info_dic'

        downloadDir = AUDIO_DIR_TEST + DIR_SEP + playListName

        if not os.path.exists(downloadDir):
            os.mkdir(downloadDir)

        # deleting video info dic file
        files = glob.glob(downloadDir + DIR_SEP + '*')

        for f in files:
            os.remove(f)

        # creating new video info dic file and saving it

        dvi = DownloadVideoInfoDic(downloadDir, playListName)
        additionTimeStr = datetime.now().strftime(
            DATE_TIME_FORMAT_VIDEO_INFO_FILE)
        dvi.addVideoInfoForVideoIndex(
            1, 'title 1', 'https://youtube.com/watch?v=9iPvLx7gotk',
            'title 1.mp4')

        self.assertEqual('title 1.mp4', dvi.getVideoFileNameForVideoIndex(1))
        self.assertEqual('https://youtube.com/watch?v=9iPvLx7gotk',
                         dvi.getVideoUrlForVideoTitle('title 1'))
        self.assertEqual(additionTimeStr,
                         dvi.getVideoDownloadTimeForVideoTitle('title 1'))

        startEndSecondsList_one = [1, 10]
        startEndSecondsList_two = [15, 20]

        dvi.addExtractStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_one)
        dvi.addExtractStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_two)
        dvi.addSuppressStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_two)
        dvi.addSuppressStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_one)

        self.assertEqual([startEndSecondsList_one, startEndSecondsList_two],
                         dvi.getExtractStartEndSecondsListsForVideoIndex(1))
        self.assertEqual([startEndSecondsList_two, startEndSecondsList_one],
                         dvi.getSuppressStartEndSecondsListsForVideoIndex(1))

        HHMMSS_TimeFrameList_1_1 = ['0:23:45', '0:24:54']
        extractedMp3FileName_1_1 = 'title 1_1.mp3'
        dvi.addExtractedFileInfoForVideoIndexTimeFrameIndex(
            1, 1, extractedMp3FileName_1_1, HHMMSS_TimeFrameList_1_1)
        HHMMSS_TimeFrameList_1_2 = ['0:25:45', '1:24:54']
        extractedMp3FileName_1_2 = 'title 1_2.mp3'
        dvi.addExtractedFileInfoForVideoIndexTimeFrameIndex(
            1, 2, extractedMp3FileName_1_2, HHMMSS_TimeFrameList_1_2)

        self.assertEqual(
            HHMMSS_TimeFrameList_1_1,
            dvi.getStartEndHHMMSS_TimeFrameForExtractedFileName(
                1, extractedMp3FileName_1_1))
        self.assertEqual(
            HHMMSS_TimeFrameList_1_2,
            dvi.getStartEndHHMMSS_TimeFrameForExtractedFileName(
                1, extractedMp3FileName_1_2))

        suppressFileName = 'title_1_s.mp3'
        suppressTimeFrameList = ['0:23:45-0:24:54', '1:03:45-1:24:54']
        keptTimeFrameList = [
            '0:0:0-0:23:45', '0:24:54-1:03:45', '1:24:54-1:55:12'
        ]
        dvi.addSuppressedFileInfoForVideoIndex(1, suppressFileName,
                                               suppressTimeFrameList,
                                               keptTimeFrameList)

        self.assertEqual(suppressFileName,
                         dvi.getSuppressedFileNameForVideoIndex(1))
        self.assertEqual(
            suppressTimeFrameList,
            dvi.getSuppressedStartEndHHMMSS_TimeFramesForVideoIndex(1))
        self.assertEqual(keptTimeFrameList,
                         dvi.getKeptStartEndHHMMSS_TimeFramesForVideoIndex(1))

        dvi.saveDic()

        # creating new video info dic, reloading newly created video info dic file
        reloadedDvi = DownloadVideoInfoDic(downloadDir, playListName)

        self.assertEqual('title 1.mp4',
                         reloadedDvi.getVideoFileNameForVideoIndex(1))
        self.assertEqual('https://youtube.com/watch?v=9iPvLx7gotk',
                         reloadedDvi.getVideoUrlForVideoTitle('title 1'))
        self.assertEqual(
            additionTimeStr,
            reloadedDvi.getVideoDownloadTimeForVideoTitle('title 1'))

        self.assertEqual(
            [startEndSecondsList_one, startEndSecondsList_two],
            reloadedDvi.getExtractStartEndSecondsListsForVideoIndex(1))
        self.assertEqual(
            [startEndSecondsList_two, startEndSecondsList_one],
            reloadedDvi.getSuppressStartEndSecondsListsForVideoIndex(1))

        self.assertEqual(
            HHMMSS_TimeFrameList_1_1,
            reloadedDvi.getStartEndHHMMSS_TimeFrameForExtractedFileName(
                1, extractedMp3FileName_1_1))
        self.assertEqual(
            HHMMSS_TimeFrameList_1_2,
            reloadedDvi.getStartEndHHMMSS_TimeFrameForExtractedFileName(
                1, extractedMp3FileName_1_2))

        self.assertEqual(suppressFileName,
                         reloadedDvi.getSuppressedFileNameForVideoIndex(1))
        self.assertEqual(
            suppressTimeFrameList,
            reloadedDvi.getSuppressedStartEndHHMMSS_TimeFramesForVideoIndex(1))
        self.assertEqual(
            keptTimeFrameList,
            reloadedDvi.getKeptStartEndHHMMSS_TimeFramesForVideoIndex(1))
Esempio n. 3
0
    def testAddExtractAndSuppressStartEndSecondsList_existing_info_dic_file(
            self):
        playListName = 'test_download_vid_info_dic'

        downloadDir = AUDIO_DIR_TEST + DIR_SEP + playListName

        if not os.path.exists(downloadDir):
            os.mkdir(downloadDir)

        # deleting video info dic file
        files = glob.glob(downloadDir + DIR_SEP + '*')

        for f in files:
            os.remove(f)

        # creating new video info dic file and saving it

        dvi = DownloadVideoInfoDic(downloadDir, playListName)
        additionTimeStr = datetime.now().strftime(
            DATE_TIME_FORMAT_VIDEO_INFO_FILE)
        dvi.addVideoInfoForVideoIndex(
            1, 'title 1', 'https://youtube.com/watch?v=9iPvLx7gotk',
            'title 1.mp4')
        dvi.addVideoInfoForVideoIndex(
            2, 'title 2', 'https://youtube.com/watch?v=9iPvL8880999',
            'title 2.mp4')

        self.assertEqual('title 1.mp4', dvi.getVideoFileNameForVideoIndex(1))
        self.assertEqual('title 2.mp4', dvi.getVideoFileNameForVideoIndex(2))

        self.assertEqual('https://youtube.com/watch?v=9iPvLx7gotk',
                         dvi.getVideoUrlForVideoTitle('title 1'))
        self.assertEqual('https://youtube.com/watch?v=9iPvL8880999',
                         dvi.getVideoUrlForVideoTitle('title 2'))

        self.assertEqual(additionTimeStr,
                         dvi.getVideoDownloadTimeForVideoTitle('title 1'))
        self.assertEqual(additionTimeStr,
                         dvi.getVideoDownloadTimeForVideoTitle('title 2'))

        startEndSecondsList_one = [1, 10]
        startEndSecondsList_two = [15, 20]

        dvi.addExtractStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_one)
        dvi.addExtractStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_two)
        dvi.addSuppressStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_two)
        dvi.addSuppressStartEndSecondsListForVideoIndex(
            1, startEndSecondsList_one)
        dvi.addExtractStartEndSecondsListForVideoIndex(
            2, startEndSecondsList_two)

        self.assertEqual([startEndSecondsList_one, startEndSecondsList_two],
                         dvi.getExtractStartEndSecondsListsForVideoIndex(1))
        self.assertEqual([startEndSecondsList_two, startEndSecondsList_one],
                         dvi.getSuppressStartEndSecondsListsForVideoIndex(1))
        self.assertEqual([startEndSecondsList_two],
                         dvi.getExtractStartEndSecondsListsForVideoIndex(2))
        self.assertEqual([],
                         dvi.getSuppressStartEndSecondsListsForVideoIndex(2))

        dvi.saveDic()

        # creating new video info dic, reloading newly created video info dic file
        reloadedDvi = DownloadVideoInfoDic(downloadDir, playListName)
        time.sleep(1)
        newAdditionTimeStr = datetime.now().strftime(
            DATE_TIME_FORMAT_VIDEO_INFO_FILE)

        # adding supplementary video info entry
        reloadedDvi.addVideoInfoForVideoIndex(
            3, 'title 3', 'https://youtube.com/watch?v=9iPvL1111',
            'title 3.mp4')

        self.assertEqual('https://youtube.com/watch?v=9iPvLx7gotk',
                         reloadedDvi.getVideoUrlForVideoTitle('title 1'))
        self.assertEqual('https://youtube.com/watch?v=9iPvL8880999',
                         reloadedDvi.getVideoUrlForVideoTitle('title 2'))
        self.assertEqual('https://youtube.com/watch?v=9iPvL1111',
                         reloadedDvi.getVideoUrlForVideoTitle('title 3'))

        self.assertEqual(
            additionTimeStr,
            reloadedDvi.getVideoDownloadTimeForVideoTitle('title 1'))
        self.assertEqual(
            additionTimeStr,
            reloadedDvi.getVideoDownloadTimeForVideoTitle('title 2'))
        self.assertEqual(
            newAdditionTimeStr,
            reloadedDvi.getVideoDownloadTimeForVideoTitle('title 3'))

        startEndSecondsList_one_for_3 = [12, 100]
        startEndSecondsList_two_for_3 = [115, 200]

        reloadedDvi.addExtractStartEndSecondsListForVideoIndex(
            3, startEndSecondsList_one_for_3)
        reloadedDvi.addExtractStartEndSecondsListForVideoIndex(
            3, startEndSecondsList_two_for_3)
        reloadedDvi.addSuppressStartEndSecondsListForVideoIndex(
            3, startEndSecondsList_two_for_3)

        reloadedDvi.saveDic()

        # creating new extended video info dic, reloading newly created video info dic file
        newReloadedDvi = DownloadVideoInfoDic(downloadDir, playListName)

        self.assertEqual('https://youtube.com/watch?v=9iPvLx7gotk',
                         newReloadedDvi.getVideoUrlForVideoTitle('title 1'))
        self.assertEqual('https://youtube.com/watch?v=9iPvL8880999',
                         newReloadedDvi.getVideoUrlForVideoTitle('title 2'))
        self.assertEqual('https://youtube.com/watch?v=9iPvL1111',
                         newReloadedDvi.getVideoUrlForVideoTitle('title 3'))

        self.assertEqual(
            additionTimeStr,
            newReloadedDvi.getVideoDownloadTimeForVideoTitle('title 1'))
        self.assertEqual(
            additionTimeStr,
            newReloadedDvi.getVideoDownloadTimeForVideoTitle('title 2'))
        self.assertEqual(
            newAdditionTimeStr,
            newReloadedDvi.getVideoDownloadTimeForVideoTitle('title 3'))
        self.assertEqual(
            [startEndSecondsList_one, startEndSecondsList_two],
            newReloadedDvi.getExtractStartEndSecondsListsForVideoIndex(1))
        self.assertEqual(
            [startEndSecondsList_two, startEndSecondsList_one],
            newReloadedDvi.getSuppressStartEndSecondsListsForVideoIndex(1))
        self.assertEqual(
            [startEndSecondsList_two],
            newReloadedDvi.getExtractStartEndSecondsListsForVideoIndex(2))
        self.assertEqual(
            [], newReloadedDvi.getSuppressStartEndSecondsListsForVideoIndex(2))
        self.assertEqual(
            [startEndSecondsList_one_for_3, startEndSecondsList_two_for_3],
            newReloadedDvi.getExtractStartEndSecondsListsForVideoIndex(3))
        self.assertEqual(
            [startEndSecondsList_two_for_3],
            newReloadedDvi.getSuppressStartEndSecondsListsForVideoIndex(3))