/* * Copyright (c) 2014 Dennis Fischer. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0+ * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: Dennis Fischer */ package de.chaosfisch.services; import com.google.inject.Inject; import com.google.inject.name.Named; import de.chaosfisch.google.enddir.IEnddirService; import de.chaosfisch.google.youtube.upload.Upload; import de.chaosfisch.google.youtube.upload.UploadPreProcessor; import de.chaosfisch.google.youtube.upload.metadata.Metadata; import de.chaosfisch.google.youtube.upload.metadata.Monetization; import de.chaosfisch.google.youtube.upload.metadata.Social; import org.apache.commons.configuration.Configuration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.util.ResourceBundle; public class PlaceholderPreProcessor implements UploadPreProcessor { private final ResourceBundle resources; private static final Logger LOGGER = LoggerFactory.getLogger(PlaceholderPreProcessor.class); private final Configuration config; @Inject public PlaceholderPreProcessor(@Named("i18n-resources") final ResourceBundle resources, final Configuration config) { this.resources = resources; this.config = config; } @Override public Upload process(final Upload upload) { LOGGER.info("Replacing placeholders"); final ExtendedPlaceholders extendedPlaceholders = new ExtendedPlaceholders(upload.getFile(), upload.getPlaylists(), resources); final Metadata metadata = upload.getMetadata(); metadata.setTitle(extendedPlaceholders.replace(metadata.getTitle())); metadata.setDescription(extendedPlaceholders.replace(metadata.getDescription())); metadata.setKeywords(extendedPlaceholders.replace(metadata.getKeywords())); extendedPlaceholders.setFile(upload.getFile()); extendedPlaceholders.setPlaylists(upload.getPlaylists()); extendedPlaceholders.register("{title}", upload.getMetadata().getTitle()); extendedPlaceholders.register("{description}", upload.getMetadata().getDescription()); final Social social = upload.getSocial(); social.setMessage(extendedPlaceholders.replace(social.getMessage())); final Monetization monetization = upload.getMonetization(); monetization.setTitle(extendedPlaceholders.replace(monetization.getTitle())); monetization.setDescription(extendedPlaceholders.replace(monetization.getDescription())); monetization.setCustomId(extendedPlaceholders.replace(monetization.getCustomId())); monetization.setNotes(extendedPlaceholders.replace(monetization.getNotes())); monetization.setTmsid(extendedPlaceholders.replace(monetization.getTmsid())); monetization.setIsan(extendedPlaceholders.replace(monetization.getEidr())); monetization.setTitleepisode(extendedPlaceholders.replace(monetization.getTitleepisode())); monetization.setSeasonNb(extendedPlaceholders.replace(monetization.getSeasonNb())); monetization.setEpisodeNb(extendedPlaceholders.replace(monetization.getEpisodeNb())); upload.setThumbnail(null == upload.getThumbnail() ? null : new File(extendedPlaceholders.replace(upload.getThumbnail().getAbsolutePath()))); if (config.getBoolean(IEnddirService.RENAME_PROPERTY, false)) { upload.setEnddir(null == upload.getEnddir() ? null : new File(extendedPlaceholders.replace(upload.getEnddir().getAbsolutePath()))); } return upload; } }