InstaLOC: Accountrecherchen auf Basis der Likes und Comments

Die modifizierten Datenbankspalten erlauben nun genauere Accountbegutachtungen für Influencerrecherchen, Suche nach Trendursprüngen und die folgenden Queries verdeutlichen die Anwendungsszenarien:

(1) User zu Location
SELECT location, username as Nutzer, Anz_Likes from(
Select location, username, sum(likes) as Anz_likes from locations GROUP BY username ) as my_table
where location like '%hotel%' order by Anz_Likes DESC

Diese Abfrage verschafft einen Überblick zu den Usernames. Hierbei werden die Beiträge den Locations zugeordnet und die Likes aufsummiert.
Aufgaben:
(a) Auflistung der Accounts, welche bei den Locations eventuell Trends setzen
(b) Auflistung der Influenceraccounts, welche an den Locations für Reichweite sorgen (können)

(2) Userbewertung – Basis
SELECT username as Nutzer, Anz_Likes from(
Select username, sum(likes) as Anz_likes from locations GROUP BY username ) as my_table order by Anz_Likes DESC

Diese Abfrage verschafft einen Überblick zu den Usern in Verbindung mit den aufsummierten Likes.
Aufgaben:
(a) Erste Grobrecherche

(3) User zu Location und Zeitfenster
SELECT location, username as Nutzer, Anz_Likes from(
Select location, erstellzeit, username, sum(likes) as Anz_likes from locations GROUP BY username ) as my_table
where (erstellzeit like '%.2016%') and (location like '%hotel%') order by Anz_Likes DESC

Diese Abfrage verschafft einen Überblick zu den Usernames. Hierbei werden die Beiträge den Locations zugeordnet, nach einem Zeitfenster gefiltert und die Likes aufsummiert.
Aufgaben:
(a) Auflistung der Accounts, welche bei den Locations eventuell Trends setzen
(b) Auflistung der Influenceraccounts, welche an den Locations für Reichweite sorgen (können)

Diese Abfragen lassen sich recht problemlos auf die Tagwolken umschreiben.
Die Rechercheoptionen werden zeitnah in den neuen Client überführt und via Reports in die Beratungsprojekte integriert.

InstaLOC: letzte Bugfixes und Datenbankupdates

Per sofort wurden die Datenbankspalten „likes“ und „comments“ von „VARCHAR“ auf „INTEGER“ gewechselt.

Diese Modifikation erlaubt nun tiefergehende Location-, Themenwelten- und Hashtagbegutachtungen auf Basis der Werthaltigkeitsindikatoren „likes“ und „comments“.

Folgende Queries verdeutlichen das:

(1) Basis-Abfrage 01
select tag, likes,comments, location from locations where (location like '%leipzig%') and (likes > 10) order by likes DESC
Exportdatei: LE_likes (ZIP, CSV)
Erklärung: Die Datei beinhaltet die Daten „Tagwolke“, Anzahl Comments+Likes, die Locations aus der Datenbank, wo der Locationname die Zeichenkette „Leipzig“ trägt. Es werden Ergebnisse ausgespielt, welche mind. 10 Likes beinhalten.

(2) Basis-Abfrage 02
select tag, likes,comments, location from locations where (tag like '%thisis%') and (location like '%leipzig%') and (likes > 10) order by likes DESC
Exportdatei: LE_tags_likes (ZIP, CSV)
Erklärung: Die Datei beinhaltet die Daten „Tagwolke“, Anzahl Comments+Likes, die Locations aus der Datenbank, wo der Locationname die Zeichenkette „Leipzig“ trägt UND wo in der Tagwolke die Zeichenkette „thisis“ vorkommt. Es werden Ergebnisse ausgespielt, welche mind. 10 Likes beinhalten.

(3) Locationbewertung nach Likes / Comments
SELECT location as Ort, Anz_Likes from(
Select location, sum(likes) as Anz_likes from locations GROUP BY location ) as my_table
WHERE (Anz_Likes >= 2) AND (location like '%leipzig%') order by Anz_Likes DESC

