#indieweb 2017-12-31
2017-12-31 UTC
snarfed joined the channel
[kevinmarks] joined the channel
# [kevinmarks] Trying to fill in the Lighthouse circles
# [kevinmarks] (I cropped out the PWA circle for now) https://files.slack.com/files-pri/T03QR2B2T-F8MLZ1SHM/screenshot_20171231-002557.png?pub_secret=dbf6e4e6e7&name=Screenshot_20171231-002557.png
# Loqi [indienews] New post: "Adding weather to my site" https://eddiehinkle.com/2017/12/30/20/article/
# j12t aaronpk: when I was doing the edits today: https://indieweb.org/Special:RecentChanges
# aaronpk just updated https://indieweb.org/File:indiewebcamp-button.png with the new logo!
[tantek] joined the channel
# @uboslinux End-to-end tutorials: how to set up an Indie Website with UBOS https://ubos.net/blog/2017/12/30/indieweb-end-to-end-tutorial.html #ubos #indieweb (twitter.com/_/status/947277460692918272)
# Loqi [indienews] New post: "New Tiny IndieWeb Badge!" https://aaronparecki.com/2017/12/30/7/indieweb-badge
wolftune joined the channel
gRegorLove_ and wolftune joined the channel
# strugee so I gotta run to dinner but I made a draft of what I thought an IndieMark badge might look like: https://people.strugee.net/~alex/indiemark%20template.svg
aexoxea joined the channel
# tomasparks strugge: I like
renem, snarfed and [eddie] joined the channel
# Loqi aaronpk: [eddie] left you a message 1 minute ago: After I did it I found It didn’t have the variety or color of icons I wanted. I was pretty disappointed. Then I realized I could put emojis. As I looked I found that the emojis were really what I always had in my mind and provided more opportunities for me.
# aaronpk these are the ones I use http://erikflowers.github.io/weather-icons/
tomasparks joined the channel
# KartikPrabhu [eddie]: you can also search for "weather" on https://icomoon.io/app/#/select
[miklb] joined the channel
# aaronpk woo it's alive! https://aaronparecki.com/2017/12/30/10/weather
[eddie] joined the channel
gRegorLove_ joined the channel
wolftune, gRegorLove, [miklb] and tomasparks joined the channel
# tomasparks strugee: generation badge
# tomasparks strugge: indiemark badge
pindonga and [kevinmarks] joined the channel
# [kevinmarks] The met Office have a very thorough set https://www.metoffice.gov.uk/guide/weather/symbols#weathersymbols
friedcell joined the channel
# Loqi [indienews/nl] New post: http://diggingthedigital.com/Leesmap-week-52/
friedcell joined the channel
# @frankmeeuwsen [Met tips naar @Kaliberinteract, @aaronpk en ander Indieweb nieuws!] De laatste leesmap van 2017 http://diggingthedigital.com/Leesmap-week-52/ (twitter.com/_/status/947391441306902529)
friedcell left the channel
# tomasparks Rhythmbox scrobbling notes system https://tomasparks.github.io//archive/2017/12/rhythmbox-notes-system.html
# Loqi I’ve just written Rhythmbox scrobbling system for my notes
the php script takes rhythmdb.xml located at /home/tom/.local/share/rhythmbox...
# tomasparks thanks loqi
# Loqi [indienews] New post: "I am curently writing a custom indieweb note system for my webiste, my requirements are different to most/all indieweb implementation as I need three different way of creating notes Text-editor, Browser and Offline
text-editor
I use a text editor to add entries to YAML file
This Github Sample is by tomasparks
_notes/local/2017/10.yml view raw
- date: 2017-10-19
type: twitter
message: "I've been watching Donald Trump and 'little rocket man' Kim Jong-un and it reminds me of [Team America: World Police](https://en.wikipedia.org/wiki/Team_America:_World_Police)"
- date: 2017-10-19
type: like
web Browser / mircopub
Unimplementated because I have not found a browser plugin/addon that support my wishlist1 yet, the closest i’ve found is Omnibear
Offline / CSV
I use a PDA2, when I away from my computers, the PDA has good database software witch can export CSV files
This Github Sample is by tomasparks
_notes/pda/2017/12.csv view raw
"twitter",,"its been 12 months sinceth glenfliet fire",,"15/12/2017"
"read","ASIN:B073GDQFJ2",,"page: 213","15/12/2017"
"read","ASIN:B073GDQFJ2","minitel ads were hated just as much as todays internet ads","page: 216-217","15/12/2017"
"bookmark","journey 1 and 2",,,"15/12/2017"
"read","ASIN:B073GDQFJ2",,"page: 251","16/12/2017"
data format
I am using the SQL format to demonstrate the data format
CREATE TABLE data (
date CHAR(255),
type CHAR(255),
tags CHAR(255),
url CHAR(255),
message TEXT
);
type is for the post type excluding articles
tags are a csv encoded key:value pairs
url are for Uniform Resource Identifier, I am currently using CSV ecoded key:value pairs, I am looking at using the Url Query format in the future
NOTE: data fomrat MUST be human editable
No url encoding
Source Code
This Github Sample is by tomasparks
_rake/notes.php view raw
#!/usr/bin/env php
<?php
// key: qhNU8kMDrqS2Ryk8ExmyA
//secret: 1tICNtAofpr0Coycb4eacrf4FcFCWSOzW8novjYL8
require_once './php-mf2/Mf2/Parser.php';
require_once './htmlpurifier/library/HTMLPurifier.auto.php';
require_once './goodreads-api/GoodReads.php';
function create_notes($data) {
foreach ($data as $note) {
print_r($note);
echo "\n";
$hash = hash ('sha1' , json_encode($note));
echo $hash."\n";
$date_split = date_parse($note['date']);
$isodate = sprintf("%04d-%02d-%02d", $date_split['year'], $date_split['month'], $date_split['day']);
$permdate = sprintf("%04d/%02d/%02d", $date_split['year'], $date_split['month'], $date_split['day']);
$mdfile = fopen($hash.".md", "w");
fwrite($mdfile, "---\n");
fwrite($mdfile, "layout: notes_".$note['type']."\n");
fwrite($mdfile, "date: ".$isodate."\n");
fwrite($mdfile, "type: ".$note['type']."\n");
//fwrite($mdfile, "date: ".$isodate."\n");
fwrite($mdfile, "permalink: /notes/".$note['type']."/".$permdate."/".$hash.".html\n");
switch ($note['type']) {
case "twitter":
//fwrite($mdfile, "ext-url: ".$note['url']."\n");
fwrite($mdfile, "---\n");
fwrite($mdfile, $note['message']."\n");
break;
case "like":
$html = file_get_contents($note['url']);
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$cleanhtml = $purifier->purify($html);
$mf = Mf2\parse($cleanhtml, $note['url']);
fwrite($mdfile, "ext-url: ".$note['url']."\n");
fwrite($mdfile, "---\n");
//fwrite($mdfile, $note['message']."\n");
break;
case "read";
$goodreads_api = new GoodReads('qhNU8kMDrqS2Ryk8ExmyA', '/home/tom/github/blog/website/_rake/tmp/');
$tags = $note['tags'];
if (array_key_exists("asin",$tags)) {
$data = $goodreads_api->getBookByISBN($tags['asin']);
}
if (array_key_exists("ASIN",$tags)) {
$data = $goodreads_api->getBookByISBN($tags['ASIN']);
}
$book = $data['book'];
fwrite($mdfile, "book-title: \"".$book['title']."\"\n");
fwrite($mdfile, "book-image_url: \"".$book['small_image_url']."\"\n");
fwrite($mdfile, "book-url: \"".$book['url']."\"\n");
//foreach($note['tags'] as $tagkey => $tag_value) {
//fwrite($mdfile, "tags-".$tagkey.": ".$tag_value."\n");
//}
//foreach($note['urls'] as $urlkey => $url_value) {
//fwrite($mdfile, "urls-".$urlkey.": ".$url_value."\n");
//}
fwrite($mdfile, "---\n");
fwrite($mdfile, $note['message']."\n");
//fwrite($mdfile,json_encode($book)."\n");
break;
default:
fwrite($mdfile, "---\n");
fwrite($mdfile, $note['message']."\n");
break;
}
fclose($mdfile);
}
}
function csv_parse_file ( $file ) {
echo "opening ".$file."....";
if (($handle = fopen($file, "r")) !== FALSE) {
echo "Done\n";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
print_r($data);
$res['type'] = $data['0'];
$tmpdate = date_create_from_format('d/m/Y', $data['4']);
$res['date'] = date_format($tmpdate, 'Y-m-d');
$res['message'] = $data['2'];
// $res['tag'] = $data['1'];
// $my_string = "key0:value0,key1:value1,key2:value2";
// tags
$oldtags_array = explode(',', $data['1']);
$tags_array = "";
for($i=0; $i < count($oldtags_array ); $i++){
$key_value = explode(':', $oldtags_array [$i]);
$tags_array[$key_value [0]] = $key_value [1];
}
$res['tags'] = $tags_array;
// url tags
if (strpos($data['3'], 'http') !== false) { $res['url'] = $data['3'];
} else {
$oldurl_array = explode(',', $data['3']);
$url_array = "";
for($i=0; $i < count($oldurl_array ); $i++){
$key_value = explode(':', $oldurl_array [$i]);
$url_array[$key_value [0]] = $key_value [1];
}
$res['urls'] = $url_array;
}
$ret[] = $res;
}
}
fclose($handle);
return $ret;
}
$path = getcwd();
$notes_path = str_replace("_rake","_notes",$path);
chdir($notes_path);
$notes_dir = scandir($notes_path);
foreach ($notes_dir as $dir) {
if ($dir === "." or $dir === ".." )
{continue;}
chdir($notes_path."/".$dir);
$year_dir = scandir($notes_path."/".$dir);
foreach ($year_dir as $ydir) {
if ($ydir === "." or $ydir === "..") {continue;}
chdir($notes_path."/".$dir."/".$ydir);
echo getcwd()."\n";
$filelist = scandir($notes_path."/".$dir."/".$ydir);
foreach ($filelist as $file) {
if ($file === "." or $file === "..") {continue;}
switch(true) {
case strstr($file, "md"):
echo "skipping md file\n";
continue 2;
case strstr($file, "yml"):
echo "yml file\n";
$data = yaml_parse_file ( $file );
create_notes($data);
break;
case strstr($file, "csv"):
echo "CSV file\n";
$data = csv_parse_file ( $file );
create_notes($data);
break;
}
}
}
}
?>
Support like/comments, UPDATE: I found own your comments and IndieWeb Reply Browser-Extension, but they seam like they have code rot :( ↩
It’s as psion 5mx Pro ↩
Date: 26 Dec 2017
Permalink: https://tomasparks.github.io//archive/2017/12/notes-system.html
Also posted on IndieNews
my photo
Tom Sparks
email,
I am a Alternative Technology Researcher, with a focus on Digital Communication Networks." https://tomasparks.github.io//archive/2017/12/notes-system.html# Loqi [indienews] New post: "I’ve just written Rhythmbox scrobbling system for my notes
the php script takes rhythmdb.xml located at /home/tom/.local/share/rhythmbox/ and creates a yml file
This Github Sample is by tomasparks
_notes/local/2017/r12.yml view raw
---
- date: "2017-10-16 06:21:22"
type: scrobble
tags: title=netic+jazzin+it+up&artist=netic&album=Unknown&play-count=1
- date: "2017-10-25 16:37:29"
Source Code
This Github Sample is by tomasparks
_rake/rhythmdb2notes.php view raw
#!/usr/bin/env php
<?php
if (file_exists('/home/tom/.local/share/rhythmbox/rhythmdb.xml')) {
$xml = simplexml_load_file('/home/tom/.local/share/rhythmbox/rhythmdb.xml');
//$json = json_encode($xml);
//$data = json_decode($json,TRUE);
$path = getcwd();
$notes_path = str_replace("_rake","_notes",$path);
chdir($notes_path);
foreach ($xml as $value){
echo "-----\n";
$json = json_encode($value);
$data = json_decode($json,TRUE);
//print_r($data);
//echo "\n---\n".json_encode($data)."\n----\n";
$att = $data['@attributes'];
if ($att['type']== "song") {
if ($data['play-count'] >= "1") {
$tags['title'] = $data['title'];
$tags['artist'] = $data['artist'];
$tags['album'] = $data['album'];
$tags['play-count'] = $data['play-count'];
$epoch = $data['last-played'];
$date = new DateTime("@$epoch");
$res['date'] = $date->format('Y-m-d H:i:s');
$res['type'] = "scrobble";
$res['tags'] = http_build_query($tags);
$ret[] =$res;
unset($res);
}
echo "--\n";
}
if ($att['type']== "podcast-post") {
if ($data['play-count'] >= "1") {
$tags['title'] = $data['title'];
$tags['artist'] = $data['artist'];
$tags['album'] = $data['album'];
$tags['play-count'] = $data['play-count'];
$epoch = $data['last-played'];
$date = new DateTime("@$epoch");
$res['date'] = $date->format('Y-m-d H:i:s');
$res['type'] = "scrobble";
$res['tags'] = http_build_query($tags);
$ret[] =$res;
unset($res);
}
echo "--\n";
}
}
echo yaml_emit($ret)."\n";
chdir($notes_path."/local/".date("Y"));
yaml_emit_file ("r".date("m").".yml" , $ret);
} else {
exit('Failed to open /home/tom/.local/share/rhythmbox/rhythmdb.xml.');
}
?>
i’ve updated and cleaned notes.php
This Github Sample is by tomasparks
_rake/notes.php view raw
#!/usr/bin/env php
<?php
// key: qhNU8kMDrqS2Ryk8ExmyA
//secret: 1tICNtAofpr0Coycb4eacrf4FcFCWSOzW8novjYL8
require_once './php-mf2/Mf2/Parser.php';
require_once './htmlpurifier/library/HTMLPurifier.auto.php';
require_once './goodreads-api/GoodReads.php';
date_default_timezone_set(' Australia/Brisbane');
function create_notes($data,$logfile) {
foreach ($data as $note) {
//print_r($note);
if (isset($note['tags']) && !is_array($note['tags'])) {
$temp = urldecode ( $note['tags'] );
parse_str($temp, $tag_array);
$note['tags'] = $tag_array;
//fwrite($logfile,$temp."\n");
}
//$note['tags'] = tags($note['$tags'],$logfile);
//echo "\n";
$hash = hash ('sha1' ,json_encode($note));
//fwrite($logfile, $hash."\n");
// echo $hash."\n";
fwrite($logfile, "\n--------------------\nhash: ".$hash."\njson_encode: ".json_encode($note)."\n--------------------\n");
if (isset($note['url'])) {
$url = str_ireplace("www.","",parse_url($note['url'], PHP_URL_HOST));
}
$date_split = date_parse($note['date']);
$isodate = date("c", strtotime($note['date']));
$permdate = sprintf("%04d/%02d/%02d", $date_split['year'], $date_split['month'], $date_split['day']);
$months = array (1=>'January',2=>'February',3=>'March',
4=>'April',5=>'May',6=>'June',7=>'July',8=>'August',
9=>'September',10=>'October',11=>'November',12=>'December');
unset($md_array);
$md_array['layout'] = "notes_".$note['type'];
$md_array['date'] = $isodate;
$md_array['type'] = $note['type'];
//$mdfile = fopen($hash.".md", "w");
//fwrite($mdfile, "---\n");
//fwrite($mdfile, "layout: notes_".$note['type']."\n");
//fwrite($mdfile, "date: ".$isodate."\n");
//fwrite($mdfile, "type: ".$note['type']."\n");
//fwrite($mdfile, "date: ".$isodate."\n");
unset($categories_array);
$categories_array[] = $note['type'];
$categories_array[] = $months[(int)$date_split['month']];
$categories_array[] = $date_split['year'];
$categories_array[] = $date_split['day'];
//fwrite($mdfile, "categories: \n");
//fwrite($mdfile, " - ".$note['type']."\n");
// dates
//fwrite($mdfile, " - ".$date_split['year']."\n");
//fwrite($mdfile, " - ".$months[(int)$date_split['month']]."\n");
//fwrite($mdfile, " - ".$date_split['day']."\n");
// url
if (isset($url)) {
// fwrite($mdfile, " - ".$url."\n");
$categories_array[] = $url;
}
switch ($note['type']) {
// -------------------------------------------------------------------------------------------------------------------------------------
// #####################################################################################################################################
case "scrobble":
$categories_array[] = $tag_array['title'];
$categories_array[] = $tag_array['artist'];
$categories_array[] = $tag_array['album'];
$md_array['music-title'] = $tag_array['title'];
$md_array['music-artist'] = $tag_array['artist'];
$md_array['music-album'] = $tag_array['album'];
$md_array['music-play-count'] = $tag_array['play-count'];
$md_array['permalink'] ="/notes/".$note['type']."/".urlencode($tag_array['artist'])."/".urlencode($tag_array['album'])."/".$hash.".html";
break;
// #####################################################################################################################################
case "twitter":
$md_array['permalink'] ="/notes/".$note['type']."/".$permdate."/".$hash.".html";
//fwrite($mdfile, "ext-url: ".$note['url']."\n");
//fwrite($mdfile, "---\n");
//fwrite($mdfile, $note['message']."\n");
break;
// #####################################################################################################################################
case 'reply':
$md_array['permalink'] ="/notes/".$note['type']."/".$url."/".$permdate."/".$hash.".html";
$html = file_get_contents($note['url']);
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$cleanhtml = $purifier->purify($html);
$mf = Mf2\parse($cleanhtml, $note['url']);
$md_array['ext-url'] = $note['url'];
break;
// #####################################################################################################################################
case "like":
$md_array['permalink'] ="/notes/".$note['type']."/".$url."/".$permdate."/".$hash.".html";
$html = file_get_contents($note['url']);
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$cleanhtml = $purifier->purify($html);
$mf = Mf2\parse($cleanhtml, $note['url']);
$md_array['ext-url'] = $note['url'];
$md_array['title'] = "Liked a page on ".$url;
//fwrite($mdfile, $note['message']."\n");
break;
// #####################################################################################################################################
case "read";
$md_array['permalink'] ="/notes/".$note['type']."/".$permdate."/".$hash.".html";
$goodreads_api = new GoodReads('qhNU8kMDrqS2Ryk8ExmyA', '/home/tom/github/blog/website/_rake/tmp/');
$urls = $note['urls'];
$tags = $note['tags'];
$page = $tags['page'];
if ($page =="finshed")
{$status ="Finished";} else {$status ="Currently";}
if (array_key_exists("asin",$urls)) {
$data = $goodreads_api->getBookByISBN($urls['asin']);
}
if (array_key_exists("ASIN",$urls)) {
$data = $goodreads_api->getBookByISBN($urls['ASIN']);
}
$book = $data['book'];
fwrite($logfile,json_encode($book)."\n");
$md_array['book-title'] =$book['title'];
$md_array['book-image_url'] =$book['small_image_url'];
$md_array['book-url'] = $book['url'];
$md_array['page'] =$page;
$md_array['status'] =$status;
break;
// #####################################################################################################################################
default:
$md_array['permalink'] ="/notes/".$note['type']."/".$permdate."/".$hash.".html";
break;
// -------------------------------------------------------------------------------------------------------------------------------------
}
$md_array['categories']=$categories_array;
$frontmatter = yaml_emit ($md_array);
$frontmatter = str_ireplace("...","---",$frontmatter);
$mdfile = fopen($hash.".md", "w");
fwrite($mdfile, $frontmatter);
if (array_key_exists("message",$note)) {
fwrite($mdfile, $note['message']."\n");
}
fclose($mdfile);
}
}
// ================================
function csv_parse_file ( $file,$logfile ) {
//echo "opening ".$file."....";
if (($handle = fopen($file, "r")) !== FALSE) {
//echo "Done\n";
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
fwrite($logfile,json_encode($data)."\n");
/*
0: type
1: url
2: messages
3: tags
4: date
*/
unset($res);
$res['type'] = $data['0'];
$tmpdate = date_create_from_format('d/m/Y', $data['4']);
$res['date'] = date_format($tmpdate, 'Y-m-d');
$res['message'] = $data['2'];
$res['source']="csv";
// tags ===============================================
unset($tags_array);
//$data['3'] = urldecode ( $data['3'] );
if (!strlen($data['3']) == 0 && !is_null($data['3'])) {
//parse_str($data['3'], $tags_array);
$oldtags_array = explode(',', $data['3']);
$tags_array = "";
for($i=0; $i < count($oldtags_array ); $i++){
$key_value = explode(':', $oldtags_array [$i]);
$tags_array[$key_value [0]] = $key_value [1];
}
//echo "tags_array===============================================\n";
//print_r($tags_array);
fwrite($logfile,json_encode($tags_array)."\n");
//echo "===============================================\n";
$res['tags'] = $tags_array;
}
// ======================================================
// url tags ===========================================
unset($url_array);
if (!strlen($data['1']) == 0 && !is_null($data['1'])) {
//print_r($data['1']);
//echo "\n";
switch (true) {
case stristr($data['1'], 'http'):
//echo "found http\n";
$res['url'] = $data['1'];
//echo "url===============================================\n";
//print_r($res['url']);
//echo "===============================================\n";
break;
case parse_url($data['1'], PHP_URL_QUERY);
//echo "found query\n";
//print_r(parse_url($url, PHP_URL_QUERY));
break;
case stristr($data['1'], 'ASIN'):
//echo "found asin\n";
$key_value = explode(':', $data['1']);
$url_array[$key_value [0]] = $key_value [1];
$res['urls'] = $url_array;
//echo "url===============================================\n";
//print_r($res['urls']);
//echo "===============================================\n";
break;
case stristr($data['1'], 'ISBN'):
//echo "found isbn\n";
$key_value = explode(':', $data['1']);
$url_array[$key_value [0]] = $key_value [1];
$res['urls'] = $url_array;
//echo "url===============================================\n";
//print_r($res['urls']);
//echo "===============================================\n";
break;
case stristr($data['1'], 'IMDB'):
//echo "found IMDB\n";
$key_value = explode(':', $data['1']);
$url_array[$key_value [0]] = $key_value [1];
$res['urls'] = $url_array;
//echo "url===============================================\n";
//print_r($res['urls']);
//echo "===============================================\n";
break;
case stristr($data['1'], 'TVDB'):
//echo "found TVDB\n";
$key_value = explode(':', $data['1']);
$url_array[$key_value [0]] = $key_value [1];
$res['urls'] = $url_array;
//echo "url===============================================\n";
//print_r($res['urls']);
//echo "===============================================\n";
break;
/*
case strstr($data['1'], ','):
$oldurl_array = explode(',', $data['1']);
$url_array = "";
for($i=0; $i < count($oldurl_array ); $i++){
$key_value = explode(':', $oldurl_array [$i]);
$url_array[$key_value [0]] = $key_value [1];
}
$res['urls'] = $url_array;
echo "url_array===============================================\n";
print_r($res['urls']);
echo "===============================================\n";
$url_array="";;
break;
*/
}
}
// ===========================================
//echo "res===============================================\n";
//print_r($res);
//echo "===============================================\n";
fwrite($logfile,json_encode($res)."\n");
$ret[] = $res;
}
}
fclose($handle);
return $ret;
}
function tags($tags,$logfile) {
$temp = urldecode ( $tags );
parse_str($temp, $output);
fwrite($logfile,json_encode($output)."\n");
return $output;
}
$path = getcwd();
$logfile = fopen("log.log", "w");
global $logfile;
$notes_path = str_replace("_rake","_notes",$path);
chdir($notes_path);
$notes_dir = scandir($notes_path);
fwrite($logfile,json_encode($notes_dir)."\n");
foreach ($notes_dir as $dir) {
fwrite($logfile,$dir."\n");
if ($dir === "." or $dir === ".." ) {continue;}
chdir($notes_path."/".$dir);
$year_dir = scandir($notes_path."/".$dir);
fwrite($logfile,json_encode($year_dir)."\n");
foreach ($year_dir as $ydir) {
fwrite($logfile,$ydir."\n");
if ($ydir === "." or $ydir === "..") {continue;}
chdir($notes_path."/".$dir."/".$ydir);
echo getcwd()."\n";
$filelist = scandir($notes_path."/".$dir."/".$ydir);
fwrite($logfile,json_encode($filelist)."\n");
foreach ($filelist as $file) {
if ($file === "." or $file === "..") {continue;}
switch(true) {
case strstr($file, "log"):
//echo $file." skipping log file\n";
fwrite($logfile,$file." skipping log file\n");
continue 2;
case strstr($file, "md"):
//echo $file." skipping md file\n";
fwrite($logfile,$file." skipping md file\n");
continue 2;
case strstr($file, "yml"):
//echo $file."yml file\n";
fwrite($logfile,$file." yml file :) \n");
$data = yaml_parse_file ( $file );
//fwrite($logfile,"\n-------------------\n".json_encode($data)."\n-------------------\n");
create_notes($data, $logfile);
break;
case strstr($file, "csv"):
//echo $file." CSV file\n";
fwrite($logfile,$file." csv file :) \n");
$data = csv_parse_file ( $file, $logfile );
create_notes($data, $logfile);
break;
}
}
}
}
fclose($logfile);
?>
Date: 31 Dec 2017
Permalink: https://tomasparks.github.io//archive/2017/12/rhythmbox-notes-system.html
Also posted on IndieNews
my photo
Tom Sparks
email,
I am a Alternative Technology Researcher, with a focus on Digital Communication Networks." https://tomasparks.github.io//archive/2017/12/rhythmbox-notes-system.html# KartikPrabhu what the hell^ !
# KartikPrabhu judas priest!
# KartikPrabhu aaronpk: you should really fix the superfeedr and indienews postings here
# tomasparks WTF is loqi doing
# aexoxea Patience is a virtue...
# aexoxea I'll admit, there's a perverse side of me that was wondering with a grin if it was just going to keep looping...
# aexoxea Thankfully not.
# tomasparks sorry just submit two articles to indienews
# KartikPrabhu Loqi wans't looping it was two different pings
# aexoxea Third article lined up? ;-)
# KartikPrabhu notes don't have a p-name or have a p-name = e-content
# KartikPrabhu yes
# tomasparks i just reupoaded after loqi started talking
# tomasparks i am afraid of resubmit them
# aexoxea Now, with the end of the year approaching and my being new to the IndieWeb concept, I'd like to say "Thank you!" for the body of work everyone has collectively done on this (and which has helped me out a lot), and wish one and all a great 2018.
# tomasparks found the issue my p-name is outside of h-entry
catsup joined the channel
catsup joined the channel
# tomasparks fixed and resubmit to indienews :)
friedcell joined the channel
friedcell joined the channel; friedcell left the channel
# Loqi [superfeedr] "More browser, less Facebook" by Fabian on 2017-12-31 http://feedproxy.google.com/~r/FriendlyAnarchist/~3/k0ik9gRVHnU/
[kevinmarks], wolftune, [colinwalker] and KevinMarks joined the channel
blahblah and KevinMarks joined the channel
[kevinmarks] and snarfed joined the channel
# @kevinmarks @samim http://Indieweb.org is here to help you and @torgo do that (twitter.com/_/status/947489662188302341)
jjuran, KevinMarks, danlyke, sonicrocketman, doubleloop, tomasparks, aaronpk, [kevinmarks] and [eddie] joined the channel
# Loqi [superfeedr] "“Personal data sovereignty so that we control our data and provision it via API keys, etc to the digital services we use.” @fredwilson embracing #indieweb" by Kevin Marks on 2017-12-31 http://known.kevinmarks.com/2017/personal-data-sovereignty-so-that-we-control-our-data-and
snarfed, botka1, yar, KevinMarks, nitot, wolftune and skvist joined the channel
# @philnelson In 2018 we remind everyone why the #indieweb is better. (twitter.com/_/status/947520834565894144)
snarfed joined the channel
# Loqi [indienews] New post: https://aaronparecki.com/2017/12/31/3/indienews
KevinMarks and [eddie] joined the channel
[kevinmarks] joined the channel
# [kevinmarks] Calendar view is a bit odd on mobile
CamB and CamB_ joined the channel
# CamB_ Good day!
# CamB_ :)
# CamB_ I am still trying to find a way to do filtered web searches for webmentions. Coming up empty. Are there any Open source crawlers?
# CamB_ Yes :)
# CamB_ Sorry. Say I'm reading a post that doesn't accept webmentions, but I want to search the web to see if someone else has written a reply tagged with microformats.
# CamB_ reply/comment
# CamB_ No such software available yet?
# aaronpk cweiske wrote a search engine that indexes microformats, but his goal is not to crawl the entire web, tho you could use it for that if you wanted to http://git.cweiske.de/phinde.git
# CamB_ say maybe I just crawled a list of "friends" sites. I would find that usefull.
# CamB_ Thank you! looking at it.
# CamB_ Is that the best option that you know of? I'm a fan of the distributed p2p search engine Yacy. I'm hoping to find some info to help integrate microformats in Yacy. One of the developers there is actually the one that made me aware of microformats in the first place.
gRegorLove joined the channel
KartikPrabhu joined the channel
[kevinmarks] joined the channel
curve25519 joined the channel
[eddie] joined the channel
tantek, KevinMarks and AngeloGladding joined the channel
# Zegnat strugee, if you have a Micropub client you want to test, may I point you at https://sink.zegnat.net/ ? ;)
KartikPrabhu, KevinMarks, wolftune, [kevinmarks] and tomasparks joined the channel
[miklb] joined the channel
gRegorLove_ joined the channel
# gRegorLove_ How is the future?
KevinMarks, tantek and tantek_ joined the channel
tantek joined the channel
KartikPrabhu joined the channel
snarfed joined the channel