Datenfreigabe 2_3 (Quelle: Postingelemente aus Instagram in Verbindung mit Locations)

URL: https://www.pontipix.de/datenbank_downloads/instaloc_clean.zip 

Hinweis (1): 

Die Datenbank ist gepackt 13GB und entpackt 41GB.

Sie umfasst nur einen Teil unseres Datenbestands und ich gab hier eine zufällig ausgewählte Datenmenge je erfassten Länder frei. Technisch wurde der Datenübertrag über einen Zufallsgenerator gelöst, wobei hier kein Themenschwerpunkt gesetzt wurde. 

Die Freigabe erfolgte unter der Bedingung: die Datenbank darf ausschließlich für Weiterbildung- u. Ausbildungszwecke genutzt werden und bei Publikation erwarte ich selbstverständlich eine Namensnennung inkl. Link auf https://www.pontipix.de/.

Hinweis (2):

Die Datenquelle ist Instagram via Instagram-API in der jeweils gültigen Fassung unter Beachtung der jeweils aktiven Richtlinien. 

Die DB-Tabelle beinhaltet folgende Spalten:

id, url, tags, likes, comments, erstellzeit, contentinfo, country, country_code, city, county, state_district, suburb, city_district, pub, cafe, hotel, college, town_hall, florist, arts_centre, public_building, hospital, sport_centre, swimming_pool, travel_agency, community_centre, playground, clinic, books, pedestrian, chemist, car_wash, fort, golf_course, theme_park, water, castle, picnic_site, pharmacy, fast_food, track, garden, locality, residental, adress29, wood, retail, town, industrial, cycleway, village, guest_house, artwork, bus_stop, bar, bakery, fuel, zoo, car, university, neigbourhood, viewpoint, bank, stadium, hairdresser, place_of_worship, beach, mall, school, memorial, attraction, supermarket, footway, restaurant, theatre, parking, clothes, hamlet, raceway, aerodome, library, museum, commercial, ruins, building, PLZ, road

#1 Abfragebeispiele -> Bezug auf Land / Stadt etc. 

select * from locations where country_code = ‚de‘; 

select * from locations where country_code = ‚de‘ and city = ‚Berlin‘; 

select * from locations where country_code = ‚de‘ and city = ‚München‘; 

select * from locations where country_code = ‚de‘ and state = ‚Sachsen‘; 

select distinct country_code from locations;

select distinct city from locations where country_code = ‚de‘;

#2 Abfagebeispiele -> Bezug auf Locationtypen

select * from locations where country_code = ‚de‘ and restaurant <> “; 

select * from locations where country_code = ‚fr‘ and restaurant <> “

select * from locations where country_code = ‚us‘ and school <> “; 

#3 Abfragebeispiele -> Bezug auf Inhalte

select * from locations where country_code = ‚de‘ and school <> “ and contentinfo like ‚%1 person%‘

select * from locations where country_code = ‚de‘ and contentinfo like ‚%1 person%‘

select distinct(contentinfo) from locations where country_code = ‚de‘;

select distinct(tags) from locations where country_code = ‚de‘ and city = ‚Leipzig‘;

Weitere Abfragevarianten ergeben sich aus der Tabellenstruktur, den Spalten und der konkreten Fragestellung. Denkbar sind Verbindungen zwischen Tags, Taggruppen, den Bildinhalten („Contentinfo“) und konkreten Ländern. 

Datenfreigabe 1_3 (Quelle: Instagram-Locations mit Openstreetmap)

URL: https://www.pontipix.de/datenbank_downloads/locplain_big.zip

Hinweis (1): 

Die Datenbank ist gepackt 338MB und entpackt 818MB.

Die Freigabe erfolgte unter der Bedingung: die Datenbank darf ausschließlich für Weiterbildung- u. Ausbildungszwecke genutzt werden und bei Publikation erwarte ich selbstverständlich eine Namensnennung inkl. Link auf https://www.pontipix.de/.

Hinweis (2):

Die Haupt-Datenquelle ist Instagram via Instagram-API in der jeweils gültigen Fassung unter Beachtung der jeweils aktiven Richtlinien. 

Die DB-Tabelle beinhaltet folgende Spalten:

