• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Runtastic Massenexport per js

HoneyBadger

Aktiver NGBler

Registriert
7 Sep. 2015
Beiträge
1.956
Hi,

bin vor einiger Zeit auf Garmin umgestiegen und wollte meine alten Runtasticdaten gerne mit rübernehmen. Habe dann mal etwas gegoogelt und bin über zwei Scripte gestolpert.
Das erste lief einen kleinen Moment, hat aber nur einen Teil der Daten geliefert. Das zweite arbeitet zwar, es kommen aber gar keine Daten an. Das Script ist etwas älter, sodass ich vermute, dass die Seite sich in der Zwischenzeit etwas geändert hat.

Weiß jemand, wie man eins der beiden wieder zum Laufen bekommt?

[src=java]var links = []; $('.type > a').each ( function () {
links.push($(this).attr('href'))
} )
setInterval(function () {
if ( !links.length) { return; }
var link = links.shift();
link += '.tcx';
var newFrame = document.createElement('iframe');
document.body.appendChild(newFrame);
newFrame.style = 'width: 1px; height: 1px;';
newFrame.src = link; },
500); [/src]

[src=javascript]$.each(index_data,function(){
$('<iframe/>', {
src: 'https://'+app_config.domain+user.run_sessions_path+this[0]+'.tcx'
}).appendTo('body');
});[/src]
 

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
502
ich kenne Runtastic und Co. nicht, aber javascript.

Der zweite Code liest alle "index_data" aus und erstellt daraus einen Iframe, der im body angehängt wird.
"index_data" ist hier aber nicht definiert, wo das herkommt weiß ich also nicht. Ich tippe mal das es eine variable ist, die auf der Runtastic Seite definiert wurde.

Wenn du sagst, "es arbeitet, kommt aber nix an", werden den Fehler in der Console gelogged? Um dem ganzen auf den Grund zu gehen, würde ich mir die hier genutzten Variablen einfach mal ausgeben lassen.

[src=javascript]
$.each(index_data, function(){
console.log('index_data', $(this)); // sollte das einzelne "index_data" element ausgeben
console.log('app_config', app_config); // sollte die gesamte app_config ausgeben, auch "app_config.domain"
console.log('user', user); // sollte die user variable ausgeben, auch "user.run_sessions_path"
});
[/src]


Der erste Code geht ähnlich vor, nutzt aber weniger variablen der Runtastic Seite. Wenn du sagst deine Daten werden nur teilweise geladen, warte einfach mal länger oder ändere die Intervalzeit => die 500 am ende, reduzier mal auf 10. Ich verstehe nicht ganz warum hier über ein Interval gegangen wird aber es wird schon seine Richtigkeit haben.

Je nachdem was für eine Erfahrung du mit javascript hast, sollte die Lösung relativ simpel sein.
Schau dich im Quellcode von Runtastic mal um, such nach ".tcx" das scheinen ja die eigentlichen Datensätze sein. Wenn es sich hier um eine überschaubare Anzahl handelt, kann man die .tcx Dateien ja auch von Hand herunterladen.

Falls es wirklich sehr viele Datensätze sind, muss das zweite script sicher nur minimal angepasst werden.
 

HoneyBadger

Aktiver NGBler

Registriert
7 Sep. 2015
Beiträge
1.956
  • Thread Starter Thread Starter
  • #3
Also beim zweiten Script kamen jetzt in einem Testzeitraum 4 von 17 Stück raus.

Hier mal eine exemplarische Fehlermeldung. Im Quelltext finde ich leider keine der benannten .tcx Endungen.

[src=javascript]GET https://www.runtastic.com/de/benutzer/info_entfernt/sportaktivitaeten/info_entfernt_2.tcx net::ERR_INVALID_RESPONSE[/src]

Lief auch nur beim ersten Durchlauf. Kann es evtl. sein, dass die Seite zu schnelle Zugriffe blockt? Das würde den Timeout im ersten Script vielleicht erklären. Der erste Versuch mit dem ersten Script lief mit mehr Resultaten. Bei beiden Scripten ist mir aufgefallen, dass sie nur beim ersten Durchlauf zum Teil funktionierten.
 

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
502
Ja, das könnte das Interval erklären, bau doch mal eins im zweiten Script dazwischen.

Was gibt dir denn folgendes script aus?
[src=javascript]
var links = [];
var linksWithExtension = [];

