diff --git a/bin/nn b/bin/nn index 67af25d..d6c28a6 100755 --- a/bin/nn +++ b/bin/nn @@ -9,13 +9,19 @@ import sys from datetime import datetime from pathlib import Path -PATTERN = re.compile( +PHONE_PATTERN = re.compile( r'^[A-Za-z]+[_-]' r'(\d{4})-?(\d{2})-?(\d{2})' r'[_-]' r'(.+)$' ) +# Telegram photo/video export, e.g. "photo_94@16-07-2026_22-09-43.jpg" +# (photo|video)_@
--_-- +TELEGRAM_PATTERN = re.compile( + r'^(?:photo|video)_(\d+)@(\d{2})-(\d{2})-(\d{4})_(\d{2})-(\d{2})-(\d{2})$' +) + NORMALIZED = re.compile(r'^\d{4}-\d{2}-\d{2} .+') STATUS_RENAME = 'rename' @@ -56,9 +62,14 @@ def plan_default_rename(filepath): if NORMALIZED.match(filepath.name): return None, STATUS_ALREADY - match = PATTERN.match(stem) + tg_match = TELEGRAM_PATTERN.match(stem) + if tg_match: + number, day, month, year, hour, minute, second = tg_match.groups() + return f'{year}-{month}-{day} {hour}{minute}{second} {number}{ext}', STATUS_RENAME + + match = PHONE_PATTERN.match(stem) if not match: - match = PATTERN.match(filepath.name) + match = PHONE_PATTERN.match(filepath.name) if match: year, month, day, rest = match.groups() new_name = f'{year}-{month}-{day} {rest}' @@ -118,10 +129,16 @@ def get_date_for_file(filepath, parse_mode): if norm_match: return f'{norm_match.group(1)}-{norm_match.group(2)}-{norm_match.group(3)}' + # Telegram export pattern (date is DD-MM-YYYY) + tg_match = TELEGRAM_PATTERN.match(stem) + if tg_match: + _, day, month, year = tg_match.groups()[:4] + return f'{year}-{month}-{day}' + # Try the standard pattern - match = PATTERN.match(stem) + match = PHONE_PATTERN.match(stem) if not match: - match = PATTERN.match(filepath.name) + match = PHONE_PATTERN.match(filepath.name) if match: year, month, day, _ = match.groups() return f'{year}-{month}-{day}' @@ -306,4 +323,4 @@ def main(): if __name__ == '__main__': - main() \ No newline at end of file + main()