Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | More Python 3 and 2 compatibility - UTF-8 write files
I suspect I didn't get everything quite as good as I could in simplenote.py I |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | master |
Files: | files | file ages | folders |
SHA3-256: |
1fe8adea90b267cb1e5884352f44fdbc |
User & Date: | simon 2018-10-13 10:40:20 |
Context
2018-10-13
| ||
10:57 | I give in - switch to spaces instead of tabs check-in: 5dee798315 user: simon tags: master, trunk | |
10:40 |
More Python 3 and 2 compatibility - UTF-8 write files
I suspect I didn't get everything quite as good as I could in simplenote.py I | |
2018-10-11
| ||
10:25 |
Add ability to determine filename from first few lines of a file
Wanted to do this for awhile, but was too lazy until now. Most of my snose files have the filepath as the first or second line in the | |
Changes
Changes to snose.py.
︙ | ︙ | |||
145 146 147 148 149 150 151 | except AttributeError: pass if filename is None: print("Failed to identify filename within note, please provide on command line") exit filename = os.path.expanduser(filename) try: | > | > > > | | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | except AttributeError: pass if filename is None: print("Failed to identify filename within note, please provide on command line") exit filename = os.path.expanduser(filename) try: if sys.version_info < (3, 0): with open(filename, 'w') as f: f.write(remote[0]['content'].encode("utf-8")) else: with open(filename, 'w', encoding="utf-8") as f: f.write(remote[0]['content']) except IOError as e: print("Failed to create local copy of that note") print(e) else: #Update index try: snose[filename] = {'key': remote[0]['key'], 'version': remote[0]['version'], 'modifydate': float(os.path.getmtime(filename)) } #Need to set as local modified date as otherwise will want to sync it straight away. |
︙ | ︙ | |||
196 197 198 199 200 201 202 | remote = snclient.get_note(key) rollback = snclient.get_note(key, remote[0]['version']-1) except IOError as e: print("Failed to fetch previous version") else: try: #3) Write it out locally | > | > > > | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | remote = snclient.get_note(key) rollback = snclient.get_note(key, remote[0]['version']-1) except IOError as e: print("Failed to fetch previous version") else: try: #3) Write it out locally if sys.version_info < (3, 0): with open(filename, 'w') as f: f.write(rollback[0]['content'].encode("utf-8")) else: with open(filename, 'w', encoding="utf-8") as f: f.write(rollback[0]['content']) print("Rolled back local copy") except IOError as e: print("Failed to rollback local copy of that note") print(e) else: #Since rollback doesn't include full meta data, update remote accordingly try: |
︙ | ︙ | |||
284 285 286 287 288 289 290 | else: #Get returned metadata snose[name]['version'] = returned[0]['version'] snose[name]['modifydate'] = sysmodifydate #Use local value to avoid differences in accuracy (decimal places. etc) between local and remote timestamps #Update local file if merged content if 'content' in returned[0]: try: | > | > > > | | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | else: #Get returned metadata snose[name]['version'] = returned[0]['version'] snose[name]['modifydate'] = sysmodifydate #Use local value to avoid differences in accuracy (decimal places. etc) between local and remote timestamps #Update local file if merged content if 'content' in returned[0]: try: if sys.version_info < (3, 0): with open(filename, 'w') as f: f.write(returned[0]['content'].encode("utf-8")) else: with open(filename, 'w', encoding="utf-8") as f: f.write(returned[0]['content']) print("Merged local content for %s" % name) #Override the returned value? As otherwise next sync will immediately update the remote version for no reason. snose[name]['modifydate'] = os.path.getmtime(name) except IOError as e: print("Failed to merge content locally for %s" % name) print("Therefore skipping updating the index for this note")#I think this is a good idea? #Update the index file |
︙ | ︙ | |||
314 315 316 317 318 319 320 | except IOError as e: print("Failed to fetch remote copy of note %s" % name) print("Skipping synchronisation for this file") else: if remote[0]['version'] > local['version']: if not dry: try: | > | > > > | | 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | except IOError as e: print("Failed to fetch remote copy of note %s" % name) print("Skipping synchronisation for this file") else: if remote[0]['version'] > local['version']: if not dry: try: if sys.version_info < (3, 0): with open(name, 'w') as f: f.write(remote[0]['content'].encode("utf-8")) else: with open(filename, 'w', encoding="utf-8") as f: f.write(remote[0]['content']) print("Updated local version of %s" % name) except IOError as e: print("Failed to update local note %s with remote content" % name) print("Will not updatet the .snose index file for this file") else: #Also update .snose index snose[name]['version'] = remote[0]['version'] |
︙ | ︙ |