Доброй ночи, совы =) Сегодня мне удалось написать скрипт, который (пока что локально) загружает ваши посты из Голоса и делает из них CSV файл, который можно открыть в LibreOffice Calc или Google Drive.
Первая часть эпопеи с загрузкой данных - вот в этом посте.
Сегодня я продолжил свои эксперименты. К сожалению, я пока не пытал напрямую гугл драйв (хотя это, скорее всего, впереди) - зато сделал скрипт, bash-конвертер, который строит из ваших постов единый CSV-файл (Comma-Separated Values, значения, разделенные запятой - простейший формат таблицы или базы данных).
Не буду долго объяснять вам всю полезность этого скрипта, вместо этого просто покажу, что в итоге получается.
Вот такая удобная табличка, в которой вы можете делать собственные выводы, строить графики и так далее
А вот так выглядит успешно отработавший скрипт в bash:
Код скрипта (возьмите лучше его с моего pastebin) или см. ниже
#!/bin/bash
tempfile="temp.articles.temp" # Temp file (for articles list)
nu="http://node.golos.ws" # Node URL
af="articles" # Article folder
mkdir $af
echo "Welcome! Let's look at articles list of user @$1 - loading articles."
# Loading articles list from user $1
x=$(curl -s --data '{"method": "get_discussions_by_author_before_date", "params": ["'$1'","","2016-06-06T00:00:00","100"], "id": 1 }' $nu)
echo $x | jq -r 'recurse(.result.url[])?' | grep "url\":" | awk -F\" '{ print $4 }' | awk -F"/" '{ print $4 }' >> $tempfile
echo "Finished, I found total of "$(cat $tempfile | wc -l)" articles of user "$1
# Creating a template for CSV file
t=0
echo -e "\"Title\",\"Date\",\"Comments\",\"Votes\",\"Gold\",\"Tag1\",\"Tag2\",\"Tag3\",\"Tag4\",\"Tag5\",\"Images\",\"Text length\"" >> $af/allarticles.$1
# Starting a loop over $tempfile
while read p; do
((t++))
echo "Saving article $t: $p"
y=$(curl -s --data '{"method": "get_content", "params": ["'$1'","'$p'"], "id": 1 }' $nu)
echo $y | jq -r '.result.title,.result.created,.result.children,.result.net_votes,.result.total_payout_value,[.result.json_metadata|fromjson.tags],[.result.json_metadata|fromjson.image|length],[.result.body|length]' > $af/$p.$1
# Following code takes data from saved articles file and builds an index article file
title=$(sed '1q;d' $af/$p.$1)
time=$(sed '2q;d' $af/$p.$1)
comments=$(sed '3q;d' $af/$p.$1)
votes=$(sed '4q;d' $af/$p.$1)
gold=$(sed '5q;d' $af/$p.$1)
t1=$(sed '8q;d' $af/$p.$1)
t2=$(sed '9q;d' $af/$p.$1)
t3=$(sed '10q;d' $af/$p.$1)
t4=$(sed '11q;d' $af/$p.$1)
t5=$(sed '12q;d' $af/$p.$1)
images=$(sed '16q;d' $af/$p.$1)
symbols=$(sed '19q;d' $af/$p.$1)
echo -e "\"$title\",\"$time\",\"$comments\",\"$votes\",\"$gold\",$t1$t2$t3$t4$t5,\"$images\",\"$symbols\"" >> $af/allarticles.$1
done < $tempfile
# Remove tempfile if you like:
rm $tempfile
Для простоты вы можете скачать себе скрипт на ПК и сделать его исполняемым 1 командой:
wget -O articles.sh https://pastebin.com/raw/kxxsQuS6 && chmod +x articles.sh
Затем, чтобы запустить скрипт, используйте
./articles.sh sxiii
Разумеется, заменив sxiii на ваш никнейм с платформы Голос.
ВНИМАНИЕ! В настоящий момент логика скрипта подразумевает, что у вас у кажого поста проставлено 5 тэгов (т.е. максимум). Если где-то меньше, советую отредактировать посты и добавить дополнительные теги - статье хуже не станет, а строчки с результате работы скрипта не "поедут". В будущей версии, возможно, буду handle (обрабатывать) этот момент.
В следующем этапе разработки данного скрипта я постараюсь также сделать прямую загрузку данных в Google Таблицы, минуя ваш ПК.
Если вам пригодился мой скрипт или есть идеи по его развитию (или вы вдруг знаете как напрямую легче всего загнать данные в Google Таблицы), пишите комментарии.
Всегда рад!
С уважением,
Айтишник, линуксоид из Ростова-на-Дону
Den Ivanov aka sxiii
Супер!
Жду продолжения :)
PS
Бо я задолбался настраивать ODBC на Либрофисе :(
А в чем проблема? И откуда проинстекает необходимость использования именно ODBC? Может я смогу подсказать, если подробнее расскажете, @radomir
Проблема в том, что я не админ в линуксе :)
Просто пользователь, а Odbc - ну чтобы подключиться к скл базе голоса и вытянуть данные в сводную таблицу. Просто в экселе оно по умолчанию есть, а в линуксе нет библиотек. Вчера вроде все доставил, но теперь ручками в ини файле надо настройки прописать...пока плюнул на это дело :(
Сделал для вас, @radomir - мини-статью-пост с инструкцией по подключению Linux к MSSQL. Вот:
https://golos.id/linux/@sxiii/instrukciya-podklyuchaem-linux-k-golosu-cherez-mssql-server-cli-toolkit-manual
Спасибо!!!
Нужно попробовать!)))
Хардкор! Обожаю такие статьи.
Спасибо. Буду продолжать в том же духе =)