Welche Tools? Wie vorgehen?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Welche Tools? Wie vorgehen?

siefke_listen@web.de
Hallo,

ich habe eine Möglichkeit gefunden wie ich tweets über die Shell
versenden kann. Meine Website wird vom Bau und Git über ein Shell Script
gesteuert. In dem Script würde ich gerne auch die automatischen tweets
einbauen. Es sollen natürlich nur Tweets gesendet werden, wenn ein
neuer Artikel erscheint.

Die Struktur:
/var/www/website/htdocs/ > index.html
/var/www/website/htdocs/blog > blog (Artikel erscheinen hier)
/var/www/website/htdocs/howto > howto (manchmal erscheint ein Artikel)

Ich bin im Moment ratlos wie ich das am besten bewältige.

Der Plan aktuell:
1.) Ich zähle alle Dateien im Verzeichnis htdocs
** find $de/htdocs -type -f | wc -l > $de/etc/files/files.txt

2.) Ich vergleiche die aktuelle Zählung mit der files.txt.
** if [ $files -lt $now ] then .... fi

3.) ergibt sich eine Änderung wird das für Blog und Howto wiederholt

4.) Im Ordner Howto werden einfache html Dateien abgelegt

5.) Im Ordner Blog wird das über Ordner mit Datum und Titel geregelt.
** /var/www/website/htdocs/blog/2014-08-18/das-ist-ein-artikel

Nur wenn in Blog ein neuer Ordner und im Howto ein neues File angelegt
wird soll Twitter zum Einsatz kommen. Ich würde bei einer Änderung
jeweils den Titel extrahieren und dann an das Script senden.

tweets.sh "http://website.de/blog/2014-08-18/das-ist-ein-artikel -
Neuer Artikel: Das ist ein Artikel erschienen"

Ich hoffe das ist einigermassen verständlich erklärt. Habt Ihr eine
Idee wie ich das am besten umsetzen kann? Welche Tools sollte ich
mir anschauen?

Vielen Dank für eure Hilfe & Schönen Abend

Silvio

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Welche Tools? Wie vorgehen?

Florian Diesch
Am Mon, 18 Aug 2014 22:42:27 +0200
schrieb "[hidden email]" <[hidden email]>:

> Hallo,
>
> ich habe eine Möglichkeit gefunden wie ich tweets über die Shell
> versenden kann. Meine Website wird vom Bau und Git über ein Shell
> Script gesteuert. In dem Script würde ich gerne auch die
> automatischen tweets einbauen. Es sollen natürlich nur Tweets
> gesendet werden, wenn ein neuer Artikel erscheint.
>
> Die Struktur:
> /var/www/website/htdocs/ > index.html
> /var/www/website/htdocs/blog > blog (Artikel erscheinen hier)
> /var/www/website/htdocs/howto > howto (manchmal erscheint ein Artikel)
>
> Ich bin im Moment ratlos wie ich das am besten bewältige.
>
> Der Plan aktuell:
> 1.) Ich zähle alle Dateien im Verzeichnis htdocs
> ** find $de/htdocs -type -f | wc -l > $de/etc/files/files.txt
>
> 2.) Ich vergleiche die aktuelle Zählung mit der files.txt.
> ** if [ $files -lt $now ] then .... fi
>
> 3.) ergibt sich eine Änderung wird das für Blog und Howto wiederholt
>
> 4.) Im Ordner Howto werden einfache html Dateien abgelegt
>
> 5.) Im Ordner Blog wird das über Ordner mit Datum und Titel geregelt.
> ** /var/www/website/htdocs/blog/2014-08-18/das-ist-ein-artikel
>
> Nur wenn in Blog ein neuer Ordner und im Howto ein neues File angelegt
> wird soll Twitter zum Einsatz kommen. Ich würde bei einer Änderung
> jeweils den Titel extrahieren und dann an das Script senden.
Als Idee (ungetestet):

---------------------------------------------------------------------

blog_files=$de/etc/files/blog.txt
blog_jetzt=$de/etc/files/blog.jetzt

