23
23
import boto3
24
24
import rapidjson
25
25
import requests
26
- from defusedxml . ElementTree import ParseError , parse
26
+ from defusedxml import ElementTree
27
27
from django .conf import settings
28
28
from django .utils .dateparse import parse_duration
29
29
from django .utils .text import slugify
@@ -420,10 +420,10 @@ def get_root_url_for_source(etl_source: str) -> tuple[str, str]:
420
420
tuple[str, str]: The base URL and path
421
421
"""
422
422
mapping = {
423
- ETLSource .mitxonline .value : "https://courses.mitxonline.mit.edu" ,
424
- ETLSource .xpro .value : "https://courses.xpro.mit.edu" ,
425
- ETLSource .mit_edx .value : "https://www.edx.org" ,
426
- ETLSource .oll .value : "https://openlearninglibrary.mit.edu" ,
423
+ ETLSource .mitxonline .value : settings . CONTENT_BASE_URL_MITXONLINE ,
424
+ ETLSource .xpro .value : settings . CONTENT_BASE_URL_XPRO ,
425
+ ETLSource .oll .value : settings . CONTENT_BASE_URL_OLL ,
426
+ ETLSource .mit_edx .value : settings . CONTENT_BASE_URL_EDX ,
427
427
}
428
428
return mapping .get (etl_source )
429
429
@@ -460,23 +460,27 @@ def get_url_from_module_id(
460
460
log .warning ("Module ID is empty" )
461
461
return None
462
462
root_url = get_root_url_for_source (run .learning_resource .etl_source )
463
- with Path .open ("video_metadata.json" , "w" ) as f :
464
- json .dump (video_srt_metadata , f , indent = 2 )
463
+ # OLL needs to have 'course-v1:' added to the run_id
464
+ run_id = (
465
+ f"course-v1:{ run .run_id } "
466
+ if run .learning_resource .etl_source == ETLSource .oll .value
467
+ else run .run_id
468
+ )
465
469
if module_id .startswith ("asset" ):
466
- log .info ("Getting URL for asset %s" , module_id )
470
+ log .debug ("Getting URL for asset %s" , module_id )
467
471
asset_meta = (
468
472
assets_metadata .get (Path (olx_path ).parts [- 1 ], {}) if assets_metadata else {}
469
473
)
470
474
video_meta = video_srt_metadata .get (module_id , {}) if video_srt_metadata else {}
471
475
if video_meta :
472
- log .info ("Found video metadata for %s" , module_id )
473
- return f"{ root_url } /xblock/ { video_meta } "
476
+ log .debug ("Found video metadata for %s" , module_id )
477
+ return f"{ root_url } /courses/ { run_id } /jump_to/ { video_meta . split ( '@' )[ - 1 ] } "
474
478
elif module_id .endswith (".srt" ):
475
- log .info ( "NO VIDEO METADATA FOR %s" , module_id )
479
+ log .debug ( "No video metadata for %s" , module_id )
476
480
middle_path = asset_meta .get ("custom_md5" , "" )
477
481
return f"{ root_url } /{ (middle_path + '/' ) if middle_path else '' } { module_id } "
478
482
elif module_id .startswith ("block" ) and is_valid_uuid (module_id .split ("@" )[- 1 ]):
479
- return f"{ root_url } /xblock/ { module_id } "
483
+ return f"{ root_url } /courses/ { run_id } /jump_to_id/ { module_id . split ( '@' )[ - 1 ] } "
480
484
else :
481
485
log .warning ("Unknown module ID format: %s" , module_id )
482
486
return None
@@ -505,7 +509,7 @@ def parse_video_transcripts_xml(
505
509
"""
506
510
transcript_mapping = {}
507
511
try :
508
- root = parse (xml_content )
512
+ root = ElementTree . fromstring (xml_content )
509
513
510
514
# Get the video url_name from the root video element
511
515
video_url_name = root .get ("url_name" )
@@ -520,7 +524,7 @@ def parse_video_transcripts_xml(
520
524
transcript_mapping [
521
525
get_edx_module_id (f"static/{ transcript_src } " , run )
522
526
] = get_edx_module_id (str (path ), run )
523
- except ParseError :
527
+ except ElementTree . ParseError :
524
528
log .exception ("Error parsing video XML for %s: %s" , run , path )
525
529
return transcript_mapping
526
530
@@ -537,7 +541,7 @@ def get_video_metadata(olx_path: str, run: LearningResourceRun) -> dict:
537
541
for root , _ , files in os .walk (str (Path (olx_path , "video" ))):
538
542
path = "/" .join (root .split ("/" )[3 :])
539
543
for filename in files :
540
- log .info ("Processing video file %s in %s" , filename , path )
544
+ log .debug ("Processing video file %s in %s" , filename , path )
541
545
extension_lower = Path (filename ).suffix .lower ()
542
546
if extension_lower == ".xml" :
543
547
with Path .open (Path (root , filename ), "rb" ) as f :
0 commit comments