$(index_data).each(() => { // falls ein fehler kommt, nutze $('.type > a').each(() => {
var href = $(this).attr('href');
links.push(href);
linksWithExtension.push(href + '.tcx');
});

console.log('links', links);
console.log('links with extension', linksWithExtension);
[/src]

So wie ich es verstehe, aus dem ersten script, wird die extension ".tcx" einfach angehängt. Also solltest du jetzt in der Log (zweite Ausgabe) deine ".tcx" Files sehen. Theoretisch solltest du jetzt die einzelnen ".tcx" Files, aus dem Log, im Browser öffnen können.
 

HoneyBadger

Aktiver NGBler

Registriert
7 Sep. 2015
Beiträge
1.956
  • Thread Starter Thread Starter
  • #5
Bei beiden kommt in unterschiedlicher Länge.

links with extension ["undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx", "undefined.tcx"]
 

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
502
auch wenn du, wie von mir kommentiert

[src=javascript]$(index_data).each(() => { [/src]
durch
[src=javascript]$('.type > a').each(() => {[/src]
ersetzt?

dann sollte es eigentlich gehen, wenn das erste script bei gelaufen ist, auch wenn es nicht alles ausgegeben hat.
 

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
502
Hö? Was ist denn da los?
Was passiert denn bei folgendem?
[src=javascript]
$('.type > a').each(function() {
console.log($(this).attr('href'));
});
[/src]
Das ist der essentielle Teil des ersten Scripts, wenn du sagst es läuft, theoretisch, dann sollte es auch was ausgeben, was Sinn macht.


Edit:
oh, ganz vergessen Arrow Functions binden kein eigenes this, deshalb kommt dann undefined.
[src=javascript]
$(index_data).each(function() {
// ....

oder

$('.type > a').each(function(){
// ....
[/src]

sollte also auch gehen, hoffe ich ;)
 

HoneyBadger

Aktiver NGBler

Registriert
7 Sep. 2015
Beiträge
1.956
  • Thread Starter Thread Starter
  • #9
Sprich so?

[src=javascript]
var links = [];
var linksWithExtension = [];

$('.type > a').each(function(){
var href = $(this).attr('href');
links.push(href);
linksWithExtension.push(href + '.tcx');
});

console.log('links', links);
console.log('links with extension', linksWithExtension);
[/src]

Hier bekomme ich nun:

Die Meldung "links" /.../.tcx Danach dann noch einmal "links with extension" /.../.tcx

Oder so?

[src=javascript]
var links = [];
var linksWithExtension = [];

$(index_data).each(function() {
var href = $(this).attr('href');
links.push(href);
linksWithExtension.push(href + '.tcx');
});

console.log('links', links);
console.log('links with extension', linksWithExtension);
[/src]

Hier kommt dann quasi die gleiche Meldung nur statt der ewig langen Linkadressen ganz oft "undefined" und "undefined.tcx"

Ich habe nun noch einmal dieses Script mit dem Timeout von 50000 probiert. Ich gehe mal duschen und lasse laufen. Der Rechner ist eh dauernd an. Vielleicht bringt mich das zum Ziel.

[src=javascript]
  • var links = []; $('.type > a').each ( function () {
  • links.push($(this).attr('href'))
  • } )
  • setInterval(function () {
  • if ( !links.length) { return; }
  • var link = links.shift();
  • link += '.tcx';
  • var newFrame = document.createElement('iframe');
  • document.body.appendChild(newFrame);
  • newFrame.style = 'width: 1px; height: 1px;';
  • newFrame.src = link; },
  • 50000);

[/src]

Nachtrag:
Der erhöhte Timeout bringt leider nichts. 5 gehen durch. Dann ist wieder Schluss.

--- [2017-03-30 11:22 CEST] Automatisch zusammengeführter Beitrag ---

Fehler gefunden! Da ist eine "Ich bin kein Roboter" Abfrage verbaut.... :m
 
Zuletzt bearbeitet:

KingJamez

Aktiver NGBler

Registriert
18 Juli 2013
Beiträge
502
So wie ich es verstehe sind es unter 20 Files. Deshalb würde ich die Daten in ein Array pushen und dann manuell runterladen.
 

HoneyBadger

Aktiver NGBler

Registriert
7 Sep. 2015
Beiträge
1.956
  • Thread Starter Thread Starter
  • #11
Ne, waren um die 100. Hab´s nun komplett manuell gemacht. :dozey:
 
Oben