touch "$blog_files"    # damit die Datei sicher existiert
find /var/www/website/htdocs/blog -type d > "$blog_jetzt"

# finde Einträge, die insgesamt nur einmal enthalten sind:
sort "$blog_files" "$blog_jetzt" | uniq -u | while read blog; do
  if [ -d "$blog" ]; then   # könnte auch ein gelöschter Artikel sein
    echo "Neuer Blog-Artikel: $blog"
  fi
done

cp "$blog_jetzt" "$blog_files"

---------------------------------------------------------------------

--
GtkFalse - a GUI version of /bin/false.
http://www.florian-diesch.de/software/gtkfalse/

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de

signature.asc (188 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Welche Tools? Wie vorgehen?

siefke_listen@web.de
Hallo,

On Tue, 19 Aug 2014 12:16:57 +0200 Florian Diesch
<[hidden email]> wrote:

> # finde Einträge, die insgesamt nur einmal enthalten sind:
> sort "$blog_files" "$blog_jetzt" | uniq -u | while read blog; do
>   if [ -d "$blog" ]; then   # könnte auch ein gelöschter Artikel sein
>     echo "Neuer Blog-Artikel: $blog"
>   fi
> done

Das arbeitet, so habe ich das nicht einmal gedacht. Kurz und präzise.
Vielen Dank. Wie kann ich awk mit einarbeiten. Die Ausgabe des Scripts:

Neuer Blog-Artikel: htdocs/blog/2014/08
Neuer Blog-Artikel: htdocs/blog/2014/08/05
Neuer Blog-Artikel: htdocs/blog/2014/08/05/the-new-article

Ich brauche nur den letzten. Ich hatte gedacht mit awk würde das laufen
und habe es wie folgt eingebaut:

sort "$blog_files" "$blog_jetzt" | uniq -u | while read blog; do
  if [ -d "$de" ]; then   # könnte auch ein gelöschter Artikel sein
                awk 'length($0) > 30'
                echo "Neuer Blog-Artikel: $blog"
  fi
done

Das scheint zu arbeiten, die Ausgabe sieht wie folgt aus:

siefke /var/www/test $  sh test.sh
htdocs/blog/2014/08/05/the-new-article
Neuer Blog-Artikel: htdocs/blog/2014/08

Ich brauche praktisch nur die obere Ausgabe, damit lässt sich dann der
Artikel auslesen und so aufarbeiten damit es über die Shell an Twitter
geschickt werden kann.

Mfg & Vielen Dank
Silvio

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Welche Tools? Wie vorgehen?

Florian Diesch
Am Tue, 19 Aug 2014 23:06:12 +0200
schrieb "[hidden email]" <[hidden email]>:

> Das arbeitet, so habe ich das nicht einmal gedacht. Kurz und präzise.
> Vielen Dank. Wie kann ich awk mit einarbeiten. Die Ausgabe des
> Scripts:
>
> Neuer Blog-Artikel: htdocs/blog/2014/08
> Neuer Blog-Artikel: htdocs/blog/2014/08/05
> Neuer Blog-Artikel: htdocs/blog/2014/08/05/the-new-article
>
> Ich brauche nur den letzten.

Du kannst find mit -mindepth sagen, dass du nur Ergebnisse ab einer
bestimmten Pfadtiefe haben willst, also z.B.

find /var/www/website/htdocs/blog -mindepth 6 -type d > "$blog_jetzt"

> Ich hatte gedacht mit awk würde das
> laufen und habe es wie folgt eingebaut:
>
> sort "$blog_files" "$blog_jetzt" | uniq -u | while read blog; do
>   if [ -d "$de" ]; then   # könnte auch ein gelöschter Artikel sein
> awk 'length($0) > 30'
> echo "Neuer Blog-Artikel: $blog"
>   fi
> done
>
> Das scheint zu arbeiten,
Nein, das funktioniert nicht wirklich. awk schluckt hier jede zweite
Zeile (es liest wie read von stdin) und gibt sie aus, wenn sie länger
als 30 Zeichen ist. Das echo wird in jedem Fall für jede nicht von
awk geschluckte Zeile ausgeführt.

Du kannst awk in die Pipe vor der Schleife einbauen:
 
  sort "$blog_files" "$blog_jetzt" | uniq -u | awk 'length($0) > 30' | \
  while read blog; do


Etwas kürzer geht das mit egrep:

  sort "$blog_files" "$blog_jetzt" | uniq -u | egrep '.{30}'| \
  while read blog; do


Ich finde es aber sinnvoller, den find-Aufruf so anzupassen, dass er
nur die Order findet, die dich interessieren.

--
GtkFalse - a GUI version of /bin/false.
http://www.florian-diesch.de/software/gtkfalse/

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de

signature.asc (188 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Welche Tools? Wie vorgehen?

siefke_listen@web.de
Hallo,

On Wed, 20 Aug 2014 02:55:21 +0200 Florian Diesch
<[hidden email]> wrote:

> Ich finde es aber sinnvoller, den find-Aufruf so anzupassen, dass er
> nur die Order findet, die dich interessieren.

Der Teil für Twitter ist fertig, das komplette Script für die Website
ist fertig.

<script>

#!/bin/bash
de=/var/www/silviosiefke.de
count=/var/www/silviosiefke.de/tmp/count.old
old=/var/www/silviosiefke.de/tmp/site.old
now=/var/www/silviosiefke.de/tmp/site.now


# Twitter Setup
# probieren ob das web Verzeichniss existiert
# probieren ob die alte Site Struktur existiert
# probieren ob die Ordner gezählt wurden und gespeichert sind

if [ -d $de -a -f $old -a -f $count ]; then

# wenn alles vorhanden ist, dann wird neu gezählt
find $de/htdocs -type d | wc -l > $de/tmp/count.new

# neu und alt wird verglichen
if [ -f $de/tmp/count.new ]; then
if [ $(cat $count) -lt $(cat $de/tmp/count.new) ]; then

# wenn eine änderung vorhanden ist, wird der neue Artikel gesucht
# aktuelle website Struktur einlesen
find $de/htdocs -mindepth 5 -type d > $now

# Dateien werden sortiert und miteinander auf Unterschiede verglichen
sort "$old" "$now" | uniq -u > $de/tmp/change

# Titel extrahieren
title=$(cat $(cat $de/tmp/change)/index.html | grep h1 | hxselect -s "\n" -c "h1")

# Pfad extrahieren
pfad=$(cat $de/tmp/change | cut -d / -f6,7,8,9,10)

# tweet senden
echo "tweet senden..."
/home/siefke/.bin/tweetshell.py "http://silviosiefke.de/$pfad - Neuer Artikel: $title..."

# aufräumen
mv $now $old
mv $de/tmp/count.new $count
rm $de/tmp/change

else
rm $de/tmp/count.new
echo "Kein Teet notwendig"
fi
fi
fi

</script>

Es funktioniert soweit mit den lokalen Tests. Praxistest wird demnächst
noch ausgeführt. Gibt es eine Möglichkeit dieses Script als Funktion
zu binden? Ich brauche das ganze dreimal, denn ich verwalte eine Website
mit drei Sprachen. Title und Pfad könnte ich auch für git nutzen, denn
das git update benötige ich auch nur wenn ein neuer Artikel publiziert
wird. Praktisch immer das gleiche, es ändert sich nur der Pfad de/com/fr
und am Ende soll entweder Twitter oder Git bedient werden.

Vielen Dank für die Hilfe. Das sort und uniq läuft besser als mit diff
was ich dachte.

Mfg & Dank
Silvio

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Welche Tools? Wie vorgehen?

siefke_listen@web.de
In reply to this post by siefke_listen@web.de
Hallo,

das Script ist jetzt fertig. Vorschläge nehme ich gerne auf. Demnächst
veröffentliche ich das komplette Script inkl. der notwendigen Tools
auf github.com.

http://pastebin.com/9AeVxvVm

Danke & Gruß
Silvio

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de