• Drizzel

    Thanks a lot, I tried it out and it improved the data. Another interesting thing is that somehow the data seems to be more consistent when moving

    posted in Pythonista read more
  • Drizzel

    I’m trying to make a small gps logger that tells me how far I ran in a given time, but it seems as if the gps data isn’t very consistent. This is a shortened version of my code:

    import location, time, math
    
    def distanceFromCoords(long1, lat1, long2, lat2): #calculate distance between two coordinates
        #convert latitude and longitude to spherical coordinates in radians
        degrees_to_radians = math.pi/180.0
        
        #phi = 90 - latitude
        phi1 = (90.0 - lat1)*degrees_to_radians
        phi2 = (90.0 - lat2)*degrees_to_radians
        
        # theta = longitude
        theta1 = long1*degrees_to_radians
        theta2 = long2*degrees_to_radians
        
        #calculate spherical distance from spherical coordinates.
        cos = (math.sin(phi1)*math.sin(phi2)*math.cos(theta1 - theta2) + math.cos(phi1)*math.cos(phi2))
        arc = math.acos(cos)
        
        # multiply arc by the radius of the earth (3960 miles or 6371 kilometers)
        return round(arc*6371*1000) #multiplied with 1000 to get meters
    
    location.start_updates() #start location updates
    
    if True:
        distance = 0 #total distance travelled
        startTime = time.time() #set starting time of timer
        
        #to calculate distances two coordinates are needed. coord1 is the coordinate I was at, and coord2 is the coordinate I am at now
        
        coord2 = (location.get_location()['longitude'],location.get_location()['latitude'])
        while True: 
            coord1 = coord2 #set coord1 to coord2 from previous loop repetition
            coord2 = (location.get_location()['longitude'],location.get_location()['latitude']) #get current coordinates
            distance += distanceFromCoords(coord1[0], coord1[1], coord2[0], coord2[1]) #add distance between coord1 and coord2 to the total distance travelled
    
            print('\n', round(time.time()-startTime), '\n', distance, '\n')
            
            time.sleep(1)
            
    location.stop_updates() #I know, this never gets executed :D
    

    If I don’t move my iPad and leave it for twenty seconds, the code tells me that I already moved about 50 meters! When doing a cooper run (you have 12 minutes time and need to run as far as possible) these 50 meters would already change my grade substantially (yeah, I’m still in school).

    Is there any better way to do this? After all most apps (runtastic, google maps ...) manage too.

    posted in Pythonista read more
  • Drizzel

    The scene module comes natively with pythonista, and there are a few examples that might help

    posted in Pythonista read more
  • Drizzel

    Oh, and your last two lines should be:

    if __name__ == '__main__':
        main()
    

    This should be a working version:

    # coding: utf-8
    import twitter
    
    def main():
        accounts = twitter.get_all_accounts()
        if not accounts:
            print('No Twitter accounts were found. You can configure Twitter accounts in the settings app. If you have denied access to your accounts when prompted, you can also change your mind there.')
        account = accounts[0]
        username = account['username']
        print('Loading recent tweets in %s\'s timeline...' % (username,))
        tweets = twitter.get_home_timeline(account)
        for tweet in tweets:
            print('%s:\n\n%s' % (tweet['user']['screen_name'], tweet['text']))
            print('-' * 40)
    
    if __name__ == '__main__':
        main()
    

    posted in Pythonista read more
  • Drizzel

    If the code in tweet.py is exactly the same as what you showed us, you’re missing a # before the coding: utf-8. Corrected, you would have to change your first line to

    #coding: utf-8
    

    The # is commonly used for commenting your code in normal language, as it tells the python interpreter that the following line is no actual python code and can therefore be ignored. The interpreter makes your code understandable for machines and therefore executable also.

    If you want to know more or this is not the correct answer, just ask again and again and again 😋

    posted in Pythonista read more
  • Drizzel

    @mikael messages, as it doesn’t actually take too long and I don’t have to manage many small bits of data, making it easier for me (with limited python knowledge) to transfer multiple files.

    posted in Pythonista read more
  • Drizzel

    @cvp @JonB @mikael I did forget to decode the data after receiving it, my bad. It works flawlessly now, thanks a lot!

    posted in Pythonista read more
  • Drizzel

    @mikael
    I just gave it a first try, it didn’t completely work, but it was a promising start. The length of the data before sending and receiving is the same, so I’m assuming the data itself is fine. If I then write it to a file though, it’s only 719 bytes, not 4 mb as it should be. For now, I have no clue why, but as a I said it’s promising.

    posted in Pythonista read more
  • Drizzel

    @mikael I had an old version installed, so I just updated. I will definitely look into it now. It’s interesting that it apparently doesn’t require strings, which might fix the errors I’m currently fighting with :)

    @cvp I tried out your suggestion, and I now can transfer the data without getting errors! The issue I now have, is that the final file is about 2.5 times as large as the original, and it therefore won’t play. Reading in the file, converting it to a string and then writing it to a new file showed that the conversion to a string is where the data gets altered heavily, and obviously I have no idea what to do about it😂

    Any ideas?

    posted in Pythonista read more
  • Drizzel

    @cvp I tried it out, I got a different error now. It's "Object of type 'bytes' is not JSON serializable". Any idea why?

    posted in Pythonista read more

Internal error.

Oops! Looks like something went wrong!