Initialisation du dépôt
This commit is contained in:
commit
c94a04381d
41
README.md
Normal file
41
README.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Introduction
|
||||||
|
|
||||||
|
Ceci est le service de "veille" de Papa Ogre.
|
||||||
|
|
||||||
|
C'est un système simple utilisant [Rawdog](https://offog.org/code/rawdog/) pour extraire les flux RSS et en faire une page web statique.
|
||||||
|
|
||||||
|
Il se lance toutes les heures pour générer - si besoin - une page.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
## Dépendances
|
||||||
|
|
||||||
|
|
||||||
|
* [rawdog](https://archlinux.org/packages/community/any/rawdog/) pour ArchLinux
|
||||||
|
|
||||||
|
## Dossiers à créér/installer
|
||||||
|
|
||||||
|
* copier le **contenu du dossier `rawdog`** dans **/home/od/.rawdog/**
|
||||||
|
* copier le **contenu du dossier `public`** dans **/srv/http/ogre/veille/**
|
||||||
|
* copier les fichiers `rawdog.service` et `rawdog.timer` dans **/etc/systemd/system/**
|
||||||
|
* configurer le fichier **/home/od/.rawdog/config** pour adapter la ligne suivante :
|
||||||
|
|
||||||
|
```python
|
||||||
|
outputfile /srv/http/ogre/veille/index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
avec l'adresse exacte où vous avez posé les fichiers du dossier *public*.
|
||||||
|
|
||||||
|
|
||||||
|
# En bref
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rsync -avP ./rawdog/* /home/od/.rawdog
|
||||||
|
mkdir /srv/http/ogre/veille -p
|
||||||
|
rsync -avP ./public/* /srv/http/ogre/veille/
|
||||||
|
sudo cp rawdog.service /etc/systemd/system/
|
||||||
|
sudo cp rawdog.timer /etc/systemd/system/
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable rawdog.timer
|
||||||
|
sudo systemctl start rawdog.service
|
||||||
|
```
|
1
public/.gitignore
vendored
Normal file
1
public/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
index.html
|
2
public/bulma.min.css
vendored
Normal file
2
public/bulma.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
142
public/style-dec23.css
Normal file
142
public/style-dec23.css
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/* Default stylesheet for rawdog. Customise this as you like.
|
||||||
|
Adam Sampson <azz@us-lot.org> */
|
||||||
|
.xmlbutton {
|
||||||
|
/* From Dylan Greene's suggestion:
|
||||||
|
http://www.dylangreene.com/blog.asp?blogID=91 */
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: #FC9 #630 #330 #F96;
|
||||||
|
padding: 0 3px;
|
||||||
|
font: bold 10px sans-serif;
|
||||||
|
color: #FFF;
|
||||||
|
background: #F60;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
color: black;
|
||||||
|
background-color: #999;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color: #337;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: #733;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 4px 0;
|
||||||
|
padding: 0 4px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 120%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 170%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 150%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
#page {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
max-width: 60em;
|
||||||
|
}
|
||||||
|
.day {
|
||||||
|
background-color: #bbb;
|
||||||
|
border: 1px solid #777;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0 4px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.time {
|
||||||
|
background-color: #ddd;
|
||||||
|
border: 1px solid #999;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0 4px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #bbb;
|
||||||
|
/*
|
||||||
|
border-radius-bottomleft: 15px;
|
||||||
|
border-radius-bottomright: 15px;
|
||||||
|
-moz-border-radius-bottomleft: 15px;
|
||||||
|
-moz-border-radius-bottomright: 15px;
|
||||||
|
*/
|
||||||
|
margin: 10px 0;
|
||||||
|
clear: both;
|
||||||
|
|
||||||
|
/* Try to restore as much as possible to "normal" settings, so that
|
||||||
|
invalid HTML doesn't affect later items too much. */
|
||||||
|
font-size: medium;
|
||||||
|
text-decoration: none;
|
||||||
|
font-style: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-stretch: normal;
|
||||||
|
text-align: left;
|
||||||
|
white-space: normal;
|
||||||
|
text-transform: none;
|
||||||
|
color: black;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.itemheader {
|
||||||
|
padding: 4px;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin: 0;
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 110%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 2px 0;
|
||||||
|
}
|
||||||
|
.itembyline {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 2px 0;
|
||||||
|
}
|
||||||
|
.itemfrom {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.itemdescription {
|
||||||
|
margin-left: 30px;
|
||||||
|
}
|
||||||
|
#feedstatsheader {
|
||||||
|
}
|
||||||
|
#feedstats {
|
||||||
|
}
|
||||||
|
#feeds {
|
||||||
|
margin: 10px 0;
|
||||||
|
border: 1px solid gray;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
#feedsheader TH {
|
||||||
|
background-color: #eee;
|
||||||
|
border-bottom: 1px solid gray;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.feedsrow TD {
|
||||||
|
padding: 5px 10px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
background-color: #ffe;
|
||||||
|
border: 1px solid gray;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
#aboutrawdog {
|
||||||
|
}
|
113
public/style.css.old
Normal file
113
public/style.css.old
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/* Default stylesheet for rawdog. Customise this as you like.
|
||||||
|
Adam Sampson <ats@offog.org> */
|
||||||
|
.xmlbutton {
|
||||||
|
/* From Dylan Greene's suggestion:
|
||||||
|
http://www.dylangreene.com/blog.asp?blogID=91 */
|
||||||
|
border: 1px solid;
|
||||||
|
border-color: #FC9 #630 #330 #F96;
|
||||||
|
padding: 0 3px;
|
||||||
|
font: bold 10px sans-serif;
|
||||||
|
color: #FFF;
|
||||||
|
background: #F60;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
/* Scale down large images in feeds */
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
color: black;
|
||||||
|
background-color: white;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
#header {
|
||||||
|
background-color: #ffe;
|
||||||
|
border: 1px solid gray;
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: xx-large;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#items {
|
||||||
|
}
|
||||||
|
.day {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: x-large;
|
||||||
|
text-align: left;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.time {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: large;
|
||||||
|
text-align: left;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
margin: 20px 30px;
|
||||||
|
border: 1px solid gray;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.itemheader {
|
||||||
|
padding: 6px;
|
||||||
|
margin: 0;
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
.itemtitle {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.itemfrom {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.itemdescription {
|
||||||
|
border-top: 1px solid gray;
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
#feedstatsheader {
|
||||||
|
}
|
||||||
|
#feedstats {
|
||||||
|
}
|
||||||
|
#feeds {
|
||||||
|
margin: 10px 0;
|
||||||
|
border: 1px solid gray;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
#feedsheader TH {
|
||||||
|
background-color: #eee;
|
||||||
|
border-bottom: 1px solid gray;
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.feedsrow TD {
|
||||||
|
padding: 5px 10px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
background-color: #ffe;
|
||||||
|
border: 1px solid gray;
|
||||||
|
margin-top: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
#aboutrawdog {
|
||||||
|
}
|
127
public/style.css.yeupou
Normal file
127
public/style.css.yeupou
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/* PAGE */
|
||||||
|
html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
color: black;
|
||||||
|
background-color: white;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #315e9c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
clear: both;
|
||||||
|
background-color: #faf8cf;
|
||||||
|
border: 1px solid gray;
|
||||||
|
text-align: center;
|
||||||
|
padding-left: 2em;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ITEMS */
|
||||||
|
.item {
|
||||||
|
counter-increment: item;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 1%;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
width: 32%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.itemhead {
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #dcecff;
|
||||||
|
padding: 0;
|
||||||
|
border: thin dashed #C2D4E9;
|
||||||
|
border-bottom: 0;
|
||||||
|
border-radius: 1em 1em 0 0;
|
||||||
|
-moz-border-radius: 1em 1em 0 0;
|
||||||
|
-khtml-border-radius: 1em 1em 0 0;
|
||||||
|
-webkit-border-radius: 1em 1em 0 0;
|
||||||
|
}
|
||||||
|
.itemhead a {
|
||||||
|
text-shadow: 1px 1px 1px #949494;
|
||||||
|
display: block;
|
||||||
|
padding-left: 0.6em;
|
||||||
|
padding-right: 0.6em;
|
||||||
|
border-radius: 1em 1em 0 0;
|
||||||
|
-moz-border-radius: 1em 1em 0 0;
|
||||||
|
-khtml-border-radius: 1em 1em 0 0;
|
||||||
|
-webkit-border-radius: 1em 1em 0 0;
|
||||||
|
}
|
||||||
|
.itemhead a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.itemhead a:before {
|
||||||
|
content: counter(item) ". ";
|
||||||
|
}
|
||||||
|
.iteminfo {
|
||||||
|
font-size: xx-small;
|
||||||
|
background-color: #cbdef5;
|
||||||
|
padding-left: 2em;
|
||||||
|
color: #6A6A6A;
|
||||||
|
border: thin dashed #C2D4E9;
|
||||||
|
border-top: 0;
|
||||||
|
border-radius: 0 0 0 1em;
|
||||||
|
-moz-border-radius: 0 0 0 1em;
|
||||||
|
-khtml-border-radius: 0 0 0 1em;
|
||||||
|
-webkit-border-radius: 0 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ITEMS PER GROUP */
|
||||||
|
|
||||||
|
/* judiciaire */
|
||||||
|
.itemjudiciaire a { color: white; }
|
||||||
|
.itemheadjudiciaire a { text-shadow: 1px 1px 1px #6A6A6A; }
|
||||||
|
.itemheadjudiciaire { border-color: #a86868; background-color: #dd7979; }
|
||||||
|
.itemheadjudiciaire a:hover { background-color: #C26264;}
|
||||||
|
.iteminfojudiciaire { border-color: #a86868; background-color: #efa9a9; }
|
||||||
|
|
||||||
|
|
||||||
|
/* sciences */
|
||||||
|
.itemsciences { border-color: #68964a; }
|
||||||
|
.itemsciences a { color: #374a2c; }
|
||||||
|
.itemheadsciences { border-color: #68964a; background-color: #b7ff8c; }
|
||||||
|
.itemheadsciences a:hover { background-color: #CDFFAD; }
|
||||||
|
.iteminfosciences { border-color: #68964a; background-color: #8cbb6e; }
|
||||||
|
|
||||||
|
/* civitas */
|
||||||
|
.itemcivitas { border-color: #65a795; }
|
||||||
|
.itemcivitas a { color: #056c50; }
|
||||||
|
.itemheadcivitas { border-color: #65a795; background-color: #b2ffe8; }
|
||||||
|
.itemheadcivitas a:hover { background-color: #CAFFF0; }
|
||||||
|
.iteminfocivitas { border-color: #65a795; background-color: #8db6ab; }
|
||||||
|
|
||||||
|
/* geek */
|
||||||
|
.itemgeek { border-color: #e0714a; }
|
||||||
|
.itemgeek a { color: #e0714a; }
|
||||||
|
.itemheadgeek a { text-shadow: 1px 1px 1px #6A6A6A; }
|
||||||
|
.itemheadgeek { border-color: #e0714a; background-color: #363636; }
|
||||||
|
.itemheadgeek a:hover { background-color: #4D4D4D; }
|
||||||
|
.iteminfogeek { border-color: #e0714a; background-color: #212121; }
|
||||||
|
|
||||||
|
/* audiovisuel */
|
||||||
|
.itemaudiovisuel { border-color: #7660a8; }
|
||||||
|
.itemaudiovisuel a { color: #4e3683; }
|
||||||
|
.itemheadaudiovisuel { border-color: #7660a8; background-color: #a881ff; }
|
||||||
|
.itemheadaudiovisuel a:hover { background-color: #C1AAFF; }
|
||||||
|
.iteminfoaudiovisuel { border-color: #7660a8; background-color: #8a7bac; }
|
||||||
|
|
||||||
|
/* lecture */
|
||||||
|
.itemlecture { border-color: #b49880; }
|
||||||
|
.itemlecture a { color: #403e38; }
|
||||||
|
.itemheadlecture { border-color: #78868B; background-color: #C1D7DE; }
|
||||||
|
.itemheadlecture a:hover { background-color: #CFE6EA; }
|
||||||
|
.iteminfolecture { border-color: #78868B; background-color: #B1C5CC; }
|
||||||
|
|
||||||
|
/* absurde */
|
||||||
|
.itemabsurde a { color: #403e38; }
|
||||||
|
.itemheadabsurde { border-color: #A8B17B; background-color: #f1ffb1; }
|
||||||
|
.itemheadabsurde a:hover { background-color: #F7FFCD; }
|
||||||
|
.iteminfoabsurde { border-color: #A8B17B; background-color: #e3d7a7; }
|
7
rawdog.service
Normal file
7
rawdog.service
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Rawdog
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=od
|
||||||
|
ExecStart=/usr/bin/rawdog -d /home/od/.rawdog -uw
|
10
rawdog.timer
Normal file
10
rawdog.timer
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Runs rawdog every hour
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=hourly
|
||||||
|
Persistent=True
|
||||||
|
Unit=rawdog.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
3
rawdog/.gitignore
vendored
Normal file
3
rawdog/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*.pyc
|
||||||
|
state
|
||||||
|
state.lock
|
299
rawdog/config
Normal file
299
rawdog/config
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
# Sample rawdog config file. Copy this into your ~/.rawdog/ directory, and edit
|
||||||
|
# it to suit your preferences.
|
||||||
|
# All paths in this file should be either absolute, or relative to your .rawdog
|
||||||
|
# directory.
|
||||||
|
# If you want to include another config file, then use "include FILENAME".
|
||||||
|
|
||||||
|
# Times in this file are specified as a value and a unit (for instance,
|
||||||
|
# "4h"). Units available are "s" (seconds), "m" (minutes), "h" (hours),
|
||||||
|
# "d" (days) and "w" (weeks). If no unit is specified, rawdog will
|
||||||
|
# assume minutes.
|
||||||
|
# Boolean (yes/no) values in this file are specified as "true" or "false".
|
||||||
|
|
||||||
|
# rawdog can be extended using plugin modules written in Python. This
|
||||||
|
# option specifies the directories to search for plugins to load. If a
|
||||||
|
# directory does not exist or cannot be read, it will be ignored. This
|
||||||
|
# option must appear before any options that are implemented by plugins.
|
||||||
|
plugindirs plugins
|
||||||
|
|
||||||
|
# Whether to split rawdog's state amongst multiple files.
|
||||||
|
# If this is turned on, rawdog will use significantly less memory, but
|
||||||
|
# will do more disk IO -- probably a good idea if you read a lot of
|
||||||
|
# feeds.
|
||||||
|
splitstate false
|
||||||
|
|
||||||
|
# The maximum number of articles to show on the generated page.
|
||||||
|
# Set this to 0 for no limit.
|
||||||
|
maxarticles 20
|
||||||
|
|
||||||
|
# The maximum age of articles to show on the generated page.
|
||||||
|
# Set this to 0 for no limit.
|
||||||
|
maxage 0
|
||||||
|
|
||||||
|
# The age after which articles will be discarded if they do not appear
|
||||||
|
# in a feed. Set this to a larger value if you want your rawdog output
|
||||||
|
# to cover more than a day's worth of articles.
|
||||||
|
expireage 1d
|
||||||
|
|
||||||
|
# The minimum number of articles from each feed to keep around in the history.
|
||||||
|
# Set this to 0 to only keep articles that were returned the last time the feed
|
||||||
|
# was fetched. (If this is set to 0, or "currentonly" below is set to true,
|
||||||
|
# then rawdog will not send the RFC3229+feed "A-IM: feed" header when making
|
||||||
|
# HTTP requests, since it can't tell from the response to such a request
|
||||||
|
# whether any articles have been removed from the feed; this makes rawdog
|
||||||
|
# slightly less bandwidth-efficient.)
|
||||||
|
keepmin 20
|
||||||
|
|
||||||
|
# Whether to only display articles that are currently included in a feed
|
||||||
|
# (useful for "planet" pages where you only want to display the current
|
||||||
|
# articles from several feeds). If this is false, rawdog will keep a
|
||||||
|
# history of older articles.
|
||||||
|
currentonly false
|
||||||
|
|
||||||
|
# Whether to divide the articles up by day, writing a "dayformat" heading
|
||||||
|
# before each set.
|
||||||
|
daysections true
|
||||||
|
|
||||||
|
# The format to write day headings in. See "man strftime" for more
|
||||||
|
# information; for example:
|
||||||
|
# %A, %d %B Wednesday, 21 January
|
||||||
|
# %Y-%m-%d 2004-01-21 (ISO 8601 format)
|
||||||
|
dayformat %A, %d %B
|
||||||
|
|
||||||
|
# Whether to divide the articles up by time, writing a "timeformat" heading
|
||||||
|
# before each set.
|
||||||
|
timesections true
|
||||||
|
|
||||||
|
# The format to write time headings in. For example:
|
||||||
|
# %H:%M 18:07 (ISO 8601 format)
|
||||||
|
# %I:%M %p 06:07 PM
|
||||||
|
timeformat %H:%M
|
||||||
|
|
||||||
|
# The format to display feed update and article times in. For example:
|
||||||
|
# %H:%M, %A, %d %B 18:07, Wednesday, 21 January
|
||||||
|
# %Y-%m-%d %H:%M 2004-01-21 18:07 (ISO 8601 format)
|
||||||
|
datetimeformat %H:%M, %A, %d %B
|
||||||
|
|
||||||
|
# The page template file to use, or "default" to use the built-in template
|
||||||
|
# (which is probably sufficient for most users). Use "rawdog -s page" to show
|
||||||
|
# the template currently in use as a starting-point for customisation.
|
||||||
|
# The following strings will be replaced in the output:
|
||||||
|
# __version__ The rawdog version in use
|
||||||
|
# __refresh__ The HTML 4 <meta http-equiv="refresh" ...> header
|
||||||
|
# __items__ The aggregated items
|
||||||
|
# __num_items__ The number of items on the page
|
||||||
|
# __feeds__ The feed list
|
||||||
|
# __num_feeds__ The number of feeds listed
|
||||||
|
# You can define additional strings using "define" in this config file; for
|
||||||
|
# example, if you say "define myname Adam Sampson", then "__myname__" will be
|
||||||
|
# replaced by "Adam Sampson" in the output.
|
||||||
|
pagetemplate template.bl4n
|
||||||
|
|
||||||
|
# Similarly, the template used for each item shown. Use "rawdog -s item" to
|
||||||
|
# show the template currently in use as a starting-point for customisation.
|
||||||
|
# The following strings will be replaced in the output:
|
||||||
|
# __title__ The item title (as an HTML link, if possible)
|
||||||
|
# __title_no_link__ The item title (as text)
|
||||||
|
# __url__ The item's URL, or the empty string if it doesn't
|
||||||
|
# have one
|
||||||
|
# __guid__ The item's GUID, or the empty string if it doesn't
|
||||||
|
# have one
|
||||||
|
# __description__ The item's descriptive text, or the empty string
|
||||||
|
# if it doesn't have a description
|
||||||
|
# __date__ The item's date as provided by the feed
|
||||||
|
# __added__ The date the article was received by rawdog
|
||||||
|
# __hash__ A hash of the article (useful for summary pages)
|
||||||
|
#
|
||||||
|
# All of the __feed_X__ strings from feeditemtemplate below will also be
|
||||||
|
# expanded here, for the feed that the article came from.
|
||||||
|
#
|
||||||
|
# You can define additional strings on a per-feed basis by using the
|
||||||
|
# "define_X" feed option; see the description of "feed" below for more
|
||||||
|
# details.
|
||||||
|
#
|
||||||
|
# Simple conditional expansion is possible by saying something like
|
||||||
|
# "__if_items__ hello __endif__"; the text between the if and endif will
|
||||||
|
# only be included if __items__ would expand to something other than
|
||||||
|
# the empty string. Ifs can be nested, and __else__ is supported.
|
||||||
|
# (This also works for the other templates, but it's most useful here.)
|
||||||
|
itemtemplate item.bl4n
|
||||||
|
|
||||||
|
# The template used to generate the feed list (__feeds__ above). Use "rawdog
|
||||||
|
# -s feedlist" to show the current template.
|
||||||
|
# The following strings will be replaced in the output:
|
||||||
|
# __feeditems__ The feed items
|
||||||
|
feedlisttemplate default
|
||||||
|
|
||||||
|
# The template used to generate each item in the feed list. Use "rawdog
|
||||||
|
# -s feeditem" to show the current template.
|
||||||
|
# The following strings will be replaced in the output:
|
||||||
|
# __feed_id__ The feed's title with non-alphanumeric characters
|
||||||
|
# (and HTML markup) removed (useful for per-feed
|
||||||
|
# styles); you can use the "id" feed option below to
|
||||||
|
# set a custom ID if you prefer
|
||||||
|
# __feed_hash__ A hash of the feed URL (useful for per-feed styles)
|
||||||
|
# __feed_title__ The feed title (as an HTML link, if possible)
|
||||||
|
# __feed_title_no_link__
|
||||||
|
# The feed title (as text)
|
||||||
|
# __feed_url__ The feed URL
|
||||||
|
# __feed_icon__ An "XML button" linking to the feed URL
|
||||||
|
# __feed_last_update__
|
||||||
|
# The time when the feed was last updated
|
||||||
|
# __feed_next_update__
|
||||||
|
# The time when the feed will next need updating
|
||||||
|
feeditemtemplate default
|
||||||
|
|
||||||
|
# Where to write the output HTML to. You should place style.css in the same
|
||||||
|
# directory. Specify this as "-" to write the HTML to stdout.
|
||||||
|
# (You will probably want to make this an absolute path, else rawdog will write
|
||||||
|
# to a file in your ~/.rawdog directory.)
|
||||||
|
outputfile /srv/http/ogre/veille/index.html
|
||||||
|
#outputfile /home/you/public_html/rawdog.html
|
||||||
|
|
||||||
|
# Whether to use a <meta http-equiv="Refresh" ...> tag in the generated
|
||||||
|
# HTML to indicate that the page should be refreshed automatically. If
|
||||||
|
# this is turned on, then the page will refresh every N minutes, where N
|
||||||
|
# is the shortest feed period value specified below.
|
||||||
|
# (This works by controlling whether the default template includes
|
||||||
|
# __refresh__; if you use a custom template, __refresh__ is always
|
||||||
|
# available.)
|
||||||
|
userefresh true
|
||||||
|
|
||||||
|
# Whether to show the list of active feeds in the generated HTML.
|
||||||
|
# (This works by controlling whether the default template includes
|
||||||
|
# __feeds__; if you use a custom template, __feeds__ is always
|
||||||
|
# available.)
|
||||||
|
showfeeds true
|
||||||
|
|
||||||
|
# The number of concurrent threads that rawdog will use when fetching
|
||||||
|
# feeds -- i.e. the number of feeds that rawdog will attempt to fetch at
|
||||||
|
# the same time. If you have a lot of feeds, setting this to be 20 or
|
||||||
|
# so will significantly speed up updates. If this is set to 1 (or
|
||||||
|
# fewer), rawdog will not start any additional threads at all.
|
||||||
|
numthreads 1
|
||||||
|
|
||||||
|
# The time that rawdog will wait before considering a feed unreachable
|
||||||
|
# when trying to connect. If you're getting lots of timeout errors and
|
||||||
|
# are on a slow connection, increase this.
|
||||||
|
# (Unlike other times in this file, this will be assumed to be in
|
||||||
|
# seconds if no unit is specified.)
|
||||||
|
timeout 30s
|
||||||
|
|
||||||
|
# Whether to ignore timeouts. If this is false, timeouts will be reported as
|
||||||
|
# errors; if this is true, rawdog will silently ignore them.
|
||||||
|
ignoretimeouts false
|
||||||
|
|
||||||
|
# Whether to show Python traceback messages. If this is true, rawdog will show
|
||||||
|
# a traceback message if an exception is thrown while fetching a feed; this is
|
||||||
|
# mostly useful for debugging rawdog or feedparser.
|
||||||
|
showtracebacks false
|
||||||
|
|
||||||
|
# Whether to display verbose status messages saying what rawdog's doing
|
||||||
|
# while it runs. Specifying -v or --verbose on the command line is
|
||||||
|
# equivalent to saying "verbose true" here.
|
||||||
|
verbose false
|
||||||
|
|
||||||
|
# Whether to attempt to fix bits of HTML that should start with a
|
||||||
|
# block-level element (such as article descriptions) by prepending "<p>"
|
||||||
|
# if they don't already start with a block-level element.
|
||||||
|
blocklevelhtml true
|
||||||
|
|
||||||
|
# Whether to attempt to turn feed-provided HTML into valid HTML.
|
||||||
|
# The most common problem that this solves is a non-closed element in an
|
||||||
|
# article causing formatting problems for the rest of the page.
|
||||||
|
# For this option to have any effect, you need to have PyTidyLib or mx.Tidy
|
||||||
|
# installed.
|
||||||
|
tidyhtml true
|
||||||
|
|
||||||
|
# Whether the articles displayed should be sorted first by the date
|
||||||
|
# provided in the feed (useful for "planet" pages, where you're
|
||||||
|
# displaying several feeds and want new articles to appear in the right
|
||||||
|
# chronological place). If this is false, then articles will first be
|
||||||
|
# sorted by the time that rawdog first saw them.
|
||||||
|
sortbyfeeddate true
|
||||||
|
|
||||||
|
# Whether to consider articles' unique IDs or GUIDs when updating rawdog's
|
||||||
|
# database. If you turn this off, then rawdog will create a new article in its
|
||||||
|
# database when it sees an updated version of an existing article in a feed.
|
||||||
|
# You probably want this turned on.
|
||||||
|
useids true
|
||||||
|
|
||||||
|
# The fields to use when detecting duplicate articles: "id" is the article's
|
||||||
|
# unique ID or GUID; "link" is the article's link. rawdog will find the first
|
||||||
|
# one of these that's present in the article, and ignore the article if it's
|
||||||
|
# seen an article before (in any feed) that had the same value. For example,
|
||||||
|
# specifying "hideduplicates id link" will first look for id/guid, then for
|
||||||
|
# link.
|
||||||
|
# Note that some feeds use the same link for all their articles; if you specify
|
||||||
|
# "link" here, you will probably want to specify the "allowduplicates" feed
|
||||||
|
# argument (see below) for those feeds.
|
||||||
|
hideduplicates id
|
||||||
|
|
||||||
|
# The period to use for new feeds added to the config file via the -a|--add
|
||||||
|
# option.
|
||||||
|
newfeedperiod 3h
|
||||||
|
|
||||||
|
# Whether rawdog should automatically update this config file (and its
|
||||||
|
# internal state) if feed URLs change (for instance, if a feed URL
|
||||||
|
# results in a permanent HTTP redirect). If this is false, then rawdog
|
||||||
|
# will ask you to make the necessary change by hand.
|
||||||
|
changeconfig true
|
||||||
|
|
||||||
|
# The feeds you want to watch, in the format "feed period url [args]".
|
||||||
|
# The period is the minimum time between updates; if less than period
|
||||||
|
# minutes have passed, "rawdog update" will skip that feed. Specifying
|
||||||
|
# a period less than 30 minutes is considered to be bad manners; it is
|
||||||
|
# suggested that you make the period as long as possible.
|
||||||
|
# Arguments are optional, and can be given in two ways: either on the end of
|
||||||
|
# the "feed" line in the form "key=value", separated by spaces, or as extra
|
||||||
|
# indented lines after the feed line.
|
||||||
|
# possible arguments are:
|
||||||
|
# id Value for the __feed_id__ value in the item
|
||||||
|
# template for items in this feed (defaults to the
|
||||||
|
# feed title with non-alphanumeric characters and
|
||||||
|
# HTML markup removed)
|
||||||
|
# user User for HTTP basic authentication
|
||||||
|
# password Password for HTTP basic authentication
|
||||||
|
# format "text" to indicate that the descriptions in this feed
|
||||||
|
# are unescaped plain text (rather than the usual HTML),
|
||||||
|
# and should be escaped and wrapped in a <pre> element
|
||||||
|
# X_proxy Proxy URL for protocol X (for instance, "http_proxy")
|
||||||
|
# proxyuser User for proxy basic authentication
|
||||||
|
# proxypassword Password for proxy basic authentication
|
||||||
|
# allowduplicates "true" to disable duplicate detection for this feed
|
||||||
|
# maxage Override the global "maxage" value for this feed
|
||||||
|
# keepmin Override the global "keepmin" value for this feed
|
||||||
|
# define_X Equivalent to "define X ..." for item templates
|
||||||
|
# when displaying items from this feed
|
||||||
|
# You can provide a default set of arguments for all feeds using
|
||||||
|
# "feeddefaults". You can specify as many feeds as you like.
|
||||||
|
# (These examples have been commented out; remove the leading "#" on each line
|
||||||
|
# to use them.)
|
||||||
|
feeddefaults
|
||||||
|
killtags true
|
||||||
|
truncate 120
|
||||||
|
# http_proxy http://proxy.example.com:3128/
|
||||||
|
#feed 1h http://example.com/feed.rss
|
||||||
|
#feed 30m http://example.com/feed2.rss id=newsfront
|
||||||
|
#feed 3h http://example.com/feed3.rss keepmin=5
|
||||||
|
#feed 3h http://example.com/secret.rss user=bob password=secret
|
||||||
|
#feed 3h http://example.com/broken.rss
|
||||||
|
# format text
|
||||||
|
# define_myclass broken
|
||||||
|
#feed 3h http://proxyfeed.example.com/proxied.rss http_proxy=http://localhost:1234/
|
||||||
|
#feed 3h http://dupsfeed.example.com/duplicated.rss allowduplicates=true
|
||||||
|
|
||||||
|
# Wallabag
|
||||||
|
feed 3h https://github.com/wallabag/wallabag/releases.atom
|
||||||
|
# Dokuwiki
|
||||||
|
feed 3h https://github.com/splitbrain/dokuwiki/releases.atom
|
||||||
|
# ArchLinux
|
||||||
|
feed 3h https://archlinux.org/feeds/news/
|
||||||
|
# rawdog
|
||||||
|
feed 3h http://offog.org/git/rawdog.atom
|
||||||
|
# SabreDaV
|
||||||
|
feed 3h https://github.com/sabre-io/dav/releases.atom
|
||||||
|
# Shaarli
|
||||||
|
feed 3h https://github.com/shaarli/Shaarli/releases.atom
|
||||||
|
# Hugo
|
||||||
|
feed 3h https://github.com/gohugoio/hugo/releases.atom
|
16
rawdog/item.bl4n
Normal file
16
rawdog/item.bl4n
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<article class="message is-primary" id="item__hash__">
|
||||||
|
<div class="message-header feed-__feed_hash__ feed-__feed_id__">
|
||||||
|
<p><span class="tag is-dark">__feed_title__</span> __title__</p>
|
||||||
|
<p>
|
||||||
|
__if_author__
|
||||||
|
par __author____endif__
|
||||||
|
__if_date__
|
||||||
|
à __date____endif__
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
__if_description__
|
||||||
|
<div class="message-body">
|
||||||
|
__description__
|
||||||
|
</div>__endif__
|
||||||
|
</article>
|
||||||
|
<div> </div>
|
15
rawdog/item.dec23
Normal file
15
rawdog/item.dec23
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<!-- PAGE-BEGIN-ITEM -->
|
||||||
|
<div class="item" id="item__hash__">
|
||||||
|
<div class="itemheader feed-__feed_hash__ feed-__feed_id__">
|
||||||
|
<h4 class="itemtitle">__title__</h4>
|
||||||
|
<p class="itembyline">
|
||||||
|
__if_author__by __author____endif__
|
||||||
|
in __feed_title__
|
||||||
|
__if_date__at __date____endif__
|
||||||
|
</div>
|
||||||
|
__if_description__<div class="itemdescription">
|
||||||
|
__description__
|
||||||
|
</div>__endif__
|
||||||
|
</div>
|
||||||
|
<!-- PAGE-END-ITEM -->
|
||||||
|
|
47
rawdog/plugins/truncate.py
Normal file
47
rawdog/plugins/truncate.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# rawdog plugin to truncate article descriptions to N characters.
|
||||||
|
# Copyright 2006, 2013 Adam Sampson <ats@offog.org>
|
||||||
|
#
|
||||||
|
# To use this, give the feed you want to truncate a "truncate" argument:
|
||||||
|
# feed 30m http://offog.org/books/feed.rss
|
||||||
|
# truncate 40
|
||||||
|
#
|
||||||
|
# To truncate all articles, make that a default option for all feeds:
|
||||||
|
# feeddefaults
|
||||||
|
# truncate 40
|
||||||
|
#
|
||||||
|
# You can also remove all HTML tags from the descriptions before truncating
|
||||||
|
# them, which'll make the formatting a bit nicer if you're aiming for very
|
||||||
|
# short descriptions:
|
||||||
|
# killtags true
|
||||||
|
|
||||||
|
import rawdoglib.plugins, re
|
||||||
|
|
||||||
|
def article_seen(rawdog, config, article, ignore):
|
||||||
|
fargs = rawdog.feeds[article.feed].args
|
||||||
|
n = int(fargs.get("truncate", "0"))
|
||||||
|
killtags = fargs.get("killtags", False) == "true"
|
||||||
|
|
||||||
|
def process(detail, n):
|
||||||
|
v = detail["value"]
|
||||||
|
if killtags:
|
||||||
|
v = re.sub(r'<[^>]*>', ' ', v)
|
||||||
|
if n != 0 and len(v) > n:
|
||||||
|
# Don't break a tag in half.
|
||||||
|
l = v.rfind("<", 0, n)
|
||||||
|
r = v.rfind(">", 0, n)
|
||||||
|
if l != -1 and r < l:
|
||||||
|
n = l
|
||||||
|
|
||||||
|
v = v[:n].rstrip() + "..."
|
||||||
|
detail["value"] = v.strip()
|
||||||
|
|
||||||
|
ei = article.entry_info
|
||||||
|
if "content" in ei:
|
||||||
|
for detail in ei["content"]:
|
||||||
|
process(detail, n)
|
||||||
|
if "summary_detail" in ei:
|
||||||
|
process(ei["summary_detail"], n)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
rawdoglib.plugins.attach_hook("article_seen", article_seen)
|
45
rawdog/template.bl4n
Normal file
45
rawdog/template.bl4n
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta name="generator" content="rawdog __version__" />
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<title>Papa Ogre veille au grain</title>
|
||||||
|
<link rel="stylesheet" href="bulma.min.css">
|
||||||
|
<style>
|
||||||
|
.items .day h2 {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<section class="hero is-primary">
|
||||||
|
<div class="hero-body">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="title">
|
||||||
|
Papa Ogre veille au grain 
|
||||||
|
</h1>
|
||||||
|
<h2 class="subtitle">
|
||||||
|
__num_items__ items from __num_feeds__ feeds
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="pagination">
|
||||||
|
__paged_output_pages__
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="section items">
|
||||||
|
__items__
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="pagination">
|
||||||
|
__paged_output_pages__
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
25
rawdog/template.dec23
Normal file
25
rawdog/template.dec23
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||||
|
<link rel="stylesheet" href="style-dec23.css" type="text/css">
|
||||||
|
<title>Papa Ogre veille au grain</title>
|
||||||
|
</head>
|
||||||
|
<body id="rawdog">
|
||||||
|
<div id="page">
|
||||||
|
<div id="header">
|
||||||
|
<h1>rawdog __version__: __num_items__ items from __num_feeds__ feeds</h1>
|
||||||
|
</div>
|
||||||
|
<div class="pages">
|
||||||
|
__paged_output_pages__
|
||||||
|
</div>
|
||||||
|
<div id="items">
|
||||||
|
__items__
|
||||||
|
</div>
|
||||||
|
<div class="pages">
|
||||||
|
__paged_output_pages__
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user