Exportdatei: LE_locs_likes (ZIP, CSV)
Erklärung: Die Datei summiert alle vorhandenen Likes zu den Locations mit Zeichenkettenabschnitt „leipzig“ auf und erlaubt einen ersten Überblick dazu, wie „beliebt“ die recherchierten Locations – nach den Instagramdaten – sind. Die Abfrage muss hier – bei Bedarf – auf die Comments umgeschrieben werden. Das ist recht einfach so zu erledigen, dass aus „sum(likes)“ eben „sum(comments)“ geschrieben wird. Ich werde noch prüfen, wie die Aufsummierung der Likes UND Comments in einem Export / Report zu lösen ist.

(4) Tagwolkenbewertung nach Likes / Comments
SELECT tag as Ort, location, Anz_Likes from(
Select tag, location, sum(likes) as Anz_likes from locations GROUP BY tag ) as my_table
WHERE (tag like '%thisis%') order by Anz_Likes DESC

Exportdatei: LE_tagsumlikes (ZIP, CSV)
Erklärung: Die Ausgabedatei beinhaltet die Auflistung aller „unique“ Tagwolken, deren Locations und die Aufsummierung der Likes (optional: Comments).

Die neuen Recherchefunktionen werden zeitnah in den Client übertragen.

Anleitung: Datenbankmodifikation (YT)

InstaLOC – Sichtung und Abfragen bzgl. der „Themenweltdatenbank“

Für die Prüfung und auch „Eichung“ der erweiterten Datenquelle (hier: Tagsearch mit Ergänzung zu den Locations) wurde eine Themenweltdatenbank angelegt, welche auch durch aktuelles Zeitgeschehen inspiriert ist.

Der Scraper benötigte 20 Stunden für die Erfassung der Daten, wobei diese Zeit auf 2 Tage verteilt und eine Liste mit ca. 6000 „Spezialterms“ abgearbeitet wurde.

Datenbankstatistik:
Anz. Einträge: 1238290
Anz. Filter: 45
Anz. Tagsclouds: 1011505
Anz. Locations: 110648
Anz. Accounts: 553799
Anz. Posting/Zeitstempel: 806680
Dateigröße (Byte): 689319936

Beispielabfragen:
(1) select location, erstellzeit from locations where (tag like ‚%22aXX%22‘) and (tag like ‚%22mXXXXXXXXXXXX%22′) and (location <> ’null‘);

Übersetzung:
Hole alle Locations und Erstellzeitpunkte (Zeitstempel) aus der Datenbank, wo die „tag like“ Bedingungen zutreffen und eine Location hinterlegt ist.
Ergebnisse:
771 Einträge

