mirror of
https://github.com/thecyberlearn/chat-backend.git
synced 2026-08-18 13:12:52 +00:00
Features: - Django REST API backend - Multi-strategy web scraping system (Beautiful Soup, Playwright, Firecrawl) - Anti-detection features (proxy rotation, user-agent rotation) - Data export functionality (JSON, CSV, TXT) - Business and CrawledPage models - Enhanced crawling service with fallback mechanisms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import datetime
|
|
|
|
|
|
def _get_duration_components(duration):
|
|
days = duration.days
|
|
seconds = duration.seconds
|
|
microseconds = duration.microseconds
|
|
|
|
minutes = seconds // 60
|
|
seconds %= 60
|
|
|
|
hours = minutes // 60
|
|
minutes %= 60
|
|
|
|
return days, hours, minutes, seconds, microseconds
|
|
|
|
|
|
def duration_string(duration):
|
|
"""Version of str(timedelta) which is not English specific."""
|
|
days, hours, minutes, seconds, microseconds = _get_duration_components(duration)
|
|
|
|
string = "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
|
|
if days:
|
|
string = "{} ".format(days) + string
|
|
if microseconds:
|
|
string += ".{:06d}".format(microseconds)
|
|
|
|
return string
|
|
|
|
|
|
def duration_iso_string(duration):
|
|
if duration < datetime.timedelta(0):
|
|
sign = "-"
|
|
duration *= -1
|
|
else:
|
|
sign = ""
|
|
|
|
days, hours, minutes, seconds, microseconds = _get_duration_components(duration)
|
|
ms = ".{:06d}".format(microseconds) if microseconds else ""
|
|
return "{}P{}DT{:02d}H{:02d}M{:02d}{}S".format(
|
|
sign, days, hours, minutes, seconds, ms
|
|
)
|
|
|
|
|
|
def duration_microseconds(delta):
|
|
return (24 * 60 * 60 * delta.days + delta.seconds) * 1000000 + delta.microseconds
|