From 3fc3aebaad7013945fee47230c7f7f643e8b164b Mon Sep 17 00:00:00 2001 From: Matt Jones Date: Wed, 29 Jan 2025 21:40:32 -0600 Subject: [PATCH] feat: use @Slf4j annotation --- .../ImageTransformComponent.java | 10 ++-- .../meural_control/MeuralComponent.java | 56 +++++++++---------- .../meural_control/MeuralController.java | 12 ++-- .../meural_control/OpenAIComponent.java | 32 +++++------ .../meural_control/SchedulerComponent.java | 10 ++-- .../google/GoogleAPICredentialProvider.java | 10 ++-- .../google/GoogleCalendarComponent.java | 12 ++-- .../google/GooglePhotosComponent.java | 24 ++++---- .../meural_control/jwst/JWSTComponent.java | 22 ++++---- 9 files changed, 85 insertions(+), 103 deletions(-) diff --git a/src/main/java/com/bigboxer23/meural_control/ImageTransformComponent.java b/src/main/java/com/bigboxer23/meural_control/ImageTransformComponent.java index 8d12994..81bcade 100644 --- a/src/main/java/com/bigboxer23/meural_control/ImageTransformComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/ImageTransformComponent.java @@ -4,8 +4,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -13,10 +12,9 @@ * Component to apply command against an image prior to display. Useful for things like cropping or * adjusting image in some way via imageMagick or similar */ +@Slf4j @Component public class ImageTransformComponent { - private static final Logger logger = LoggerFactory.getLogger(ImageTransformComponent.class); - @Value("${transform-preview-commmand}") private String previewCommand; @@ -49,14 +47,14 @@ private File transformItem(File file, String command) { while ((line = reader.readLine()) != null) { out.append(line).append("\n"); } - logger.info("command output: " + out); + log.info("command output: " + out); } int exitCode = process.waitFor(); if (exitCode != 0) { throw new IOException("error exit status from command: " + exitCode); } } catch (IOException | InterruptedException e) { - logger.warn("error running command", e); + log.warn("error running command", e); } return tmpFile.exists() ? tmpFile : file; } diff --git a/src/main/java/com/bigboxer23/meural_control/MeuralComponent.java b/src/main/java/com/bigboxer23/meural_control/MeuralComponent.java index 228e072..d6acb61 100644 --- a/src/main/java/com/bigboxer23/meural_control/MeuralComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/MeuralComponent.java @@ -14,20 +14,18 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** */ +@Slf4j @Component public class MeuralComponent { - private static final Logger logger = LoggerFactory.getLogger(MeuralComponent.class); - private static final String apiUrl = "https://api.meural.com/v0/"; @Value("${meural-account}") @@ -57,7 +55,7 @@ public MeuralComponent(GooglePhotosComponent gPhotos, ImageTransformComponent tr protected String getToken() { if (token == null) { - logger.info("fetching service meural token"); + log.info("fetching service meural token"); try (Response response = OkHttpUtil.postSynchronous( apiUrl + "authenticate", new FormBody.Builder() @@ -67,7 +65,7 @@ protected String getToken() { null)) { token = OkHttpUtil.getNonEmptyBody(response, Token.class).getToken(); } catch (IOException e) { - logger.error("getToken", e); + log.error("getToken", e); } } return token; @@ -81,12 +79,12 @@ protected Device getDevice() throws IOException { if (meuralDevice != null) { return meuralDevice; } - logger.info("fetching device info from meural service"); + log.info("fetching device info from meural service"); try (Response response = OkHttpUtil.getSynchronous(apiUrl + "user/devices?count=10&page=1", getAuthCallback())) { Devices devices = OkHttpUtil.getNonEmptyBody(response, Devices.class); if (devices == null || devices.getData() == null || devices.getData().length == 0) { - logger.warn("cannot get device from body "); + log.warn("cannot get device from body "); throw new IOException("cannot get device from body "); } meuralDevice = devices.getData()[0]; @@ -95,7 +93,7 @@ protected Device getDevice() throws IOException { } private MeuralStringResponse addItemToPlaylistAndDisplay(SourceItem sourceItem) throws IOException { - logger.info("starting add new file to playlist: \"" + sourceItem.getName() + "\""); + log.info("starting add new file to playlist: \"" + sourceItem.getName() + "\""); MeuralItem item = uploadItemToMeural(sourceItem); MeuralPlaylist playlist = getOrCreatePlaylist(); // Check if we already had this item in the playlist. If we did, no need to do anything @@ -104,14 +102,14 @@ private MeuralStringResponse addItemToPlaylistAndDisplay(SourceItem sourceItem) deleteItemsFromPlaylist(playlist); addPlaylistToDevice(getDevice().getId(), playlist.getId()); } - logger.info("completed adding new file to playlist: \"" + sourceItem.getName() + "\""); + log.info("completed adding new file to playlist: \"" + sourceItem.getName() + "\""); MeuralStringResponse response = new MeuralStringResponse(); response.setStatus("pass"); return response; } private void addPlaylistToDevice(String deviceId, String playlistId) throws IOException { - logger.info("Adding playlist to Meural " + deviceId + ":" + playlistId); + log.info("Adding playlist to Meural " + deviceId + ":" + playlistId); RetryingCommand.execute( () -> { try (Response response = OkHttpUtil.postSynchronous( @@ -127,14 +125,14 @@ private void addPlaylistToDevice(String deviceId, String playlistId) throws IOEx } private void deleteItemsFromPlaylist(MeuralPlaylist playlist) throws IOException { - logger.info("deleting items from playlist " + playlist.getId()); + log.info("deleting items from playlist " + playlist.getId()); for (Integer item : playlist.getItemIds()) { deleteItem(item); } } private void deleteItem(Integer itemId) throws IOException { - logger.info("deleting item: " + itemId); + log.info("deleting item: " + itemId); RetryingCommand.execute( () -> { try (Response response = @@ -150,7 +148,7 @@ private void deleteItem(Integer itemId) throws IOException { } private void addItemToPlaylist(String playlistId, String itemId) throws IOException { - logger.info("adding item to playlist " + playlistId + ":" + itemId); + log.info("adding item to playlist " + playlistId + ":" + itemId); RetryingCommand.execute( () -> { try (Response response = OkHttpUtil.postSynchronous( @@ -174,7 +172,7 @@ private String getMeuralName(SourceItem sourceItem) { private MeuralItem uploadItemToMeural(SourceItem sourceItem) throws IOException { sourceItem.setTempFile(transformComponent.transformItem(sourceItem.getTempFile())); - logger.info("uploading file to Meural service \"" + sourceItem.getName() + "\""); + log.info("uploading file to Meural service \"" + sourceItem.getName() + "\""); try (Response response = OkHttpUtil.postSynchronous( apiUrl + "items", new MultipartBody.Builder() @@ -189,20 +187,20 @@ private MeuralItem uploadItemToMeural(SourceItem sourceItem) throws IOException try { MeuralItemResponse itemResponse = OkHttpUtil.getNonEmptyBody(response, MeuralItemResponse.class); if (itemResponse == null || itemResponse.getData() == null) { - logger.warn("cannot get item from body "); + log.warn("cannot get item from body "); reset(); throw new IOException("cannot get item from body "); } return itemResponse.getData(); } catch (JsonEncodingException e) { - logger.warn("uploadItemToMeural exception: ", e); + log.warn("uploadItemToMeural exception: ", e); throw e; } } } protected MeuralPlaylist getOrCreatePlaylist() throws IOException { - logger.info("get playlist info for \"" + playlistName + "\""); + log.info("get playlist info for \"" + playlistName + "\""); return RetryingCommand.execute( () -> { try (Response response = @@ -211,7 +209,7 @@ protected MeuralPlaylist getOrCreatePlaylist() throws IOException { if (meuralPlaylists == null || meuralPlaylists.getData() == null || meuralPlaylists.getData().length == 0) { - logger.warn("cannot get playlists from body "); + log.warn("cannot get playlists from body "); throw new IOException("cannot get playlists from body "); } MeuralPlaylist playlist = Arrays.stream(meuralPlaylists.getData()) @@ -221,7 +219,7 @@ protected MeuralPlaylist getOrCreatePlaylist() throws IOException { try { return createPlaylist(playlistName); } catch (IOException e) { - logger.warn("orElseGet", e); + log.warn("orElseGet", e); return null; } }); @@ -236,7 +234,7 @@ protected MeuralPlaylist getOrCreatePlaylist() throws IOException { } protected MeuralPlaylist createPlaylist(String name) throws IOException { - logger.info("Creating playlist for " + name); + log.info("Creating playlist for " + name); return RetryingCommand.execute( () -> { try (Response response = OkHttpUtil.postSynchronous( @@ -249,7 +247,7 @@ protected MeuralPlaylist createPlaylist(String name) throws IOException { MeuralPlaylistResponse playlistResponse = OkHttpUtil.getNonEmptyBody(response, MeuralPlaylistResponse.class); if (playlistResponse == null || playlistResponse.getData() == null) { - logger.warn("cannot create playlist from body "); + log.warn("cannot create playlist from body "); throw new IOException("cannot create playlist from body "); } return playlistResponse.getData(); @@ -259,13 +257,13 @@ protected MeuralPlaylist createPlaylist(String name) throws IOException { } protected void deletePlaylist(String playlistId) throws IOException { - logger.info("deleting playlist for " + playlistId); + log.info("deleting playlist for " + playlistId); RetryingCommand.execute( () -> { try (Response response = OkHttpUtil.deleteSynchronous(apiUrl + "galleries/" + playlistId, getAuthCallback())) { if (!response.isSuccessful()) { - logger.warn("cannot delete playlist " + log.warn("cannot delete playlist " + playlistId + ", body: " + response.body().string()); @@ -296,7 +294,7 @@ private MediaType getMediaType(File file) { /** Cause a re-fetch of all meural device information on next request */ public void reset() { - logger.warn("resetting api"); + log.warn("resetting api"); token = null; meuralDevice = null; } @@ -310,7 +308,7 @@ private MeuralStringResponse executeAfterFetchCommand(SourceItem item, Command 0) { gPhotos.uploadItemToAlbum(item); } - logger.info("removing temp file: \"" + item.getName() + "\""); + log.info("removing temp file: \"" + item.getName() + "\""); item.getTempFile().delete(); } } @@ -319,10 +317,10 @@ private MeuralStringResponse executeAfterFetchCommand(SourceItem item, Command command) throws IOException { // If temp file is set and exists, don't fetch it again. if (item.getTempFile() != null && item.getTempFile().exists()) { - logger.info("item exists, not re-downloading \"" + item.getName() + "\""); + log.info("item exists, not re-downloading \"" + item.getName() + "\""); return executeAfterFetchCommand(item, command); } - logger.info("downloading item for \"" + item.getName() + "\""); + log.info("downloading item for \"" + item.getName() + "\""); String extension = FilenameUtils.getExtension( item.getName() != null ? item.getName() @@ -366,7 +364,7 @@ public MeuralStringResponse changePictureWithPreview(SourceItem item, boolean tr tmpFile = transformComponent.transformPreviewItem(tmpFile); } File file = tmpFile; - logger.info("previewing directly on meural \"" + item.getName() + "\""); + log.info("previewing directly on meural \"" + item.getName() + "\""); return RetryingCommand.execute( () -> { try (Response response = OkHttpUtil.postSynchronous( diff --git a/src/main/java/com/bigboxer23/meural_control/MeuralController.java b/src/main/java/com/bigboxer23/meural_control/MeuralController.java index a595124..1c5beac 100644 --- a/src/main/java/com/bigboxer23/meural_control/MeuralController.java +++ b/src/main/java/com/bigboxer23/meural_control/MeuralController.java @@ -14,9 +14,8 @@ import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -25,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController; /** */ +@Slf4j @RestController @Tag( name = "Meural Control Service", @@ -38,8 +38,6 @@ public class MeuralController { private final GooglePhotosComponent gPhotosAPI; - private static final Logger logger = LoggerFactory.getLogger(MeuralController.class); - public MeuralController( MeuralComponent api, SchedulerComponent scheduler, @@ -59,7 +57,7 @@ private T handleResponse(HttpServletResponse servletR } return (T) response; } catch (IOException theE) { - logger.warn("handleResponse", theE); + log.warn("handleResponse", theE); api.reset(); servletResponse.setStatus(HttpStatus.BAD_REQUEST.value()); return (T) new MeuralResponse(); @@ -86,7 +84,7 @@ private T handleResponse(HttpServletResponse servletR "https://res.cloudinary.com/dk-find-out/image/upload/q_80,w_1440,f_auto/DCTM_Penguin_UK_DK_AL316928_wsfijk.jpg") }) public MeuralStringResponse displayContentFromUrl(String url, HttpServletResponse servletResponse) { - logger.warn("change display to: " + url); + log.warn("change display to: " + url); return handleResponse(servletResponse, () -> api.changePicture(new SourceItem(null, new URL(url)))); } @@ -113,7 +111,7 @@ public MeuralStringResponse displayContentFromUrl(String url, HttpServletRespons "https://res.cloudinary.com/dk-find-out/image/upload/q_80,w_1440,f_auto/DCTM_Penguin_UK_DK_AL316928_wsfijk.jpg") }) public MeuralStringResponse previewContentFromUrl(String url, HttpServletResponse servletResponse) { - logger.warn("previewing: " + url); + log.warn("previewing: " + url); return handleResponse(servletResponse, () -> api.previewItem(new SourceItem(null, new URL(url)), true)); } diff --git a/src/main/java/com/bigboxer23/meural_control/OpenAIComponent.java b/src/main/java/com/bigboxer23/meural_control/OpenAIComponent.java index ece34c0..c9f874e 100644 --- a/src/main/java/com/bigboxer23/meural_control/OpenAIComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/OpenAIComponent.java @@ -8,19 +8,17 @@ import java.io.IOException; import java.net.URL; import java.util.Optional; +import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; /** component that calls OpenAI's image generation API to generate an image from the text prompt */ +@Slf4j @Component public class OpenAIComponent implements IMeuralImageSource { - private static final Logger logger = LoggerFactory.getLogger(OpenAIComponent.class); - private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); @Value("${openai-key}") @@ -75,7 +73,7 @@ protected Optional generateItem() { } else if (mode == 2 || mode == 3) { generateNewPrompt().ifPresent(this::updatePrompt); } - logger.info("Requesting generated image for prompt: \"" + log.info("Requesting generated image for prompt: \"" + lastPrompt.get() + gCalendarComponent.getHolidayString() + "\""); @@ -101,13 +99,13 @@ protected Optional generateItem() { resetPrompt(response.message(), response.code()); } } catch (IOException e) { - logger.warn("generateItem", e); + log.warn("generateItem", e); } return Optional.empty(); } private void resetPrompt(String body, int code) { - logger.warn("request was not successful for " + log.warn("request was not successful for " + lastPrompt.get() + gCalendarComponent.getHolidayString() + ". " @@ -118,7 +116,7 @@ private void resetPrompt(String body, int code) { } protected Optional generateNewPrompt() { - logger.info("Requesting generated prompt: \"" + lastPrompt.get() + "\""); + log.info("Requesting generated prompt: \"" + lastPrompt.get() + "\""); RequestBody body = RequestBody.create( moshi.adapter(OpenAIChatCompletionBody.class) .toJson(new OpenAIChatCompletionBody( @@ -134,19 +132,19 @@ protected Optional generateNewPrompt() { .getMessage() .getContent() .trim(); - logger.info("new prompt generated: \"" + text + "\""); + log.info("new prompt generated: \"" + text + "\""); return Optional.of(text); } } } catch (IOException e) { - logger.warn("generateNewPrompt", e); + log.warn("generateNewPrompt", e); } - logger.warn("generated empty suggestion"); + log.warn("generated empty suggestion"); return Optional.empty(); } private Optional generateNewPromptTextCompletion(boolean shouldRetry) { - logger.info("Requesting generated prompt: \"" + lastPrompt.get() + "\""); + log.info("Requesting generated prompt: \"" + lastPrompt.get() + "\""); RequestBody body = RequestBody.create( moshi.adapter(OpenAICompletionBody.class) .toJson(new OpenAICompletionBody( @@ -165,17 +163,17 @@ private Optional generateNewPromptTextCompletion(boolean shouldRetry) { } throw new IOException(text + " is not complex enough, trying again"); } - logger.info("new prompt generated: \"" + text + "\""); + log.info("new prompt generated: \"" + text + "\""); return Optional.of(text); } } } catch (IOException e) { - logger.warn("generateNewPrompt", e); + log.warn("generateNewPrompt", e); } if (shouldRetry) { return generateNewPromptTextCompletion(false); // if we fail to get a suggestion, try once more } - logger.warn("generated empty suggestion"); + log.warn("generated empty suggestion"); return Optional.empty(); } @@ -194,12 +192,12 @@ public void setMode(int theMode) { } public void setStyle(String style) { - logger.info("setting style to " + style); + log.info("setting style to " + style); this.style.set(style); } public void setQuality(String quality) { - logger.info("setting quality to " + quality); + log.info("setting quality to " + quality); this.quality.set(quality); } diff --git a/src/main/java/com/bigboxer23/meural_control/SchedulerComponent.java b/src/main/java/com/bigboxer23/meural_control/SchedulerComponent.java index 1bb9f37..4141f31 100644 --- a/src/main/java/com/bigboxer23/meural_control/SchedulerComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/SchedulerComponent.java @@ -7,16 +7,14 @@ import com.bigboxer23.utils.file.FilePersistentIndex; import java.io.IOException; import java.util.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** Component to schedule changing the Meural's display */ +@Slf4j @Component public class SchedulerComponent { - private static final Logger logger = LoggerFactory.getLogger(SchedulerComponent.class); - private final GooglePhotosComponent gPhotosAPI; private final OpenAIComponent openAIAPI; @@ -50,7 +48,7 @@ private void iterateSource() throws IOException { private MeuralResponse doAction(Command> command) throws IOException { MeuralStatusResponse response = api.isAsleep(); if (response.isResponse()) { - logger.info("Meural is asleep, not doing anything"); + log.info("Meural is asleep, not doing anything"); return response; } return command.execute() @@ -62,7 +60,7 @@ private MeuralResponse doAction(Command> command) throws IO url.setCleanupTempFile(true); return api.changePicture(url); } catch (IOException e) { - logger.warn("doAction: resetting api", e); + log.warn("doAction: resetting api", e); api.reset(); return new MeuralResponse(); } diff --git a/src/main/java/com/bigboxer23/meural_control/google/GoogleAPICredentialProvider.java b/src/main/java/com/bigboxer23/meural_control/google/GoogleAPICredentialProvider.java index 52e710f..94c3053 100644 --- a/src/main/java/com/bigboxer23/meural_control/google/GoogleAPICredentialProvider.java +++ b/src/main/java/com/bigboxer23/meural_control/google/GoogleAPICredentialProvider.java @@ -20,19 +20,17 @@ import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** */ +@Slf4j @Component public class GoogleAPICredentialProvider { private CredentialsProvider credProvider; private Credential credential; - private static final Logger logger = LoggerFactory.getLogger(GoogleAPICredentialProvider.class); - private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static final List REQUIRED_SCOPES = ImmutableList.of( @@ -46,7 +44,7 @@ public JsonFactory getJsonFactory() { public CredentialsProvider getCredentialProvider() throws IOException, GeneralSecurityException { if (credProvider == null) { - logger.info("Fetching Google creds"); + log.info("Fetching Google creds"); InputStream aCredStream = Credentials.class.getResourceAsStream("/credentials.json"); GoogleClientSecrets aClientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(aCredStream)); @@ -55,7 +53,7 @@ public CredentialsProvider getCredentialProvider() throws IOException, GeneralSe .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens"))) .setAccessType("offline") .build(); - logger.info("Starting local server receiver"); + log.info("Starting local server receiver"); credential = new AuthorizationCodeInstalledApp( aFlow, new LocalServerReceiver.Builder().setPort(8890).build()) diff --git a/src/main/java/com/bigboxer23/meural_control/google/GoogleCalendarComponent.java b/src/main/java/com/bigboxer23/meural_control/google/GoogleCalendarComponent.java index 422f28a..0f1d586 100644 --- a/src/main/java/com/bigboxer23/meural_control/google/GoogleCalendarComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/google/GoogleCalendarComponent.java @@ -5,16 +5,14 @@ import com.google.api.services.calendar.Calendar; import java.io.IOException; import java.security.GeneralSecurityException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** Component to interrogate a Google calendar for holiday information */ +@Slf4j @Component public class GoogleCalendarComponent { - private static final Logger logger = LoggerFactory.getLogger(GoogleCalendarComponent.class); - private final GoogleAPICredentialProvider credentialProviderComponent; private String holidayString; @@ -26,7 +24,7 @@ public GoogleCalendarComponent(GoogleAPICredentialProvider credentialComponent) @Scheduled(cron = "0 0 0 ? * *") // Run every day at 12am public void updateHoliday() { - logger.info("Fetching holiday information"); + log.info("Fetching holiday information"); try { holidayString = ""; Calendar aCalendar = new Calendar.Builder( @@ -48,9 +46,9 @@ public void updateHoliday() { .stream() .findAny() .ifPresent(event -> holidayString = " with elements of " + event.getSummary()); - logger.info("holiday string:" + holidayString); + log.info("holiday string:" + holidayString); } catch (GeneralSecurityException | IOException e) { - logger.warn("updateHoliday", e); + log.warn("updateHoliday", e); } } diff --git a/src/main/java/com/bigboxer23/meural_control/google/GooglePhotosComponent.java b/src/main/java/com/bigboxer23/meural_control/google/GooglePhotosComponent.java index dc2d3cf..5b5b354 100644 --- a/src/main/java/com/bigboxer23/meural_control/google/GooglePhotosComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/google/GooglePhotosComponent.java @@ -22,9 +22,8 @@ import java.net.URL; import java.security.GeneralSecurityException; import java.util.*; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -32,10 +31,9 @@ * Component to interface with Google Photos so content can be pushed direct (and live from cloud) * to the Meural device without needing to depend on Meural services. */ +@Slf4j @Component public class GooglePhotosComponent implements IMeuralImageSource { - private static final Logger logger = LoggerFactory.getLogger(GooglePhotosComponent.class); - @Value("${gPhotos-albumTitle}") private String albumTitle; @@ -73,7 +71,7 @@ private Optional jumpToItem(int jump) { for (int ai = 0; items.hasNext(); ai++) { MediaItem item = items.next(); if (ai == currentItem.get()) { - logger.info("returning item " + currentItem.get() + " from album " + albumTitle); + log.info("returning item " + currentItem.get() + " from album " + albumTitle); return Optional.of( new SourceItem(item.getFilename(), new URL(item.getBaseUrl() + "=w10000-h10000"))); } @@ -82,7 +80,7 @@ private Optional jumpToItem(int jump) { return jumpToItem(1); } } catch (IOException | GeneralSecurityException theE) { - logger.warn("nextItem:", theE); + log.warn("nextItem:", theE); } return Optional.empty(); } @@ -102,7 +100,7 @@ public void changeAlbum(String albumTitle) { protected void removeItemFromAlbum(String albumName, MediaItem item) { - logger.info("removing item from google photos album: \"" + item.getFilename() + "\""); + log.info("removing item from google photos album: \"" + item.getFilename() + "\""); try { PhotosLibrarySettings settings = PhotosLibrarySettings.newBuilder() .setCredentialsProvider(credentialProviderComponent.getCredentialProvider()) @@ -113,12 +111,12 @@ protected void removeItemFromAlbum(String albumName, MediaItem item) { Collections.singletonList(item.getId())); } } catch (IOException | GeneralSecurityException | ApiException theE) { - logger.warn("removeItemFromAlbum:", theE); + log.warn("removeItemFromAlbum:", theE); } } public NewMediaItemResult uploadItemToAlbum(SourceItem item) { - logger.info("uploading item to google photos album: \"" + item.getName() + "\""); + log.info("uploading item to google photos album: \"" + item.getName() + "\""); try { PhotosLibrarySettings settings = PhotosLibrarySettings.newBuilder() .setCredentialsProvider(credentialProviderComponent.getCredentialProvider()) @@ -132,11 +130,11 @@ public NewMediaItemResult uploadItemToAlbum(SourceItem item) { UploadMediaItemResponse response = photosLibraryClient.uploadMediaItem(request); if (response.getError().isPresent()) { UploadMediaItemResponse.Error error = response.getError().get(); - logger.warn("uploadUrlToAlbum error", error.getCause()); + log.warn("uploadUrlToAlbum error", error.getCause()); return null; } if (response.getUploadToken().isEmpty()) { - logger.warn("uploadUrlToAlbum no upload token exists"); + log.warn("uploadUrlToAlbum no upload token exists"); return null; } String uploadToken = response.getUploadToken().get(); @@ -148,13 +146,13 @@ public NewMediaItemResult uploadItemToAlbum(SourceItem item) { for (NewMediaItemResult itemsResponse : createItemsResponse.getNewMediaItemResultsList()) { Status status = itemsResponse.getStatus(); if (status.getCode() != Code.OK_VALUE) { - logger.warn("error creating media item: " + status.getCode() + " " + status.getMessage()); + log.warn("error creating media item: " + status.getCode() + " " + status.getMessage()); } return itemsResponse; } } } catch (IOException | GeneralSecurityException | ApiException theE) { - logger.warn("uploadUrlToAlbum:", theE); + log.warn("uploadUrlToAlbum:", theE); } return null; } diff --git a/src/main/java/com/bigboxer23/meural_control/jwst/JWSTComponent.java b/src/main/java/com/bigboxer23/meural_control/jwst/JWSTComponent.java index 000e704..fd4d053 100644 --- a/src/main/java/com/bigboxer23/meural_control/jwst/JWSTComponent.java +++ b/src/main/java/com/bigboxer23/meural_control/jwst/JWSTComponent.java @@ -9,23 +9,21 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.htmlunit.WebClient; import org.htmlunit.html.HtmlAnchor; import org.htmlunit.html.HtmlDivision; import org.htmlunit.html.HtmlPage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; /** * Scrape content from James Webb Space Telescope site and display new content as it's published. */ +@Slf4j @Component public class JWSTComponent implements IMeuralImageSource { - private static final Logger logger = LoggerFactory.getLogger(JWSTComponent.class); - private final FilePersistentIndex lastFetchedImage = new FilePersistentIndex("jwsti"); private final FilePersistentIndex currentPage = new FilePersistentIndex("jwsti_page"); @@ -69,7 +67,7 @@ private boolean isFileSizeAcceptable(String text) { && Float.parseFloat(text.substring(text.lastIndexOf("(") + 1, text.lastIndexOf("mb") - 1)) < 100); if (!isSizeAcceptable) { - logger.warn("file too large for display, " + text); + log.warn("file too large for display, " + text); } return isSizeAcceptable; } @@ -90,7 +88,7 @@ private Optional findHighResLink(List anchors, String co new URL("https:" + anchor.getHrefAttribute()), albumToSaveTo); } catch (MalformedURLException e) { - logger.warn("findHighResLink", e); + log.warn("findHighResLink", e); } return null; }); @@ -118,7 +116,7 @@ private void fetchContent() { if ((images.isEmpty() && currentPage.get() != 1) // prevent looping || images.size() <= lastFetchedImage.get()) { if (images.isEmpty()) { - logger.warn("can't find images on page: " + currentPage.get() + " index:" + lastFetchedImage); + log.warn("can't find images on page: " + currentPage.get() + " index:" + lastFetchedImage); } currentPage.set(1); lastFetchedImage.set(0); @@ -126,22 +124,22 @@ private void fetchContent() { return; } String content = images.get(lastFetchedImage.get()).getTextContent().trim(); - logger.info( + log.info( "Fetched JWST content: \"" + content + "\" index:" + getFetchedImageIndex() + " page:" + getPage()); if (shouldSkipLink(content)) { - logger.info("Not showing " + content + ", matches skip keyword"); + log.info("Not showing " + content + ", matches skip keyword"); getItem(increasing ? 1 : -1); return; } List link = images.get(lastFetchedImage.get()).getByXPath(".//a"); if (link.isEmpty()) { - logger.warn("can't find link for content"); + log.warn("can't find link for content"); return; } page = client.getPage(kJWSTUrl + link.get(0).getHrefAttribute()); List downloadLinks = page.getByXPath("//a"); if (downloadLinks.isEmpty()) { - logger.warn("can't find download links for " + log.warn("can't find download links for " + kJWSTUrl + link.get(0).getHrefAttribute()); return; @@ -152,7 +150,7 @@ private void fetchContent() { + link.get(0).getHrefAttribute() + "\"")); } catch (IOException e) { - logger.warn("JWSTComponent", e); + log.warn("JWSTComponent", e); } }