id, locations, lat, long, country, country_code, city, county, state_district, suburb, city_district, pub, cafe, hotel, college, town_hall, florist, arts_centre, public_building, hospital, sport_centre, swimming_pool, travel_agency, community_centre, playground, clinic, books, pedestrian, chemist, car_wash, fort, golf_course, theme_park, water, castle, picnic_site, pharmacy, fast_food, track, garden, locality, residental, adress29, wood, retail, town, industrial, cycleway, village, guest_house, artwork, bus_stop, bar, bakery, fuel, zoo, car, university, neigbourhood, viewpoint, bank, stadium, hairdresser, place_of_worship, beach, mall, school, memorial, attraction, supermarket, footway, restaurant, theatre, parking, clothes, hamlet, raceway, aerodome, library, museum, commercial, ruins, building, PLZ, road

#1 Abfragebeispiele -> Bezug auf Land / Stadt etc. 

select * from locations where country_code = ‚de‘; 

select * from locations where country_code = ‚de‘ and city = ‚Berlin‘; 

select * from locations where country_code = ‚de‘ and city = ‚München‘; 

select * from locations where country_code = ‚de‘ and state = ‚Sachsen‘; 

select distinct country_code from locations;

select distinct city from locations where country_code = ‚de‘;

#2 Abfagebeispiele -> Bezug auf Locationtypen

select * from locations where country_code = ‚de‘ and restaurant <> “; 

select * from locations where country_code = ‚fr‘ and restaurant <> “

select * from locations where country_code = ‚us‘ and school <> “; 

Weitere Abfragevarianten ergeben sich aus der Tabellenstruktur, den Spalten und der konkreten Fragestellung.

Basis-SQLabfragen (Projekt: Instagramlocations)

Notiz für mich:
Auflistung der Standardabfragen, ohne Anspruch auf Tiefenanalysen.

(1) Statistiken, „KPI“
select count(*), count(distinct(filter)), count(distinct(url)), count(distinct(tag)), count(distinct(location)), count(distinct(username)), count(distinct(erstellzeit)) from locations;

(2) Überblick, Auflistung der erfassten Accounts
select username from locations group by username;

(3) Auflistung der erfassten Accounts zzgl. Zusammenzählung der Beiträge der jeweiligen Accounts
select username, count(username) from locations group by username order by count(username) DESC

(4) Auflistung der erfassten Accounts zzgl. Zusammenzählung der Beiträge der jeweiligen Accounts + Zusammenzählung der Locations
select username, count(username), count(distinct(location)) from locations group by username order by count(distinct(location)) DESC;

(5) Auflistung der erfassten Locations zzgl. Zusammenzählung der Locations
select location, count(location) from locations group by location order by count(location) DESC;

(6) Auflistung der erfassten Locations zzgl. Zusammenzählung der Locations bei Vorkommen eines Tags / Zeichenketten
select location, count(location) from locations where tag like '%gucci%' group by location order by count(location) DESC

(7) Auflistung der erfassten Usernames zzgl. Zusammenzählung der Usernames bei Vorkommen eines Tags / Zeichenketten
select username, count(username) from locations where tag like '%fashion%' group by location order by count(username) DESC

(8) Auflistung der erfassten Tags zzgl. Zusammenzählung der Tags bei Vorkommen von zwei gesuchten Tags / Zeichenketten
select tag, count(tag) from locations where (tag like '%fashion%') and (tag like '%woman%') group by location order by count(tag) DESC;

Recherchen via Locations mit Hilfe der Instagram-API

Für den Zugriff auf die gewünschten Datensätze liefert Instagram genau einen interessanten Einstiegspunkt:

Location – ID
https://api.instagram.com/v1/locations/{location-id}/media/recent?access_token=ACCESS-TOKEN

Nun stellte ich hier fest, dass die Location-ID via Recherche auf Basis der GeoCodes identifizierbar ist. Das lässt sich einfacher lösen und der Weg sieht so aus:

(1) Facebook-Account organisieren
(2) Zugriffstoken für FB organisieren
siehe: How to get a Facebook Token
(3) Abfrage der Facebook-Places API
Beispiel:
https://graph.facebook.com/search?q=[ort]&type=place&access_token=[deintoken]
(3.1) Auslesen und Interpretieren
Wichtige und interessante Variablen sind „name“ und „id“. Beide müssen für die weitere Verarbeitung entsprechend gespeichert werden. Die Ergebnisse werden im JSON-Format ausgegeben und sind entsprechend einfach auswertbar.

Die Erkenntnisse werden zeitnah in den Instagram-Bot übertragen und besagte Anwendung wird um eine Funktion erweitert, welche:
(a) Locations recherchiert
(b) Locations gewichtet
– nach Zeitstempel der Posts
– nach Hashtags