<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about rclone)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/rclone.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 27 Feb 2022 04:04:47 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Use Images from Google Photos album as screensaver on Linux</title><link>https://bgstack15.ddns.net/blog/posts/2020/05/21/use-images-from-google-photos-album-as-screensaver-on-linux/</link><dc:creator>bgstack15</dc:creator><description>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I wanted to set up a (shared) Google Photos album as my screensaver on Devuan
GNU/Linux. I accomplished this with the venerable
&lt;a href="https://www.jwz.org/xscreensaver/"&gt;xscreensaver&lt;/a&gt; and a useful tool named
&lt;a href="https://rclone.org/"&gt;rclone&lt;/a&gt; which I was already using.&lt;/p&gt;
&lt;h2&gt;Downloading images from Google Photos&lt;/h2&gt;
&lt;p&gt;On my CentOS 7 server, I already am using rclone. Starting with version
&lt;a href="https://rclone.org/changelog/#v1-49-0-2019-08-26"&gt;1.49&lt;/a&gt;, rclone supports
Google Photos. EPEL provides rclone but only version
&lt;a href="http://mirror.shastacoe.net/epel/7/x86_64/Packages/r/rclone-1.47.0-1.el7.x86_64.rpm"&gt;1.47&lt;/a&gt;.
So download the upstream rpm release: &lt;a href="https://rclone.org/downloads/"&gt;Downloads
page&lt;/a&gt; or &lt;a href="https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-linux-amd64.rpm"&gt;direct
link&lt;/a&gt;.
The utility comes with a cli-based configurator. Use &lt;strong&gt;rclone config&lt;/strong&gt; and add
a remote. I failed to save the output of when I configured it, but it's as
easy following the prompts to add a Google Photos remote. Choose the headless
option, and it will show you a link to open in a browser where you can
authenticate to Google Photos and then approve this application to use a token
tied to your account. The browser will show you a code you paste back into the
configurator. In the end, what matters is that the
~/.config/rclone/rclone.conf includes a section like so:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;[photos]&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;google photos&lt;/span&gt;
&lt;span class="na"&gt;read_only&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{"access_token":"za29.a0AfH6SMC9bVDgJTPZTPfvMd5MyplOehAgldvibfrlmMwOBFUSCATEDuDd6tMuWm13YOryXXpUWP4EkHO-oNoa92I6WN7rzrS4y6hquw3zPFXOayEZv-3uv9_NfYNUyctoBq_OUQ9lrqoH3U7J40crJW2NZ","token_type":"Bearer","refresh_token":"1//013Vdw5CGVJ3zCgZIARAAGAFSNwF-L9IricqZmAio2CqpFJ8nM0OuXmsorNlVHRmX5w_KeIgvwvrxsJl5hJT30jT9ET-9mh612-0","expiry":"2020-05-19T10:49:30.709779985-04:00"}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And then my sync script is this:&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt; 1&lt;/span&gt;
&lt;span class="normal"&gt; 2&lt;/span&gt;
&lt;span class="normal"&gt; 3&lt;/span&gt;
&lt;span class="normal"&gt; 4&lt;/span&gt;
&lt;span class="normal"&gt; 5&lt;/span&gt;
&lt;span class="normal"&gt; 6&lt;/span&gt;
&lt;span class="normal"&gt; 7&lt;/span&gt;
&lt;span class="normal"&gt; 8&lt;/span&gt;
&lt;span class="normal"&gt; 9&lt;/span&gt;
&lt;span class="normal"&gt;10&lt;/span&gt;
&lt;span class="normal"&gt;11&lt;/span&gt;
&lt;span class="normal"&gt;12&lt;/span&gt;
&lt;span class="normal"&gt;13&lt;/span&gt;
&lt;span class="normal"&gt;14&lt;/span&gt;
&lt;span class="normal"&gt;15&lt;/span&gt;
&lt;span class="normal"&gt;16&lt;/span&gt;
&lt;span class="normal"&gt;17&lt;/span&gt;
&lt;span class="normal"&gt;18&lt;/span&gt;
&lt;span class="normal"&gt;19&lt;/span&gt;
&lt;span class="normal"&gt;20&lt;/span&gt;
&lt;span class="normal"&gt;21&lt;/span&gt;
&lt;span class="normal"&gt;22&lt;/span&gt;
&lt;span class="normal"&gt;23&lt;/span&gt;
&lt;span class="normal"&gt;24&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="c1"&gt;# File: /etc/installed/sync-photos.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Location: storage1:/etc/installed&lt;/span&gt;
&lt;span class="c1"&gt;# Author: bgstack15@gmail.com&lt;/span&gt;
&lt;span class="c1"&gt;# Startdate: 2020-05-19&lt;/span&gt;
&lt;span class="c1"&gt;# Title: Script that Pulls Down Album from Google Drive&lt;/span&gt;
&lt;span class="c1"&gt;# Purpose: Pull photos down for a screensaver for the living room HTPC&lt;/span&gt;
&lt;span class="c1"&gt;# History:&lt;/span&gt;
&lt;span class="c1"&gt;# Usage:&lt;/span&gt;
&lt;span class="c1"&gt;#    in a cron entry:&lt;/span&gt;
&lt;span class="c1"&gt;# References:&lt;/span&gt;
&lt;span class="c1"&gt;#    man rclone(1)&lt;/span&gt;
&lt;span class="c1"&gt;#    https://rclone.org/googlephotos/&lt;/span&gt;
&lt;span class="c1"&gt;# Dependencies:&lt;/span&gt;
&lt;span class="c1"&gt;#    ~/.config/rclone/rclone.conf with a section named "photos"&lt;/span&gt;
&lt;span class="c1"&gt;# Documentation:&lt;/span&gt;
&lt;span class="c1"&gt;#    --dry-run is useful. Sync command runs from left side to right side only.&lt;/span&gt;
&lt;span class="nv"&gt;REMOTE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"photos"&lt;/span&gt;
&lt;span class="nv"&gt;INDIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"shared-album/Album Name"&lt;/span&gt;
&lt;span class="nv"&gt;OUTDIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/mnt/public/Images/google-drive/photos
&lt;span class="nv"&gt;LOGFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/mnt/public/Support/Systems/storage1/var/log/sync-photos/rclone.photos.&lt;span class="k"&gt;$(&lt;/span&gt; date &lt;span class="s2"&gt;"+%F"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;.log
mkdir -p &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; dirname &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LOGFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;PLECHO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; which plecho &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; which cat &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;time&lt;/span&gt; rclone -v --gphotos-read-only sync &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;REMOTE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;INDIR&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OUTDIR&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PLECHO&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tee -a &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;LOGFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;The script itself ran great the first time, and downloaded all images (and
videos) from the album. Upon second run though, the task seems stuck. Ah,
well, I'll solve that over time. For a cron job to run this daily, add file
/etc/cron.d/90_google-photos-sync.cron&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# &lt;span class="nv"&gt;File&lt;/span&gt;: &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;cron&lt;/span&gt;.&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="nv"&gt;_google&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;photos&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;sync&lt;/span&gt;.&lt;span class="nv"&gt;cron&lt;/span&gt;
# &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;google&lt;/span&gt; &lt;span class="nv"&gt;photos&lt;/span&gt; &lt;span class="nv"&gt;album&lt;/span&gt; &lt;span class="nv"&gt;shared&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;another&lt;/span&gt; &lt;span class="nv"&gt;google&lt;/span&gt; &lt;span class="nv"&gt;user&lt;/span&gt;. &lt;span class="nv"&gt;Save&lt;/span&gt; &lt;span class="nv"&gt;down&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;images&lt;/span&gt; &lt;span class="nv"&gt;so&lt;/span&gt; &lt;span class="nv"&gt;that&lt;/span&gt; &lt;span class="nv"&gt;HTPC&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;use&lt;/span&gt; &lt;span class="nv"&gt;them&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;screensaver&lt;/span&gt;.
&lt;span class="mi"&gt;45&lt;/span&gt; &lt;span class="mi"&gt;04&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;  &lt;span class="o"&gt;*&lt;/span&gt;  &lt;span class="o"&gt;*&lt;/span&gt;  &lt;span class="nv"&gt;root&lt;/span&gt;  &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;installed&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;sync&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;photos&lt;/span&gt;.&lt;span class="nv"&gt;sh&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;/&lt;/span&gt;&lt;span class="nv"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;null&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And as with all good cron jobs, suppress the standard output and standard
error and use the job itself to store logs.&lt;/p&gt;
&lt;h2&gt;Using images in xscreensaver&lt;/h2&gt;
&lt;p&gt;On my Devuan GNU+Linux home theater PC, I use xscreensaver. To take advantage
of a simple slideshow feature, make sure to have package &lt;strong&gt;xscreensaver-gl&lt;/strong&gt;
installed. &lt;img alt="Xscreensaver settings on main tab showing GLSlideshow
selected" src="https://bgstack15.ddns.net/blog/2020/05/choose-glslideshow.png"&gt; Select GLSlideshow and option "Only one screen saver." The
Tesselimage screensaver was very entertaining when used on personal photos but
not all end users agreed with me. &lt;img alt="Xscreensaver GLSlideshow settings page
showing sliders with useful
settings" src="https://bgstack15.ddns.net/blog/2020/05/glslideshow-settings.png"&gt; Adjust sliders as necessary. I found that on the default
settings, the slideshow would fade out and back in, on the same photo, about
three times, before finally moving on to the next image. So these sliders'
positions were successful in always showing a new image on each fadeout, which
was also slowed down. On the advanced settings tab of GLSlideshow, the sliders
were instantiated as:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;glslideshow -root -delay 30081 -duration 10 -pan 10
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img alt="Xcreensaver settings on the advanced tab showing what directory to pull
random images from" src="https://bgstack15.ddns.net/blog/2020/05/set-directory.png"&gt; And of course, choose the destination directory (nfs mounted in
my case) on the advanced settings. For the really hardcore users, some of the
relevant .xscreensaver values I could find include:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;chooseRandomImages&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;imageDirectory&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;   &lt;span class="sr"&gt;/mnt/public/Images/google-drive/&lt;/span&gt;&lt;span class="n"&gt;photos&lt;/span&gt;
&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;    &lt;span class="n"&gt;one&lt;/span&gt;
&lt;span class="n"&gt;selected&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;       &lt;span class="mi"&gt;143&lt;/span&gt;
&lt;span class="n"&gt;programs&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;                              &lt;span class="o"&gt;\&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;GL&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;             &lt;span class="n"&gt;glslideshow&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="mi"&gt;30081&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;duration&lt;/span&gt;      &lt;span class="o"&gt;\&lt;/span&gt;
              &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pan&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;                &lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It is worth noting that the glslideshow entry is 143 lines below the
&lt;strong&gt;programs:&lt;/strong&gt; line.&lt;/p&gt;
&lt;h2&gt;Extra thoughts&lt;/h2&gt;
&lt;p&gt;Even though a Google Photos album that is shared might be accessed
anonymously, the rclone utility requires an account. Linux – keep it simple.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://rclone.org/docs/"&gt;https://rclone.org/docs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rclone.org/googlephotos/"&gt;https://rclone.org/googlephotos/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jwz.org/xscreensaver/faq.html#slideshow"&gt;https://www.jwz.org/xscreensaver/faq.html#slideshow&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>devuan</category><category>epel</category><category>google</category><category>images</category><category>photo</category><category>rclone</category><category>screensaver</category><category>upstream</category><category>xscreensaver</category><guid>https://bgstack15.ddns.net/blog/posts/2020/05/21/use-images-from-google-photos-album-as-screensaver-on-linux/</guid><pubDate>Thu, 21 May 2020 12:41:12 GMT</pubDate></item></channel></rss>