(2) select count(distinct(location)) from locations where (tag like ‚%22aXX%22‘) and (tag like ‚%22mXXXXXXXXXXXX%22′) and (location <> ’null‘);
Übersetzung:
Hole Locations aus der Datenbank, wo die „tag like“ Bedingungen zutreffen und eine Location hinterlegt ist.
Ergebnisse:
99 Einträge (für count(distinct(location)),
Liste (PDF, Locations, für „select location“)
Liste (PDF, Erstellzeit + Location, für „select location, erstellzeit“)

(3) select count(username) from locations where (tag like ‚%22aXX%22‘) and (tag like ‚%22mXXXXXXXXXXX%22‘);
Übersetzung:
Zähle die Accounts zusammen, wo in den Tagwolken die 2 abgefragten Terms vorkommen.
Ergebnisse:
3077 Einträge

Projekt „InstaLOC“ – Datenbankbefüllung auf Basis der Tagsuche

(1) Vorbereitung
Im ersten Schritt wird die Datenbank angelegt.

with sql_befehle do
begin
clear;
lines.Add('drop table if exists locations;');
lines.Add('CREATE TABLE `locations` (');
lines.Add(' `id` integer primary key AUTOINCREMENT,');
lines.Add('`url` varchar(400),');
lines.Add('`tag` varchar(2000),');
lines.Add('`likes` varchar(400),');
lines.Add('`comments` varchar(400),');
lines.Add('`erstellzeit` varchar(400),');
lines.Add('`post_id` varchar(1600),');
lines.Add('`username` varchar(400),');
lines.Add('`location` varchar(400),');
lines.Add('`filter` varchar(400),');
lines.Add('`pruefzeit` varchar(400)');
lines.Add(');');
lines.Add('vacuum;');
end;
fdquery3.ExecSQL(sql_befehle.text);

Die Datei umfasst folgende Spalten:
ID -> Nummerierung der Einträge (Zeilen)
URL -> erfasste Beitragsurl
Tag -> erfasste Tagwolke
Likes -> erfasste Likes als Zahl
Comments -> erfasste Comments als Zahl
Post_ID -> per Instagram vergebene Medien/Beitrags-ID
Username -> Username: Wer hat den Beitrag veröffentlicht?
Location -> Location des Beitrages, falls vom User freigegeben (GeoCode + Name)
Filter -> Fotofilter des veröffentlichten Beitrages
Erstellzeit -> Wann wurde der Beitrag veröffentlicht?
Pruefzeit -> Wann wurde der Beitrag vom Scraper erfasst UND in die Datenbank gespeichert?

(2) Scrapingvorgang
for lauf := strtoint(uebertrag.Text) to memo8.Lines.Count-1 do
begin
randomize;
token.Text:=token.Items[random(token.Items.Count-1)];
getmedia_db(locmedia,memo8.Lines[lauf],200);
end;

(3) Scrapingprozedur

procedure TForm1.getmedia_db(mytable: TStringGrid; tagsearch: string; rounds: integer);
var
JSONArray: tJSONArray;
JSONValue,jvalue: tJSONValue;
JSONPair: TJSONPair;
JSON, json_sub: TJSONObject;
size: integer;
j_array: tJSONArray;
s: string;
i,j: integer;
next_id: string;
zaehl: integer;
url,tag,likes,comments,post_id,username,location,filter,pruefzeit: widestring;
erstellzeit: string;
begin
sql_befehle.Clear;
memo3.Lines.Add('url => https://api.instagram.com/v1/tags/'+escape(tagsearch)+'/media/recent?access_token='+token.text);
try
debug.text:=idhttp1.Get('https://api.instagram.com/v1/tags/'+escape(tagsearch)+'/media/recent?access_token='+token.text);
JSONValue := TJSONObject.ParseJSONValue(debug.text);
JSON := TJSONObject.ParseJSONValue(debug.Lines.Text) as TJSONObject;
JSONArray := TJSONArray(JSON.Get('data').JsonValue);
try next_id:= JSONValue.GetValue('pagination.next_url');
except
next_id:='N/A';
end;
for i := 0 to JSONArray.Size - 1 do
begin
url:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('link')).JsonValue.Value);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('tags')).ToString);
s:= StringReplace(s, '"tags":[', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, ']', '', [rfReplaceAll,rfIgnoreCase]);
tag:=escape(s);
memo7.Lines.Add(unescape(tag));
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('likes')).ToString);
s:= StringReplace(s, '"likes":{"count":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
likes:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('comments')).ToString);
s:= StringReplace(s, '"comments":{"count":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
comments:=s;
erstellzeit:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('created_time')).JsonValue.Value);
erstellzeit:=datetimetostr(UnixToDateTime(strtoint(erstellzeit)));
post_id:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('id')).JsonValue.Value);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('user')).ToString);
s:= StringReplace(s, '"user":{"username":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '"', '', [rfReplaceAll,rfIgnoreCase]);
username:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('location')).ToString);
s:= StringReplace(s, '"location":', '', [rfReplaceAll,rfIgnoreCase]);
location:=s;
filter:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('filter')).JsonValue.Value);
pruefzeit:=datetimetostr(now);
with sql_befehle.Lines do
begin
add('INSERT INTO `locations` (`url`, `tag`, `likes`, `comments`, `erstellzeit`, `post_id`, `username`, `location`, `filter`, `pruefzeit`) Values ('''+url+''', '''+tag+''', '''+likes+''', '''+comments+''', '''+erstellzeit+''', '''+post_id+''', '''+username+''', '''+location+''', '''+filter+''', '''+pruefzeit+''');');
end;
end;
fdquery3.ExecSQL(sql_befehle.text);
sql_befehle.Clear;
except
end;
if next_id<>'N/A' then
begin
repeat
// -> tiefenpruefung
if next_id='N/A' then
break;
delay(strtoint(frequenz1.Text));
try
debug.text:=idhttp1.Get(next_id);
JSONValue := TJSONObject.ParseJSONValue(debug.text);
JSON := TJSONObject.ParseJSONValue(debug.Lines.Text) as TJSONObject;
JSONArray := TJSONArray(JSON.Get('data').JsonValue);
try next_id:= JSONValue.GetValue('pagination.next_url');
except
next_id:='N/A';
break;
end;
for i := 0 to JSONArray.Size - 1 do
begin
url:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('link')).JsonValue.Value);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('tags')).ToString);
s:= StringReplace(s, '"tags":[', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, ']', '', [rfReplaceAll,rfIgnoreCase]);
tag:=escape(s);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('likes')).ToString);
s:= StringReplace(s, '"likes":{"count":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
likes:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('comments')).ToString);
s:= StringReplace(s, '"comments":{"count":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
comments:=s;
erstellzeit:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('created_time')).JsonValue.Value);
erstellzeit:=datetimetostr(UnixToDateTime(strtoint(erstellzeit)));
post_id:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('id')).JsonValue.Value);
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('user')).ToString);
s:= StringReplace(s, '"user":{"username":', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '}', '', [rfReplaceAll,rfIgnoreCase]);
s:= StringReplace(s, '"', '', [rfReplaceAll,rfIgnoreCase]);
username:=s;
s:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('location')).ToString);
s:= StringReplace(s, '"location":', '', [rfReplaceAll,rfIgnoreCase]);
location:=s;
filter:=(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('filter')).JsonValue.Value);
pruefzeit:=datetimetostr(now);
with sql_befehle.Lines do
begin
add('INSERT INTO `locations` (`url`, `tag`, `likes`, `comments`, `erstellzeit`, `post_id`, `username`, `location`, `filter`, `pruefzeit`) Values ('''+url+''', '''+tag+''', '''+likes+''', '''+comments+''', '''+erstellzeit+''', '''+post_id+''', '''+username+''', '''+location+''', '''+filter+''', '''+pruefzeit+''');');
end;
end;
fdquery3.ExecSQL(sql_befehle.text);
sql_befehle.Clear;
except
break;
end;
// -> tiefenpruefung, ende
zaehl:=zaehl+1;
until zaehl=rounds;
end;
end;

Prozeduraufruf.

getmedia_db(locmedia,memo8.Lines[lauf],200);

Erklärung, Prozedurlogik:

Die Variable „locmedia“ ist für das Szenarium relativ uninteressant und wird aktiviert, wenn bspw. die gescrapten Daten in ein Stringgridobjekt zwecks Gegensichtung übergeben werden müssen. Die Variable „memo8.lines[X]“ beschreibt den Zwischenspeicherort der Tagliste(n), wobei „X“ oder „lauf“ die Position des Terms / Tags in der Liste beschreibt. Die Variable „200“ sagt aus, wie tief die Scrapingprozedur forschen soll. In dem Fall handelt es sich um 200×20 (-> 4000) Beiträge je Suchanfrage.

Projekt „InstaLoc“ – Wechsel der Datenscrapertechnologie

Nach diversen Gesprächen, Socialmediabeobachtungen usw. entschied ich mich zur festen Einbindung eines weiteren Datenscraperansatzes.
Dieser interpretiert nun die Stadt nicht als Konstruktion mit einer Grenze, sondern als „Gegend“ mit der Stadt als Mittelpunkt.

Konkrete Beispiele können sein:

Datenbank „Mainz“ -> Mainz + Wiesbaden
Datenbank „Apolda“ -> Apolda + Weimar + Jena + div. Dörfer (falls auslesbar)
Datenbank „Leipzig“ -> Leipzig + Halle + Merseburg

Der Testlauf zum Raum „Mainz“ ergab ca. 25.700 auslesbare Locations zu max. 2000 Beiträge und ein Datenerfassungsdurchlauf beansprucht etwas um die 24 Stunden.

Im Zuge der nächsten Updates werden weitere Erhebungsmethoden getestet und ggf. in die Prozeduren eingebaut.

Die massive Datenausweitung und das feinmaschig erfasste Locationnetz erlaubt nun (auch nach Rückmeldung der Kolleg_innen) die Beantwortung folgender Fragen:

(1) Wo befinden sich ansprechbare (!) Zielgruppen?
(2) Was machen die ansprechbaren Zielgruppen an welchen Orten (gez. durch die Tagwolken, Fotofilter, Emotionsäußerungen etc.)=
(3) Wie sind die Bewegungsstrecken von ansprechbaren Zielgruppen gestaltet? (Hotel->Bar, Hotel->Museum, FashionStore->Bar->Club usw.)
(4) …

Anwendungsszenarien der interpretierbaren Rohdaten / Analysedaten können auch sein:
(1) Genauere Auswahl von Plakatplätzen in Städten
(2) Genauere Auswahl und Briefings von Promotiontrupps (Flyerverteilungen, Werbegeschenkeverteilungen)
(3) div. politische Analysen, pol. Trendanalysen
(4) Trendanalysen in Bezug auf Orte und Ortsverbindungen für Auf- und Abbau v. lokalen Geschäften
(5) Konkurrenzanalysen auf Locationbasis (hier: Sprache und Interaktionen)
(6) Möglichkeiten: Verkauftrigger / Lead- und Saleunterstützungen
(7) Kundengruppen: Interessensschwerpunktanalyse- und reportings (Freizeitverhalten u.a.)

An der Stelle bedanke ich mich bei Georg Grohs, Dr. Klaus Holthausen / Andrea Fetzer (Roland Berger), Lars Heinemann, Mitossi und Dirk Schumann für die treibende und kreative Beurteilung des Projektes.

InstaLOC-Projekt, Freigabe der Version 0.10 Beta

Ich habe soeben die Freigabe für die Versionsnummer 0.10Beta erteilt. Die entsprechende Datei befindet sich in dem – intern geteilten – Dropboxordner und trägt den Namen „insta_loc_15082018_010Beta.zip“.

Bedienungsanleitungsvideos:
InstaLoc-Forschungsprojekt/Software (Basisfunktionen – Likes): https://youtu.be/CkZSVPC8KJY
InstaLoc-Forschungsprojekt/Software (Basisfunktionen – Accountebene): https://youtu.be/VXPzhanL-vw
InstaLoc-Forschungsprojekt/Software (Filter: Tagwolkenanalyse, Locations): https://youtu.be/qh2bowhnMbI
InstaLoc-Forschungsprojekt/Software (Tagwolkenanalyse, Locations): https://youtu.be/5aefOGaGy-o
InstaLoc-Forschungsprojekt/Software (Tagwolkenanalyse): https://youtu.be/Ey9B6Skm9Y4

Wir vergeben an 2 besondere und ausgewählte Kolleg_innen jeweils eine Kopie der Auswertungssoftware und sind offen für entsprechende Gespräche, Anfragen und Nachfragen.

Update: IG Locationclient v.0.9B und die Einführung des Prinzips „Themenwelten“

Diverse Überlegungen, Gespräche und Dateninterpretationsideen ergaben die Notwendigkeit der Einführung sog. „Themenwelten“. Die aktuelle Version der Auswertungssoftware erlaubt nun den Auswurf von Überblickstabellen.

Beispiele:
(1) Datenschau nach vordefinierten Locations
-> Suche nach dem Substringschema
themenwelt_loc_ueberblick.xlsx

(2) Datenschau nach vordefinierten Tags|Terms
-> Suche nach dem Substringschema UND Suche nach dem genauen Ausdruck
themenwelt_tags_ueberblick.xlsx

Die verlinkten Beispiele sind Probedatenauszüge, um u.a. auch die Performance zu testen.

ToDo für die Versionsnummer 0.10Beta:

(1) Zielgruppenidentifikation nach folgenden Fragesschemata (Übersetzung in SQL folgt).

(a) Welche Gruppen sprechen in [Ort] über [Tag 01|Tag02|Tag03]?
(b) Welche Gruppen springen von [Ort 01] zu [Ort 02]?
(b) Welche Gruppen springen von [Ort 01] zu [Ort 02] und sprechen über [Tag 01|Tag02|Tag003]?

(2) Aktivierung der Beliebtheitsindikatoren für die Datenschau.

(a) Welche Tags sind beliebt?
-> Einbeziehung der Likes und Comments in Form der Zahlen.
-> (Er)findung eines geeigneten Bewerungssystems auf Basis der Nutzwertanalyse.

(b) Welche Orte sind beliebt?
-> siehe (a)
-> Erweiterung um die Begutachtung der Postzeitstempel.

Locationprojekt, aktuelle Datenbanken (Stand: 03.08.2018)

In der aktuellen Woche fand ich Gelegenheit zu einer finalen Optimierung der Datenerhebungsfunktionen und der maximale Output beträgt nun 5 Städte / Arbeitstag (ca. 8Stunden). Der aktuelle Datenbestand umfasst nun 41 SQLite-Datenbanken und lässt sich hier (Download: loc_datenbestand.xlsx) einsehen.

Ein Update der Auswertungssoftware ist für den 05.08.2018 geplant.

Kontakte? Anfragen gern unter office(at)pontipix.de.

(Instagram)-Locationprojekt, Hashtagcloudanalysen nach Usernamen (Leipzig-Datenbank)

Das Programm kann, in der aktuellen Version, zwischen „%suchwort%“ und „=suchwort“ unterscheiden. Bei der letzteren Option werden alle Ergebnisse ausgeworfen, wo der Term – als Hauptstring – in den Tagclouds zu finden ist (Gegenteil zu der Substringvariante).

Inhaltsschema:
Spalte (1) -> Nummer
Spalte (2) -> Username
Spalte (3) -> Tagcloud
Spalte (4) -> Summe Tagcloud, Vorkommen der Tagcloud je Username

Hinweis:
Sämtliche Accountnamen sind in den nachfolgenden Datensätzen – selbstverständlich – verschlüsselt.

(1) Substring: „city“: city_usersum
(2) Substring: „mensa“: mensa_usersum
(3) Hauptstring: „sport“: -sport-_usersum
(4) Substring: „sport“: sport_usersum
(5) Substring: „fest“: fest_usersum
(6) Substring: „farbfilm“: farbfilm_usersum
(7) Substring: „sommer“: sommer_usersum
(8) Substring: „frühling“: frühling_usersum
(9) Substring: „herbst“: herbst_usersum
(10) Substring: „stadt“: stadt_usersum
(11) Hauptstring: „messe“: -messe-_usersum
(12) Substring: „hafen“: hafen_usersum
(13) Substring: „halle“: halle_usersum
(14) Substring: „design“: design_usersum
(15) Substring: „hochschule“: hochschule_usersum
(16) Substring: „kunst“: kunst_usersum
(17) Substring: „film“: film_usersum
(18) Substring: „dokleipzig“: dokleipzig_usersum
(19) Substring: „leipzig“: leipzig_usersum
(20) Hauptstring: „urlaub“: -urlaub-_usersum
(21) Substring: „urlaub“: urlaub_usersum
(22) Substring: „bar“: bar_usersum
(23) Substring: „deko“: deko_usersum
(24) Substring: „feiern“: feiern_usersum

Locationprojekt, aktuelle Datenbanken

Mit Optimierung des Scrapers wurde der Output auf 3 Städte (zu 1000-3.500 Locations mit 2000 Medien / Location) je Durchlauf erhöht.

Der Datenbestand umfasst (derzeit) das folgende Volumen:

Datenbank: locations_berlin.db
Anz. Einträge: 178640
Anz. Filter: 45
Anz. Postings: 177454
Anz. Tagclouds: 113530
Anz. Locations: 1193
Anz. Accounts: 93386
Anz. Zeitstempel: 177089

Datenbank: locations_koeln.db
Anz. Einträge: 251900
Anz. Filter: 45
Anz. Postings: 247799
Anz. Tagclouds: 174640
Anz. Locations: 2294
Anz. Accounts: 111119
Anz. Zeitstempel: 247224

Datenbank: locations_leipzig.db
Anz. Einträge: 165272
Anz. Filter: 44
Anz. Postings: 161236
Anz. Tagclouds: 115534
Anz. Locations: 1507
Anz. Accounts: 62306
Anz. Zeitstempel: 160963

Datenbank: locations_london.db
Anz. Einträge: 647379
Anz. Filter: 45
Anz. Postings: 635175
Anz. Tagclouds: 363882
Anz. Locations: 3254
Anz. Accounts: 363278
Anz. Zeitstempel: 630993

Datenbank: locations_muenchen.db
Anz. Einträge: 257895
Anz. Filter: 45
Anz. Postings: 252130
Anz. Tagclouds: 175017
Anz. Locations: 2445
Anz. Accounts: 126274
Anz. Zeitstempel: 251593

Datenbank: locations_paris.db
Anz. Einträge: 409348
Anz. Filter: 45
Anz. Postings: 399706
Anz. Tagclouds: 236446
Anz. Locations: 1158
Anz. Accounts: 241158
Anz. Zeitstempel: 396092