|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """ |
|
7 Module implementing some global helper functions. |
|
8 """ |
|
9 |
|
10 import os |
|
11 |
|
12 from PyQt4.QtCore import QUrl |
|
13 |
|
14 |
|
15 def getFileNameFromUrl(url): |
|
16 """ |
|
17 Module function to generate a file name based on the given URL. |
|
18 |
|
19 @param url URL (QUrl) |
|
20 @return file name (string) |
|
21 """ |
|
22 fileName = url.toString(QUrl.RemoveFragment | QUrl.RemoveQuery | |
|
23 QUrl.RemoveScheme | QUrl.RemovePort) |
|
24 if fileName.find("/") != -1: |
|
25 pos = fileName.rfind("/") |
|
26 fileName = fileName[pos:] |
|
27 fileName = fileName.replace("/", "") |
|
28 |
|
29 fileName = filterCharsFromFilename(fileName) |
|
30 |
|
31 if not fileName: |
|
32 fileName = filterCharsFromFilename(url.host().replace(".", "_")) |
|
33 |
|
34 return fileName |
|
35 |
|
36 |
|
37 def filterCharsFromFilename(name): |
|
38 """ |
|
39 Module function to filter illegal characters. |
|
40 |
|
41 @param name name to be sanitized (string) |
|
42 @return sanitized name (string) |
|
43 """ |
|
44 return name\ |
|
45 .replace("/", "_")\ |
|
46 .replace("\\", "")\ |
|
47 .replace(":", "")\ |
|
48 .replace("*", "")\ |
|
49 .replace("?", "")\ |
|
50 .replace('"', "")\ |
|
51 .replace("<", "")\ |
|
52 .replace(">", "")\ |
|
53 .replace("|", "") |
|
54 |
|
55 |
|
56 def ensureUniqueFilename(name, appendFormat="({0})"): |
|
57 """ |
|
58 Module function to generate an unique file name based on a pattern. |
|
59 |
|
60 @param name desired file name (string) |
|
61 @param appendFormat format pattern to be used to make the unique name (string) |
|
62 @return unique file name |
|
63 """ |
|
64 if not os.path.exists(name): |
|
65 return name |
|
66 |
|
67 tmpFileName = name |
|
68 i = 1 |
|
69 while os.path.exists(tmpFileName): |
|
70 tmpFileName = name |
|
71 index = tmpFileName.rfind(".") |
|
72 |
|
73 appendString = appendFormat.format(i) |
|
74 if index == -1: |
|
75 tmpFileName += appendString |
|
76 else: |
|
77 tmpFileName = tmpFileName[:index] + appendString + tmpFileName[index:] |
|
78 i += 1 |
|
79 |
|
80 return tmpFileName |