From 5e97c2fed775cc48cbc7501ad8e8f014775c72d9 Mon Sep 17 00:00:00 2001 From: HanJun27 <2730098037@qq.com> Date: Thu, 27 Nov 2025 23:52:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=9B=B4=E6=96=B0=EF=BC=9A?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=89=80=E6=9C=89=E6=9C=AC=E5=9C=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +- .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 152 bytes src/comment/__pycache__/admin.cpython-311.pyc | Bin 0 -> 207 bytes .../__pycache__/models.cpython-311.pyc | Bin 0 -> 204 bytes src/comment/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1068 bytes src/comment/__pycache__/views.cpython-311.pyc | Bin 0 -> 3172 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 163 bytes src/create_sample_data.py | 118 +++--- src/db.sqlite3 | Bin 0 -> 180224 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 1029 bytes src/index/__pycache__/admin.cpython-311.pyc | Bin 0 -> 2254 bytes src/index/__pycache__/models.cpython-311.pyc | Bin 0 -> 4581 bytes src/index/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1023 bytes src/index/__pycache__/views.cpython-311.pyc | Bin 0 -> 1857 bytes .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 3734 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 161 bytes src/logs/music.log | 370 ++++++++++++++++++ .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 241 bytes .../__pycache__/settings.cpython-311.pyc | Bin 0 -> 4239 bytes src/music/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1683 bytes src/music/__pycache__/wsgi.cpython-311.pyc | Bin 0 -> 668 bytes src/music/settings.py | 35 +- src/play/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 149 bytes src/play/__pycache__/admin.cpython-311.pyc | Bin 0 -> 204 bytes src/play/__pycache__/models.cpython-311.pyc | Bin 0 -> 201 bytes src/play/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1135 bytes src/play/__pycache__/views.cpython-311.pyc | Bin 0 -> 4931 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 160 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 152 bytes src/ranking/__pycache__/admin.cpython-311.pyc | Bin 0 -> 207 bytes .../__pycache__/models.cpython-311.pyc | Bin 0 -> 204 bytes src/ranking/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1021 bytes src/ranking/__pycache__/views.cpython-311.pyc | Bin 0 -> 1621 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 163 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 151 bytes src/search/__pycache__/admin.cpython-311.pyc | Bin 0 -> 206 bytes src/search/__pycache__/models.cpython-311.pyc | Bin 0 -> 203 bytes src/search/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1025 bytes src/search/__pycache__/views.cpython-311.pyc | Bin 0 -> 3030 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 162 bytes src/user/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 149 bytes src/user/__pycache__/admin.cpython-311.pyc | Bin 0 -> 204 bytes src/user/__pycache__/form.cpython-311.pyc | Bin 0 -> 1961 bytes src/user/__pycache__/models.cpython-311.pyc | Bin 0 -> 967 bytes src/user/__pycache__/urls.cpython-311.pyc | Bin 0 -> 1193 bytes src/user/__pycache__/views.cpython-311.pyc | Bin 0 -> 4052 bytes .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 3908 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 160 bytes 48 files changed, 453 insertions(+), 84 deletions(-) create mode 100644 src/comment/__pycache__/__init__.cpython-311.pyc create mode 100644 src/comment/__pycache__/admin.cpython-311.pyc create mode 100644 src/comment/__pycache__/models.cpython-311.pyc create mode 100644 src/comment/__pycache__/urls.cpython-311.pyc create mode 100644 src/comment/__pycache__/views.cpython-311.pyc create mode 100644 src/comment/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 src/db.sqlite3 create mode 100644 src/index/__pycache__/__init__.cpython-311.pyc create mode 100644 src/index/__pycache__/admin.cpython-311.pyc create mode 100644 src/index/__pycache__/models.cpython-311.pyc create mode 100644 src/index/__pycache__/urls.cpython-311.pyc create mode 100644 src/index/__pycache__/views.cpython-311.pyc create mode 100644 src/index/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 src/index/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 src/music/__pycache__/__init__.cpython-311.pyc create mode 100644 src/music/__pycache__/settings.cpython-311.pyc create mode 100644 src/music/__pycache__/urls.cpython-311.pyc create mode 100644 src/music/__pycache__/wsgi.cpython-311.pyc create mode 100644 src/play/__pycache__/__init__.cpython-311.pyc create mode 100644 src/play/__pycache__/admin.cpython-311.pyc create mode 100644 src/play/__pycache__/models.cpython-311.pyc create mode 100644 src/play/__pycache__/urls.cpython-311.pyc create mode 100644 src/play/__pycache__/views.cpython-311.pyc create mode 100644 src/play/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 src/ranking/__pycache__/__init__.cpython-311.pyc create mode 100644 src/ranking/__pycache__/admin.cpython-311.pyc create mode 100644 src/ranking/__pycache__/models.cpython-311.pyc create mode 100644 src/ranking/__pycache__/urls.cpython-311.pyc create mode 100644 src/ranking/__pycache__/views.cpython-311.pyc create mode 100644 src/ranking/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 src/search/__pycache__/__init__.cpython-311.pyc create mode 100644 src/search/__pycache__/admin.cpython-311.pyc create mode 100644 src/search/__pycache__/models.cpython-311.pyc create mode 100644 src/search/__pycache__/urls.cpython-311.pyc create mode 100644 src/search/__pycache__/views.cpython-311.pyc create mode 100644 src/search/migrations/__pycache__/__init__.cpython-311.pyc create mode 100644 src/user/__pycache__/__init__.cpython-311.pyc create mode 100644 src/user/__pycache__/admin.cpython-311.pyc create mode 100644 src/user/__pycache__/form.cpython-311.pyc create mode 100644 src/user/__pycache__/models.cpython-311.pyc create mode 100644 src/user/__pycache__/urls.cpython-311.pyc create mode 100644 src/user/__pycache__/views.cpython-311.pyc create mode 100644 src/user/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 src/user/migrations/__pycache__/__init__.cpython-311.pyc diff --git a/README.md b/README.md index 0c392ed..0cc3efa 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Django音乐平台 +# Django音乐平台(项目文件位于src文件夹中) 一个基于Django框架开发的完整在线音乐播放系统,提供音乐播放、用户管理、评论互动、搜索推荐等完整功能。 @@ -322,11 +322,11 @@ CMD ["uwsgi", "--ini", "uwsgi.ini"] ## 👥 开发团队 -- **陈涵** - 项目架构设计 -- **蔡耀宇** - 核心功能开发 -- **郭旭斌** - 用户系统开发 -- **张奥琦** - 前端界面设计 -- **薛永宇** - 测试和文档 +- **HANJUN** - 项目架构设计 +- **HANJUN** - 核心功能开发 +- **HANJUN** - 用户系统开发 +- **HANJUN** - 前端界面设计 +- **HANJUN** - 测试和文档 ## 📞 技术支持 @@ -338,6 +338,6 @@ CMD ["uwsgi", "--ini", "uwsgi.ini"] --- -**项目测试&主要二次开发**陈涵 +**项目测试&主要二次开发**HANJUN **最后更新**: 2025年11月 **版本**: v1.0.0 \ No newline at end of file diff --git a/src/comment/__pycache__/__init__.cpython-311.pyc b/src/comment/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d54d913c77524d77d89f5ea8dd47d0810125e3d7 GIT binary patch literal 152 zcmZ3^%ge<81Qn;0GePuY5CH>>P{wCAAY(d13PUi1CZpdBam&;sY}yBjX1K7*WIw6axTLwjtR7 literal 0 HcmV?d00001 diff --git a/src/comment/__pycache__/admin.cpython-311.pyc b/src/comment/__pycache__/admin.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ec24d72a231d5d06430daebcaad4cc093eae7db GIT binary patch literal 207 zcmZ3^%ge<81Qn;0Go66+V-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zw^$QXax?S%G?{MkrDP@MrRVD<=jW9aWhNCd0~M@f_zY6_OC#ATCbT%Us5r*R+}OY% zrX;nZB&N71IVL$jH#aq}BnE7XUP0wA4x8Nkl+v73yCM#tMn)hmmIV?Ym>C%vZ!joa Kz=n$0fGPm7k~3HU literal 0 HcmV?d00001 diff --git a/src/comment/__pycache__/models.cpython-311.pyc b/src/comment/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55ed2df5b95161fa4b90b6bab19f5a24fd1a9bd9 GIT binary patch literal 204 zcmZ3^%ge<81Qn;0Gi`wMV-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zx7c#?Q&Mw^{WO_wai(M?=B4NBr6d(G10`27dQ<7Ry z5>s519Fv@%o124BO~Jt2AK=kP!StY F1pwsgG5P=i literal 0 HcmV?d00001 diff --git a/src/comment/__pycache__/urls.cpython-311.pyc b/src/comment/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dab13c3e616971c54cdd6f83ae49e9223b29246c GIT binary patch literal 1068 zcma)4&u`N(6n4^V9jVIh6+bKi$|AO;i~~|MrlP{cB*Xz2hpJMR#crD^wjg2v;M7Sw^@PNUTczE0!cG&ZAR*1M9mjd^d*A!s`_gRMK#lQ_JIUP|0KfD{ zHI~Z5MNb_*0R(yg8OTfxV)jf!pKEE2SUt-CCcq}L)NUPCUf@J|omN-?Eqz-)Q4vnn znvbE;TSoQQz+H)`2>{7O62rY$FJPC^K{CvFBojt$`^^Z${hX&+Bqiol?87t>5^|PH zEVP4wlEHTgelI+@!#E_2W0=qZp&BD8GZFYcVzKbhVMK>410u#m&j0`b literal 0 HcmV?d00001 diff --git a/src/comment/__pycache__/views.cpython-311.pyc b/src/comment/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75f080e1bd36e2c1b86e80b3fd4fd09fce7f9ce7 GIT binary patch literal 3172 zcmbVOZ*1Gf6+eoUL|Sr`KQigMaO~Cf9IdvaWd=|KR}wO zx83Ctx(9!^W!kmKIh2wfGBL$d>Fw-nzL+H?Or^2HRdNGlo$h9IvP6DWe7#8YSskZB zG=lY_rei8%UCU!VM^YS(P7reSaQZN?!iBtk9p2n8CUecToEO&=9(4h;igc9WG?WQx z+y^MbYayV5#)C%!jh!kL3VM++Lpk4Jm=%RTlOL7A*eWV>b0D~F%`@+HIB$*9LU%(D zHvHYT#KSCKn)9vW_|E-BPUDw^GLH$7JR1nz1@@jVE``f{Ijnleh{^&;aL8^W36Dc) zPV{(92=x251HCL>rv=x$3$fnw;|<0KD?5qCrj!OP=8^lUt5eFY^ojXH&eT) z@b+8h&QpF?Csdd>SrRc?%ocPSZJs)fH)p6sUmz{XQ5Q%aR7I2E8HbaMQZ8#atUpc5 z60l~LinD57qk@^eren5~sR#(VF+-zRe}7&F8!S@X!HCSrE+8g5w_d0Hbl}vn>36|B zbNbNHU#8R3%%5o!=cbzuPG5rrHHWX>pu*LXNfviEBVc(u%zD_~n|}s!3*A@tuavix zflXy#UD`NgDMxJONF`oNAN^b0PLEZUspab{Wm_4nDuZ92gn^jSKoRNry4?Mz{7Swu zUh6wp8MouT-n-s6@R!kzt}o7ie(C$u-@X3L8{fTQjb5}zFIs(5cHfk%yT89Oe*3Lj zeBU3>{^9KJCvQ(yChH01PWyV)>O5#A(sm+U71NKvLlh`9wh2z5HK0^h5n&3=Hs>ea znqNlV7<+46Fj?085({XBp3oAuk9vGCH38H34@1v+gJ_8-eyT%hwfth9-7SsZab#~x`af3Pc|XEI-vCmCIX}9k2vJ&V0#Nydyw=|8Z*f{g ziw0rg3F}eP-O?_HH8H5YBuc0(u5AOZZQ9W%Y)Qpm_aV~T(s&W!PVSlW!LtB-ElE?T zm?AF(=664Pep#IJ_kRaV!gaL3Poe7^8E9E7bDBg_Ejf6`!Fv(Ft!)y30^nmYF{Ir9 zY|7_UQ_teum4_^|Qk;t$>>7i@hx_p%OTCAz8Wuee8oojbMyi8GPrC+av~+n6u1b^c z0tf;|#kv7FrBShj;WAY(-=KWfFsN`27N(Jzyg>jR!!vmdIK^%aoMh`s4y-wN$>)oN z^5bLY@g6qJ(hB!8!tNo=>WNCl`GU$kG%@p>MjW&>Q*D?XKi!$2By<5QXS<{J6p zOo_%kC0w<%mhiNm<78BcH5s<$VI?Z=r&u*ay za`#GUOFq0QAKtiN$tP_2#Fjj^DUVgpyl2T5ZTaGsJiRGTTk<7azEoAS)!$@++VbT} zte)&#IlGk{*h~&=M61aGD>-5(N4AnDHXP@`XyQmh85Z0~M*B*t>jm<@oBWAHTYGWc_7p z-;lj;$Vv>`iQ$S+Pj=t=Ep#S_?Bq~IYJ|el@tV@Rdh_F(Ynr9JWGgRKCMpw;>xmw= zeyT-0t*oUSu$2Q$t1?k{-8|0JT;i$a?VrD5DaUN(n5)^~LF4h`#}5)6%d>ZG{`K0Y z3!g1mi4i+7QWZx`wzdB}-f?;l`f5+lSSSD0p+2DhQaGTKsW25)mF14A(l%8sl(cz+ z@o`mse?DutBe)lAI0yGB!arlYbCL{kFeB`k%|k$L`M*Xe7Jj*beA2Zi{7M5oO>&9N)+>FJaRjW>Io zdl|EDDjLtjx9Y+$#Ht%6W+>`JfkzqVhxe0s!rhIN_!JDVdN$XAz;<(74NX*^{nXG< ub*HC>daA*vhPtc4=RWGHdQT0-ZaKe3q=$p;dzvi2_#f8$-yMdWNd5-}Gsn#U literal 0 HcmV?d00001 diff --git a/src/comment/migrations/__pycache__/__init__.cpython-311.pyc b/src/comment/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92a42920e6af7a7b755149de06bbaf85abb4e86c GIT binary patch literal 163 zcmZ3^%ge<81Qn;0GePuY5CH>>P{wCAAY(d13PUi1CZpd&ryk0@&FAkgB h{FKt1RJ$TppfMneiur-W2WCb_#t#fIqKFwN1^`Z1CS3pk literal 0 HcmV?d00001 diff --git a/src/create_sample_data.py b/src/create_sample_data.py index fde5b72..3a0d0ac 100644 --- a/src/create_sample_data.py +++ b/src/create_sample_data.py @@ -1,78 +1,84 @@ -# 在项目根目录创建 create_sample_data.py 文件 +# create_music_data.py import os import django +from django.core.files import File os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'music.settings') django.setup() from index.models import Label, Song, Dynamic -def create_sample_data(): - # 创建音乐分类 - pop_label, created = Label.objects.get_or_create(label_name='流行音乐') - rock_label, created = Label.objects.get_or_create(label_name='摇滚音乐') - classical_label, created = Label.objects.get_or_create(label_name='古典音乐') +def import_local_music(): + # 基础路径 + base_dir = r'C:\Users\27300\text\src\static' - # 创建示例歌曲 - sample_songs = [ - { - 'song_name': '示例歌曲1', - 'song_singer': '示例歌手1', - 'song_time': '03:45', - 'song_album': '示例专辑1', - 'song_languages': '中文', - 'song_company': '示例唱片公司', - 'song_release': '2023-01-01', - 'song_img': 'default.jpg', - 'song_lyrics': '暂无歌词', - 'song_file': 'sample1.mp3', - 'label': pop_label - }, - { - 'song_name': '示例歌曲2', - 'song_singer': '示例歌手2', - 'song_time': '04:20', - 'song_album': '示例专辑2', - 'song_languages': '英文', - 'song_company': '示例唱片公司', - 'song_release': '2023-02-01', - 'song_img': 'default.jpg', - 'song_lyrics': '暂无歌词', - 'song_file': 'sample2.mp3', - 'label': rock_label - }, - { - 'song_name': '示例歌曲3', - 'song_singer': '示例歌手3', - 'song_time': '05:15', - 'song_album': '示例专辑3', - 'song_languages': '纯音乐', - 'song_company': '示例唱片公司', - 'song_release': '2023-03-01', - 'song_img': 'default.jpg', - 'song_lyrics': '暂无歌词', - 'song_file': 'sample3.mp3', - 'label': classical_label - } - ] + # 获取现有的音乐文件 + song_files_dir = os.path.join(base_dir, 'songFile') + song_img_dir = os.path.join(base_dir, 'songImg') + song_lyric_dir = os.path.join(base_dir, 'songLyric') - for song_data in sample_songs: + # 检查目录是否存在 + if not os.path.exists(song_files_dir): + print(f"歌曲文件目录不存在: {song_files_dir}") + return + + # 创建默认分类 + pop_label, _ = Label.objects.get_or_create(label_name='流行音乐') + + # 获取所有音乐文件 + music_files = [f for f in os.listdir(song_files_dir) if f.endswith('.mp3')] + + print(f"找到 {len(music_files)} 个音乐文件") + + for music_file in music_files: + # 从文件名提取歌曲信息(假设文件名为 "歌手 - 歌曲名.mp3") + filename = os.path.splitext(music_file)[0] + if ' - ' in filename: + singer, song_name = filename.split(' - ', 1) + else: + singer = '未知歌手' + song_name = filename + + # 检查对应的图片和歌词文件 + img_file = f"{os.path.splitext(music_file)[0]}.jpg" + lyric_file = f"{os.path.splitext(music_file)[0]}.txt" + + song_img_path = os.path.join(song_img_dir, img_file) if os.path.exists(os.path.join(song_img_dir, img_file)) else 'default.jpg' + song_lyric_path = os.path.join(song_lyric_dir, lyric_file) if os.path.exists(os.path.join(song_lyric_dir, lyric_file)) else '暂无歌词' + + # 只保存文件名,不保存完整路径 + song_img = os.path.basename(song_img_path) if song_img_path != 'default.jpg' else 'default.jpg' + song_lyric = os.path.basename(song_lyric_path) if song_lyric_path != '暂无歌词' else '暂无歌词' + + # 创建或更新歌曲记录 song, created = Song.objects.get_or_create( - song_name=song_data['song_name'], - defaults=song_data + song_name=song_name, + defaults={ + 'song_singer': singer, + 'song_time': '04:00', # 默认时长 + 'song_album': '未知专辑', + 'song_languages': '中文', + 'song_company': '未知公司', + 'song_release': '2023-01-01', + 'song_img': song_img, + 'song_lyrics': song_lyric, + 'song_file': music_file, # 只保存文件名 + 'label': pop_label + } ) + if created: - # 创建对应的动态数据 + # 创建动态数据 Dynamic.objects.create( song=song, dynamic_plays=0, dynamic_search=0, dynamic_down=0 ) - print(f"创建歌曲: {song.song_name}") + print(f"✅ 导入歌曲: {singer} - {song_name}") else: - print(f"歌曲已存在: {song.song_name}") + print(f"⏩ 歌曲已存在: {singer} - {song_name}") if __name__ == '__main__': - create_sample_data() - print("示例数据创建完成!") \ No newline at end of file + import_local_music() + print("🎵 音乐数据导入完成!") \ No newline at end of file diff --git a/src/db.sqlite3 b/src/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..c8ac914750b7ff10afb63c1ad58e3f27e7736822 GIT binary patch literal 180224 zcmeI53w%?@ndl{3_OWc8bIen`jAa|eR*XRp%MVCG95CPjh8PGTFGZG*Z4p^=ESbRO zh9U#unLyGINT4A}A!(Bk0!bQ&K)Bm>ce}fHU)}EA?ryiYU0br*ZklbkclZ9b-Mx3d zGexikQDWB=kpxK3~sv@gGt23Vl7nXfzlJ zN5?Chvb3$aX+yJZL(^TWn{DOesg~QS%7Y!{wqQ6WbP0X7*0mdKts7UbwykSxS<}?E z*|w^Av#n|4hP5rN#ORvl)(!J*$Np6Z*FUDUD~`}m(@ZUMIZWyp^$5R2cUPT6l_4#*B$8D^9)sX!P+&9~q@v{e6LMe_xf$-QY+M zRWfKo{%Fh>igX3T<+cugOo#=01aTOXvS8E~?I(i-;w!hcMd z+t}K2&&FnArZd<_e5h4D3e8j$Y7Ljt7*P>={K1gy%k8a|eMzy#{GFZpI7ut~fmm=W z2~^tzXs~ZfBp4P5A-VO^g-onI_L#z>I^@TNrQQD6n8iJj_FzcK#wCX

f3LO=YYP zRU6}Lg5eHfo93GI1tMf-3CDb~?Y#mSk3M&2ZGD|k+pf_ol!i=8>$2wiY~`BLF|Cx_ z*0$=jVUTIumOJ8$CNb8oMq}JBhe;+lCKHIYp*G+RG`a;b8l5tiA!MD>7#0#9Kba!hayJL1*FgfR(T!B|(%M{`Kr?Jl=7(B9dYId1m4;?^0vR>-LeB-$-}fi<4n zXdI{*k9Deo29Yz+;c5QX0XY_|Muzm)_barhF~~E{_#M0oA21-4|hdW*Qn(6+PC{a zq(jh5nNIZ-r7m@Qz48>~7-+RH*2YHT?s}P%ZUo3&6(cQb&Ol99H7j_jah>6zN=Z!) z>$+jdLjY!l@jE5+Ft|pCILMGKwU(6`LDs)xA4?w_87jv2L$64)F5Srsx*Ug+s0hI=p>O zm%rUp@Ab>Gnp`V??CDHaQe9p!fn_$Wn91b207Da5Ihn~)7RZdfvVgHhJjVDFVyiM- z&^~`}uP@|p7ec-s(x#BFzOKE))8T0s8>GTA<`us6iRZ1CXpJOn*1F-!7!=e zf$e&-FWk4?=kMqc_qHQpUuVeQx z#f|#jzR0%i%8jT@LAo0}^^J8)EyTi_lm(~HABvIpfpmKbR!P1d|2AJp2zSN0Ga9LH zbk#Xm6cHmEB_qy8$%wekBEB`bE<+xtr*3&6F|OrKSR6tR-cv&eum)$H6`!wOIl$ z9il$cU+#>6>YVkp-n$rLVpYn7SJ^K4wURH~AIf++xV`lrr}xf$Vk6bp&RV67G@D3o zEaRAVd)>88=h8f4A=TI9>Y#lsc9Zzd=vsYU+u&?)t~3!NcwA)2)*Fc> zyVlb9A-HQB-Atu)djX&u|i`aBqjaOT`HDJvQw=ezjt8YY`nDttk1g`^>#49T5h z%B?nP4jxraVRCB=1@uf29OId0%w1^Ioh_I`BIPBQ5CYliidl1W zJt}1o5y7*;klWCVrHUGUSjbO3dPZ zLh2w9oc}N6n+^P@{NM0@#GmDl^ZWSid>6lwWa1AJKmter2_OL^fCP{L5&K6($OY8sQf^?3w{%0AIGfmWi^*@(SK3c_(;`)C|p2<)$ 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 literal 0 HcmV?d00001 diff --git a/src/index/__pycache__/admin.cpython-311.pyc b/src/index/__pycache__/admin.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d74a5f09744b5ff588e11279e94b12ff45ec0208 GIT binary patch literal 2254 zcmb_c&u<$=6rS1j`sX@vlh}<(LcAEG%$f@0<7C_VMWdt>6-3eUK895rV}EB0#*C02+f|H%OA_e==LsuQqP(Cl{Kz z#;yItb6a0FZs1Rx@h=_k&?_)~>`)1MN~vy_xF<~&3+{5;Q;<3dbgI)R{!m_jz=!!!_Y8DPlGnNMkJ zdJP8nIrDx?4e)g8T1$<_d;5v>))&v(i-P0rU4ogD_Vx;Jthwg(4e-z@_WU(ul=Wh? zIDmG^xSzoa^W=md_DW5fe$1+$SHwKrA1qvelfY&WiwNfda$*kYh&9-G0s)tJmjQ;Y z`2?&fz`#RDS*XS^-{U3E-{defll3{`bOsJf6e->#O+yiyw& zQ|!fPjOlaipW~pH6yaa>;i=2op}KlBD@TL?@fSVXY%08M=-Ex zuC&wucc#-nTy0G)jWGwMa@hoYzcuKG>cwKUQWMUq&>=5_u)A>AgD>vXIJ6L;RdZ@C z_7?Ix+=h)rh6OLdb_2{%`Lk+wn=g?{bG-$Agd)B$<0jD*rlm9 zO?9;(J=Y~Cp_y!-SvbUrCkTf+(asLmPx&f=U7BpuWLFE*xh^>gO{1NdKg5YA2&e*g q?XOSyDxqCE+orRql0lVGXkKnlFQQ5YRWhiO9<2X=R0eldyVJjg0vMJ6 literal 0 HcmV?d00001 diff --git a/src/index/__pycache__/models.cpython-311.pyc b/src/index/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e0d4b8e28a4b767a178ed2f0d8f2a7bc0a5ee94 GIT binary patch literal 4581 zcmb_fTWlN06*NRWka$;Gwqxc~-6$}^fLzLuaWIM5mB6Ra13neJcN~XIc)mhRN zgTiGBCuSNMR$8YrngFGX#F1+{R+=DT62$3e(63!!KZr#?3e=(`pdT{i{`jkRX1RPU zX~jvp67SB;J$v`g-92Y!KWJ}vFmO!&qbJr0t$&k_c33KnwZB4RjzJ7E@J!q=VlXg9 z<~W0lml$N?4Cjs71vgC$a~po@F=C=9GoUQ%pv)B21}N(~C<{f|0A*hX)rK5lrq{Vb z66iH3ZSf@HcwxMf5IvbIowWM`OZxFoxiD-2;H(Mwg{a-B%(MX5lAe}bI@iZkzb~xJeeBlUEuIo zQs5|3@z?hvQ+ygn`CAP3Ll)QzMlq9{;Q%yA(bqPC$yWdV)ww;#mb#x4ZJX48^}@{n z3iUd0C!Fy{VxA&~JORaiIGsuk$2cA-Hnrq2q}Y$1i()#6T?FYPhD5<##8k7vgmu)A zhL8bMOQz)BlDi@3wqj@g>oFNb(+%y@#?dteOp$ zEvrn`w3#eFUS*oi12Xoog+tAXso7PU8FoH~rFMLw(!<8BeBU5D|sz_@f6FR~zC!LQR*w+_|OA|nsQkk^|Y zoDb?n-Z6ThKw*O}W(Vp7;R;aU+6XH9luo!dpr?VJn-p_6nV7^xx6WWISSn$_(Z$&- zD|?`ii3+5NpAh$rH`V6crz>xNjfqOo{{7+~mhZi_g0%kf-8)MkTv_QLeX4ucK3aO? z^5ScS#j8bi;Obk;H)hHZX6}=ERe0wf;Iz9f-@T&x{`A}OTpn%@1HDGQbbKVw-H25J1>g1&6IZylzTGmw9~jc>Ae5-jq8y6~(Ct^HA9!_E|Hko*l%TU2otVa)r zj~+huykeoU`*@A*Az2ecW-D+|-8zkRb>}8zSNHYlg)^e7Uvl-!uKw)tl4t8|o9x+| z-?%U)dJagQ1G48p_GHQT%9nMD!e#JO^dZL6{J`IX5h`o3C^87YY}@35o1k zi9IW`XS2_f^`x7uCl&KO*Ar6rhL^j#p8OL$KV&`Ote|o>2tp5JE?9Ibr>+TvY$~Gd zCOrDv8o8JeRqJbhtIn_Le9dpu`9b4hUu*~cbm;Wcg`A+DtYSTuflW$myiP(fC0{RO zq>9n+@073ID;I8*-(FA$X5U@<N-Mk5K^QXuNMmUk3>HkDpUmt&ftwO0?WP4U&5h^CS2P?}4dfc9nfav*;a^yo0iL5ZLGJ%I%e%UDwad zzg+nFH@ieIk2CwbO&MS zj{HT*59htvQ>*6YJr><}eal9Rq}}j5tHf9a&krF+>u(j^Ho}T*O`9KeqeT{OdT@F;$YZ14&#>Byj^tJfP#rc$`b5>PSKt`Nh{?Tm10z*h6^F zYx|6)YxCvYXLu*1RL3N`1DSij{O+IecJMTm^$BTGNkUJP<-3=bKm1}Hnw*6D9U|F$ z7n;BtNM=lEvJI|PSZ#oOiq(2)_(;?72p?|1qbO`!$oj2c>yMK$Vh9a|kHLI9GqeTh zMA0w$2POZY>>sRKfKC*BqJKd056J!j7+!}*wLtY(d|#rFS%iA6iXEMYtwgd9jj11A zmeb^WU;TpW0SpxaI%i!m9@z%ePsbtrQ^1iILXg0$nhXX*iRls>|5t4e1AI9(o80is ssRv~IVa?gqL9opxw|8dX0U3W-bM9^qNpF*znBkk^eg|wd8@iqQAN9gGZ2$lO literal 0 HcmV?d00001 diff --git a/src/index/__pycache__/urls.cpython-311.pyc b/src/index/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7abd9a26b5feeff40361e00b29a1e56fa7a8a855 GIT binary patch literal 1023 zcma)4&x_MQ7@eePyG_|u6g;U6h_sRFLXoVez2WL#br5nQ5DnnF%u!?cVmd z2k(3Jq=^0{o+@~dTs`fru(v%qleSO=VZTf!nVIj$d+(di+uJr!Hv4`jIxPb5TQAn8 z*14VUtIsJwU;vPT%-A62z%&3VAS*5qYhW3m0!)BSRK(VF9R*P7TlrG~fUoLZ+SnMB z(AF#9R03)OKvEHfu>W!&b{QQ-Yj3Xf-XQ{+O2M8z` zd>7&O!i9T`L&7+Q5gjp3@)R(MaUd`h7rpQkP#14 zukE%x$&x4(o_6+BdEwd5W&u&TM91DsX{gaH%jQY%yYLA@FrY9Z3FEQ@;fON=$&nu< z$!c@MzrFI$DJudS3{|KiJE_-d%@wZ+Be)4^K=7lQ{;xT9Hx7ijcc_S=jjaDe!Q=#U z4aCibTEls+a^>hRiAMXof$(*by7LdB9u4CZMRcr0$m?lpp=#z@pI$BuR8UlVv@fnZ zaI})Lvy^Mu4p$4l2D$QW=Av90?P1Kuo)U0fsirsbyfw$M&-5L1jLgzPpBc+VG1n#o zSuvsr&-AgD{Do7_%D%5|i|=RE4S-zVWnR*gzUNt`r^DVTZL;b{JHLQ)bqX%-c00qq zz+4R5yAN8ep~N#e6g(W})rOj~n;cziJtPdJF@DUiswfRjyj9bpU>L^2+%c>L(9>;T z+?s=%o8uR_KL2|xtcr5I0g9F5rzh7=`XBs{yK}4Y!)pAr8jFH?#XPR+hwrEge*m5( BGvWXM literal 0 HcmV?d00001 diff --git a/src/index/__pycache__/views.cpython-311.pyc b/src/index/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37ee773e1a337052a8f4ac1302c905d7b0686fa7 GIT binary patch literal 1857 zcmcIk&rcgi6rNqLe}H3B?=F;dl|o2Fq!T8LF8M)Rh9M(H1Ml?$Q%7 z)^trFT8+Zh=p6w^6GJtg=Zl?LxK!Ii>t;?*bok+i4SYXrtZrx-llWZ(5HcnOQcO+t zBL;>`D6ba$fTHVu@QJdj={`3H!7%M&KcpKOMJI`fAI92uTN*L_XoIax8Tp+$Jt6B^ zaKtEKdEGD@E>TsodI3UZj9d;byJBXIJY_(0m9dilHVXjPDDRdQ1r|+(&~o&jjW>hS zW9bE=VUkXb3@4LmQ`NmrWmq(_eQ$d(?v(&Iz+Fn-9o(u~FR{?*-I z;VZW)d|58dz82mqPk6#TN4QrVw1o$*@W2zM9AWC!ge}au!ki~Ob%dw3u;>bl)>7J9 zPJ?uXmC}_!OGg{+?0Gj^ zFDgRN@r=s83|#7MZnhZHFgEc0A_T!r%{jN=A zO_TG`I^P&uc@+}my9dV;07B_GkSt9i+Zqs0RKgfP5=M^ literal 0 HcmV?d00001 diff --git a/src/index/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/index/migrations/__pycache__/0001_initial.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb7c46c84e6bcb60eaea1862eb59cb3ce4023be0 GIT binary patch literal 3734 zcmb_fU2qe}9ltwEvLwsS2@J#^`mzX#`49$Uhth<`_=BWPoMJn&EsLnKcO{>DI=Lr_ z+B_7elLXR)fwZJ}5@u>T6Ov3!ARQ)AlL_IW51Kx$X7)jIPs|j{_L~^|l&9|A=`1X( z&~~z?`|H2^|Ly+2cK=#^Qd?_fNSpbmR~V~fn19iZ-i$@&K@VXrGk^iC$i&zH8{+~T zOZ%Ky6)I1wx0O?@F(E34lR{idD5h8( zKrzujQN*fW+lrkB*g$ndCcpwFzyUT;6=kSSXq+Gkc_AKr#*BZ5fedKxk z{_uhQs^-V<%QhAF#Jb)CiwCcMBFo!LbUcA3rADpu18`qJ{tu zdPptoRV=UQMQ}(lz8oHhqGA^5S4aSTDO%l@zPYe;;p^5arDj?dVqtkU^lLb)SQ1bc z!lG~*Dz;Nl9*-wrND9ZGV%26-ewC&-MR)nqxwn_U{5HREcKP~kwep5%LL!u+$w|3J z$KQdikr>558BdDmpBVr(&x>U+G@@ zPb;_ISL#%m7?z@`a1vj3cjqA&woL6kBd?Fs34okCIEG~Vy{La~>w-%Q!q>Ex1 ziZGmjn)t%|D_7sk6U~=zDQ0!H5R0m!VuU`rP39L}5NBm!BB4n?{C)oN0>P}@IIsIe zSQ4&k03+d)n3QQr(E_W*CL)NMQf=k@pU>X=_AAAxX7F^4AOSezQ}=|fp2V)0pen@@ zmqO$>6DFa;CFA9Jy!ZXp{2Mov>YiDW0AWJ00*#@Gsnz*uF+5u|{*Tx5mu}}5ujW6v z*~)4**6FYW49gRfnhh7PEZ_R8hEr@h0K|VQsp5O-cUQjqt|&Ip;GMQ=ZVVD$_kwP- zKYW^>dqb)2j>lq9N-9>8A<9tmY&xHWGf82MR6jMGOK-om^u^yx(iAxXs$lujr}=YV zmjoc3)VI&a`73{UNbAatH&?#+roYv$m_zEu422YHC`9faDG?Ih77G0)6&C51CB14v z5|ZSM5kKKHB*~B_1elQNeMYJ2mLXB|3ca<+Mv3I}j>b@0*^L>B&k;ILW*t%Nh$4P6XLlgi z{`phbwLg6@(~n$ZS=ShLjUhf*Fjm#q6|9VBf9~lH(%Dv5U?{1zTCDdOLe?lLY%l5B zao666n)lB4;pV;R`ph-Gj$7t3uiXGa5CF`AN z$d6zQxuvXI!fpxi@r@oFMb1Fh8Nki};>SpSP~)EYUAS@2&B!eQclP1VS8?Ys3JL{= znPrc2p6ivClEi7v+qC+yXUv#hTS*)w?=VCFYf5a9ey+xMW=p;8qQ=J&ftbK z)R8W(P-7yF@S7ajT1y=vWQ~$S^Z(#TDZPW48RQwsdPcBk1o5LA(>sYg!&%QT_6#F_ zv~>BqX&q*%1#;sfJqfzoPH!}_34`+w!r%Z_|RpDVvWId!RH zg!{q#oK_Bx%DtpZubv5!kU|y9vIP^vwj$=4&7U0OM*62<>S0+^fvHR{S~0)#zA9Y% J4-nOwe*>P{wCAAY(d13PUi1CZpdVo7FxUU5u(d}dx|NqoFsLFF$Fo80`A f(wtPgB37UwAZv>Gfy4)9Mn=XD3^1aI87Kw->jNc# literal 0 HcmV?d00001 diff --git a/src/logs/music.log b/src/logs/music.log index 5f2b802..7ae60d2 100644 --- a/src/logs/music.log +++ b/src/logs/music.log @@ -1730,3 +1730,373 @@ INFO 2020-05-26 14:23:02,987 basehttp 154 "POST /admin/index/song/?q=She HTTP/1. INFO 2020-05-26 14:23:03,049 basehttp 154 "GET /admin/index/song/?q=She HTTP/1.1" 200 26055 INFO 2020-05-26 14:23:03,080 basehttp 154 "GET /admin/jsi18n/ HTTP/1.1" 200 7722 INFO 2020-05-26 14:23:03,098 basehttp 154 "GET /static/admin/img/icon-alert.svg HTTP/1.1" 200 504 +INFO 2025-11-27 23:24:19,258 autoreload 597 Watching for file changes with StatReloader +ERROR 2025-11-27 23:24:22,434 log 222 Internal Server Error: / +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 189, in _get_session + return self._session_cache + ^^^^^^^^^^^^^^^^^^^ +AttributeError: 'SessionStore' object has no attribute '_session_cache' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +sqlite3.OperationalError: no such table: django_session + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\core\handlers\exception.py", line 34, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\deprecation.py", line 93, in __call__ + response = self.process_request(request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\middleware\locale.py", line 21, in process_request + language = translation.get_language_from_request(request, check_path=i18n_patterns_used) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\__init__.py", line 236, in get_language_from_request + return _trans.get_language_from_request(request, check_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\trans_real.py", line 463, in get_language_from_request + lang_code = request.session.get(LANGUAGE_SESSION_KEY) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 65, in get + return self._session.get(key, default) + ^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 194, in _get_session + self._session_cache = self.load() + ^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 43, in load + s = self._get_session_from_db() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 32, in _get_session_from_db + return self.model.objects.get( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\manager.py", line 82, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 402, in get + num = len(clone) + ^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 256, in __len__ + self._fetch_all() + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 1242, in _fetch_all + self._result_cache = list(self._iterable_class(self)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 55, in __iter__ + results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1100, in execute_sql + cursor.execute(sql, params) + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 99, in execute + return super().execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 67, in execute + return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers + return executor(sql, params, many, context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute + with self.db.wrap_database_errors: + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\utils.py", line 89, in __exit__ + raise dj_exc_value.with_traceback(traceback) from exc_value + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +django.db.utils.OperationalError: no such table: django_session +ERROR 2025-11-27 23:24:22,441 basehttp 154 "GET / HTTP/1.1" 500 169619 +ERROR 2025-11-27 23:24:22,547 log 222 Internal Server Error: /favicon.ico +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 189, in _get_session + return self._session_cache + ^^^^^^^^^^^^^^^^^^^ +AttributeError: 'SessionStore' object has no attribute '_session_cache' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +sqlite3.OperationalError: no such table: django_session + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\core\handlers\exception.py", line 34, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\deprecation.py", line 93, in __call__ + response = self.process_request(request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\middleware\locale.py", line 21, in process_request + language = translation.get_language_from_request(request, check_path=i18n_patterns_used) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\__init__.py", line 236, in get_language_from_request + return _trans.get_language_from_request(request, check_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\trans_real.py", line 463, in get_language_from_request + lang_code = request.session.get(LANGUAGE_SESSION_KEY) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 65, in get + return self._session.get(key, default) + ^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 194, in _get_session + self._session_cache = self.load() + ^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 43, in load + s = self._get_session_from_db() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 32, in _get_session_from_db + return self.model.objects.get( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\manager.py", line 82, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 402, in get + num = len(clone) + ^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 256, in __len__ + self._fetch_all() + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 1242, in _fetch_all + self._result_cache = list(self._iterable_class(self)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 55, in __iter__ + results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1100, in execute_sql + cursor.execute(sql, params) + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 99, in execute + return super().execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 67, in execute + return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers + return executor(sql, params, many, context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute + with self.db.wrap_database_errors: + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\utils.py", line 89, in __exit__ + raise dj_exc_value.with_traceback(traceback) from exc_value + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +django.db.utils.OperationalError: no such table: django_session +ERROR 2025-11-27 23:24:22,551 basehttp 154 "GET /favicon.ico HTTP/1.1" 500 169631 +INFO 2025-11-27 23:24:35,737 autoreload 217 C:\Users\27300\text\src\music\settings.py changed, reloading. +INFO 2025-11-27 23:24:36,573 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:24:40,405 autoreload 217 C:\Users\27300\text\src\music\settings.py changed, reloading. +INFO 2025-11-27 23:24:41,275 autoreload 597 Watching for file changes with StatReloader +ERROR 2025-11-27 23:24:43,222 log 222 Internal Server Error: / +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 189, in _get_session + return self._session_cache + ^^^^^^^^^^^^^^^^^^^ +AttributeError: 'SessionStore' object has no attribute '_session_cache' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +sqlite3.OperationalError: no such table: django_session + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\core\handlers\exception.py", line 34, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\deprecation.py", line 93, in __call__ + response = self.process_request(request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\middleware\locale.py", line 21, in process_request + language = translation.get_language_from_request(request, check_path=i18n_patterns_used) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\__init__.py", line 236, in get_language_from_request + return _trans.get_language_from_request(request, check_path) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\utils\translation\trans_real.py", line 463, in get_language_from_request + lang_code = request.session.get(LANGUAGE_SESSION_KEY) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 65, in get + return self._session.get(key, default) + ^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\base.py", line 194, in _get_session + self._session_cache = self.load() + ^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 43, in load + s = self._get_session_from_db() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\contrib\sessions\backends\db.py", line 32, in _get_session_from_db + return self.model.objects.get( + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\manager.py", line 82, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 402, in get + num = len(clone) + ^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 256, in __len__ + self._fetch_all() + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 1242, in _fetch_all + self._result_cache = list(self._iterable_class(self)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\query.py", line 55, in __iter__ + results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1100, in execute_sql + cursor.execute(sql, params) + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 99, in execute + return super().execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 67, in execute + return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers + return executor(sql, params, many, context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute + with self.db.wrap_database_errors: + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\utils.py", line 89, in __exit__ + raise dj_exc_value.with_traceback(traceback) from exc_value + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute + return self.cursor.execute(sql, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\27300\text\src\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute + return Database.Cursor.execute(self, query, params) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +django.db.utils.OperationalError: no such table: django_session +ERROR 2025-11-27 23:24:43,228 basehttp 154 "GET / HTTP/1.1" 500 169619 +INFO 2025-11-27 23:25:47,858 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:25:49,585 basehttp 154 "GET / HTTP/1.1" 200 6240 +WARNING 2025-11-27 23:25:49,633 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +INFO 2025-11-27 23:25:49,825 basehttp 154 "GET /static/css/common.css HTTP/1.1" 200 25939 +INFO 2025-11-27 23:25:49,828 basehttp 154 "GET /static/js/require.js HTTP/1.1" 200 28517 +INFO 2025-11-27 23:25:49,832 basehttp 154 "GET /static/css/index.css HTTP/1.1" 200 63360 +INFO 2025-11-27 23:25:49,836 basehttp 154 "GET /static/image/logo.png HTTP/1.1" 200 5957 +INFO 2025-11-27 23:25:49,847 basehttp 154 "GET /static/image/laud.png HTTP/1.1" 200 1720 +WARNING 2025-11-27 23:25:49,877 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +INFO 2025-11-27 23:25:49,915 basehttp 154 "GET /static/js/index.js HTTP/1.1" 200 7424 +INFO 2025-11-27 23:25:49,935 basehttp 154 "GET /static/js/common.min.js HTTP/1.1" 200 6543 +INFO 2025-11-27 23:25:49,935 basehttp 154 "GET /static/js/jquery.min.js HTTP/1.1" 200 131989 +INFO 2025-11-27 23:25:49,951 basehttp 154 "GET /static/image/datu-1.jpg HTTP/1.1" 200 108815 +INFO 2025-11-27 23:25:49,951 basehttp 154 "GET /static/image/datu-2.jpg HTTP/1.1" 200 99784 +INFO 2025-11-27 23:25:49,957 basehttp 154 "GET /static/image/tu3.png HTTP/1.1" 200 502070 +INFO 2025-11-27 23:25:49,958 basehttp 154 "GET /static/image/tu2.png HTTP/1.1" 200 846222 +INFO 2025-11-27 23:26:14,474 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:26:14,496 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:26:14,538 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:26:14,687 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:27:13,420 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:27:13,448 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:27:13,491 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:27:13,645 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:27:14,879 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:27:14,901 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:27:14,939 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:27:15,085 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:28:07,309 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:28:10,111 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:28:10,153 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:28:10,292 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:28:10,383 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:28:11,528 basehttp 154 "GET /static/font/iconfont.woff HTTP/1.1" 200 5740 +INFO 2025-11-27 23:29:54,929 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:29:54,955 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:29:54,997 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:29:55,146 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:29:56,408 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:29:56,430 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:29:56,473 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:29:56,634 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:30:37,536 autoreload 217 C:\Users\27300\text\src\music\settings.py changed, reloading. +INFO 2025-11-27 23:30:38,481 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:31:01,729 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:31:01,754 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:31:01,801 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:31:01,949 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:31:02,680 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:31:02,706 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:31:02,746 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:31:02,905 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:34:29,037 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:34:30,952 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:34:30,990 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:34:31,142 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:34:31,216 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:36:24,162 autoreload 217 C:\Users\27300\text\src\music\settings.py changed, reloading. +INFO 2025-11-27 23:36:25,043 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:36:26,697 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:36:26,734 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:36:26,882 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:36:26,953 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:37:03,774 autoreload 217 C:\Users\27300\text\src\music\settings.py changed, reloading. +INFO 2025-11-27 23:37:04,661 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:37:05,758 basehttp 154 "GET / HTTP/1.1" 200 15758 +WARNING 2025-11-27 23:37:05,794 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:37:05,938 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:37:06,013 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:38:52,323 autoreload 597 Watching for file changes with StatReloader +INFO 2025-11-27 23:38:54,124 basehttp 154 "GET / HTTP/1.1" 200 23339 +WARNING 2025-11-27 23:38:54,157 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:38:54,312 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:38:54,379 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:38:54,561 basehttp 154 "GET /static/songImg/All%20Right.jpg HTTP/1.1" 200 794892 +INFO 2025-11-27 23:38:54,573 basehttp 154 "GET /static/songImg/785%20(Live).jpg HTTP/1.1" 200 723157 +INFO 2025-11-27 23:38:54,579 basehttp 154 "GET /static/songImg/Angelina.jpg HTTP/1.1" 200 103446 +INFO 2025-11-27 23:39:14,351 basehttp 154 "GET / HTTP/1.1" 200 23339 +INFO 2025-11-27 23:39:14,399 basehttp 154 "GET /static/css/common.css HTTP/1.1" 200 25939 +INFO 2025-11-27 23:39:14,400 basehttp 154 "GET /static/css/index.css HTTP/1.1" 200 63360 +INFO 2025-11-27 23:39:14,401 basehttp 154 "GET /static/image/logo.png HTTP/1.1" 200 5957 +INFO 2025-11-27 23:39:14,401 basehttp 154 "GET /static/js/require.js HTTP/1.1" 200 28517 +WARNING 2025-11-27 23:39:14,447 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +INFO 2025-11-27 23:39:14,485 basehttp 154 "GET /static/image/laud.png HTTP/1.1" 200 1720 +INFO 2025-11-27 23:39:14,524 basehttp 154 "GET /static/js/index.js HTTP/1.1" 200 7424 +INFO 2025-11-27 23:39:14,561 basehttp 154 "GET /static/js/common.min.js HTTP/1.1" 200 6543 +INFO 2025-11-27 23:39:14,562 basehttp 154 "GET /static/js/jquery.min.js HTTP/1.1" 200 131989 +INFO 2025-11-27 23:39:14,566 basehttp 154 "GET /static/favicon.ico HTTP/1.1" 200 1150 +INFO 2025-11-27 23:39:14,594 basehttp 154 "GET /static/image/datu-1.jpg HTTP/1.1" 200 108815 +INFO 2025-11-27 23:39:14,597 basehttp 154 "GET /static/image/tu3.png HTTP/1.1" 200 502070 +INFO 2025-11-27 23:39:14,599 basehttp 154 "GET /static/image/datu-2.jpg HTTP/1.1" 200 99784 +WARNING 2025-11-27 23:39:14,602 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:39:14,605 basehttp 154 "GET /static/songImg/Angelina.jpg HTTP/1.1" 200 103446 +INFO 2025-11-27 23:39:14,606 basehttp 154 "GET /static/songImg/785%20(Live).jpg HTTP/1.1" 200 723157 +INFO 2025-11-27 23:39:14,606 basehttp 154 "GET /static/songImg/All%20Right.jpg HTTP/1.1" 200 794892 +INFO 2025-11-27 23:39:14,607 basehttp 154 "GET /static/image/tu2.png HTTP/1.1" 200 846222 +INFO 2025-11-27 23:43:10,137 basehttp 154 "GET / HTTP/1.1" 200 23339 +WARNING 2025-11-27 23:43:10,163 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:43:10,214 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:43:10,380 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:43:11,430 basehttp 154 "GET / HTTP/1.1" 200 23339 +WARNING 2025-11-27 23:43:11,456 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:43:11,495 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:43:11,652 basehttp 154 "GET /static/songImg/default.jpg HTTP/1.1" 404 1681 +INFO 2025-11-27 23:44:01,261 basehttp 154 "GET / HTTP/1.1" 200 23468 +WARNING 2025-11-27 23:44:01,288 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +WARNING 2025-11-27 23:44:01,338 basehttp 154 "GET /static/js/jquery-1.12.4.min.js HTTP/1.1" 404 1693 +INFO 2025-11-27 23:44:01,503 basehttp 154 "GET /static/songImg/Boom%20Clap.jpg HTTP/1.1" 200 94362 +INFO 2025-11-27 23:44:01,504 basehttp 154 "GET /static/songImg/Christmas%20In%20My%20Heart.jpg HTTP/1.1" 200 128142 +INFO 2025-11-27 23:44:01,512 basehttp 154 "GET /static/songImg/Follow%20Me%20(Live).jpg HTTP/1.1" 200 722693 diff --git a/src/music/__pycache__/__init__.cpython-311.pyc b/src/music/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6743a830068c8ce63418f5652d163a86370c7c94 GIT binary patch literal 241 zcmZ3^%ge<81Qn;0Gj)LUV-N=hn4pZ$Aere5DGVu$ISf$@Obn?ES&T46%Ycm4Fb)GF zP)#s{Ceurhh@U3YE%t)S+{)s@oLfSfdBr7(IXUr(#qqwC!GS(0Nh=vXgOvT!Oty*% zElw>ejxjPfHZX`ONv$Y}DK1Km$t^9;Opb|<&&C2fRRREE@i}Y& literal 0 HcmV?d00001 diff --git a/src/music/__pycache__/settings.cpython-311.pyc b/src/music/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5daec078972d14cb6305d566aeca2f302e1b76e GIT binary patch literal 4239 zcmbVPOK%(36&}9d6h}|$;hKKP79(q9OL8PxPGnl7WHuD3ij?gVDu@y9H8sj`MwuB} z)}RZbC{Q2>kRS+PBM=ZHi!^NtbX#=QpCAHU5O-yuEAIx#E~}n9BxQ;+V%3y+=H7G9 zci#65{ntRi%fRR2{)BLCfMNbiH|>wVwfOnpHimi5ASTZs3$luqyaikKtZlKEaC-Lh ze@fWTYG4@b_`$+3Kf$;8`L$i%iEMcnvgh3;206aB7@GhcDKrbIz(G_$R zjSJL^Yv@YJg07%Z%g<3j|f}D>aYnF-L)pxw{Jzgrw z5fy8iAeGd}6IqFrE2>b8>?`sfE^3_DyM`sK@ES&uox{j=WFn?`R2HO&s_}}}lDr-P zoK%XmRL*cS+-=VLn%<$bKC}CDq9X5(%O8s3+(+}*#&>5Y<||XBp{d#}X8dsDhO%ZlD)2iOr&8=v=`e+xELa?N1hx=I7hq?|` ztg3=6ojoYS0bc^dNH;>`HKF)K5V1-ef`srh;!=3&Q;3+@D=JoqeP84ciBrYAQrso3 zqFgS6{is`?YN;v<2#NTBS1_mIVnq?OLoVA|te>3ebKRC(zH%M-Y?If4ik>wh%0*tp zT*`d>x+ry4mbex3@eWZ{dBUv#c_`q64$=88w|OW^r^_+eLq3EeRlUdTf$294w$%+CtRU@+&OPmrjy>Dzkq%a<**(GRHVCh%e_}wN_WgFcMULN5lpEOi-!c1sV|z)_W4Asti-LSAY;#>sWW`yHgOK zN^D!X72QWC7q@;$?||-}hSxj{?rGv{E~twt6wTyDM~SOYKytBAAXZt0*C4OK>kkQv z8McexQB97!P@p)Fa^H_-6ZFm#Z#J>AnaCABN&KET;)(lPYb2OVXLGSsDiJThWXKZl zdNLkQB_72#6U4un$>a)Ko2ivddX?DsWI-aHTw;AA70V^EB=jh|mZYduawSGb3Gu{Z zxfr#UCE?gs?m=NAmd!rOY{m-@W2qz@W?%xjQkgXv5^E%oilx`KVrz-QN+zBF&B^sd zA)kTq;obs=leZSq%~k5w%`|aRUM^31OvSL-EUW`81wrM&`U>@v_*!e~I0-d3tI1R% zYmU6XF+W2Mm|vnRceZJ!)$N)2*_$`FHT+E5R+Zwm*<#!6A7|YD;V@XC z>#Gv@e~DqUSS*IsZm}B-C4R=@t$OI6;bi>5FXq2o{(Skx%+dUJ%ik{lIP;JBe=h%h z`CkjQ$#{J-UK>r+M-w&QYTdV5bptkd-%|Ag&=aUS3}>L%YA|h54H^+o5EyL&f`d$G ztm-$sOn<`CVEeuqdOr5`*o)mCeKmHj&dznPjwcpt?43G$=M->xH*ztqi>$(4H|BJ^j|5yvn)kAZJ!xjPzB{qkNxy*Qajzf9FW(7TNbF54VN8UVJNXV!D`HM-3KiI zr0OyrTNrkv8hGVrtDaZBo~pY^pm%6G`XbeySAn6bw-F3|QTkH+Tzs+c@(;D(Y&|$z l^+Dhc*Pqw^lKNBXtMH43n*D0sewAhcvJ-0lQyxH%{|`eK;@JQI literal 0 HcmV?d00001 diff --git a/src/music/__pycache__/urls.cpython-311.pyc b/src/music/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..103a954c6c3dceef38f4b4266d16255ba43a593a GIT binary patch literal 1683 zcma)6O>f&a7^WQBvSmBjQU~3#VIUf`iepFWG7JNZePGDeuE5&EwjzLG)Kw(LRwhaU zNpFcyJqx(4MN&q|;cRmzS7pv}7pNXu`#hs5=;A#qIT#2hIT;oby zQ{h&x#H}gZTUX-VR=D;5!;SQQ!@Kr9Xt$hDkU%EPchSS|zD4^{c;t^J)Zu;<8paP} zj2=&D5IdY>8nVYI@EJ!mnsCgd14BGQKl%7)W}!O~MI@pa`QcGSi3)+@06PpLhH=k8 zVvISDSV{FHoiV_h=|2{#+^y% z%Ifm8D(Ht6`qJ}|6C$6)5#>FEj%Y*>IUPE2Tqu|Ddj(##EE-tqP`HX_$J?gaE&3Wq z1b0#B5d4`bWwUMU2M%MqhoUiWDeCL0i1-*&S%{^GT9osRh^4B3!)hena@bG?*>3-* zqI;nmOgujv2@+I3*_tahbHUF&MGO+9i0zSByxm4e1(m&=u6#QzN%*430^3!jym7UM zK{T=jfs0J0RH(RSyKVd>zpS>FRTvj%#1&H6@rWO`OBs~hXL{i$ELDa%7j3a=MPcj= zObtKu@QDhS>C_2-6!vMO5R`gajsxe^p4Q|e*Hp#nA~@vsv{6X8UT4^$?%1BzbD{8` zFieHNd??L>b~Dq5Lvd<{!|ZxNl;l@gt-KSuA{xt9|FLrFA5til^(Ag;S!k&E>w&DS zzC5Z+88V;a3`+L1`qGK~9lQ``@bcz&jJ+?``HH4#^U|sY=RhtW0IhQYc9!QQKo|d>m*D2btLD4{wD&H+ z=JK4wx(K@o%C#q7oxL;r_-XIy7YW=-;npRr3f21A!P&uVkTh?k%^S;xcV~BJch4Ur ztxnqNB(R&pZtih?X3os>PO^S0UB8t;Glgbu*qj~A4$dDX8{KrHo50-^?&gL()cvHj aleTse*hyjMwV~!~)wR--y1eK$!P4IYCEcR{ literal 0 HcmV?d00001 diff --git a/src/music/__pycache__/wsgi.cpython-311.pyc b/src/music/__pycache__/wsgi.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dbcfc6abf2717a80ed3aa04af6d5b42f1e6a47c8 GIT binary patch literal 668 zcmY*XL2uJA6n;*+6*3kf#CEpEI8=h9D+iPYB?5zFAn| z-{QKb7oUMZ3kV_xM=hjhlN*uQG7(VJUu43Ul|}LLObTS>+yJ=HV{Qlxpys*WTr5J+ zS|vskN~@#+;h`VB;DHM@QW4Gc|+@3gA!X-4};v}N6a*t(~xz?ZjqKy*D z?suv3^O(ORBir12U2W73{O11QVZBjn`fm^Rj^6B_+OxYmk}AdGt}GR^qVH<~zMmOF zW_RZ@oKUNGa?sS&G+B|xLzap-vveV$onXLKwzkCg4X$%NHxFO#dPkC`(yKguQZ9Rn zj+7_U(3{bEIii!C+}wILf6(Wtt*i7$0r_6LsfiGp8bwr?LhkMXvd(VjZ2~*v|N8`t qkJc~P_yHT^O=nzwaS7EcsE(mJvA4$d)}_6DWpAIY>P{wCAAY(d13PUi1CZpd4BO~Jn1{hJq3={(Z&8k H*nlbk`WiAB literal 0 HcmV?d00001 diff --git a/src/play/__pycache__/models.cpython-311.pyc b/src/play/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91b1acb3d81f42f88463166abaaae73a3fe4a754 GIT binary patch literal 201 zcmZ3^%ge<81eK?hGi`wMV-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zx7c#?Q&Mw^{WO_wai(M?=B4NBr6d(G10`27dQ<7Ry z5>s5198-{!SQ!J+u2)d`i^B%UF3m}`E8+lZV+7)2Ss?L&nURt427}B6Y^aD0r~&{n CX)wD0 literal 0 HcmV?d00001 diff --git a/src/play/__pycache__/urls.cpython-311.pyc b/src/play/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49dbf150e0c20af1da6fc5c6813e7f5d73e676bc GIT binary patch literal 1135 zcma)5&1=*^9Gzsd?QYhp=uP|>(2@q$q_$8o)Pl4YOT~j)56eQDW@dL&l9@0wX}dku zoBx3xJb3a0{Ubbk+CmSqC&5#13%&K^Om+j?g3#G)m`UF6{oZ>s`7$+S0y(xK@hF5FFQ3C@N?K7nV}Xb$G0oQ<3^y|tr-2Zd z5xxoIhzrPQCNNh89103|BD~8TxJnsJD8n!!Ey|Ld0;VwzIEEZ!&xCSxgh;vPx`>9{ zLE8ao)0EL|9116-iHnIl=ghi-rcuaU1$Je7?wU{cf<$t0&s@z&sMHPH=A;iC_yi#s z5EvyXWx|87#b^SPt{;K!DlTei6z z2b|yElE%;&>;F_x(ZNg!aq^%FInN|luKt2*6y6EAuSjO>bBfkT7-uLVZ5cw|Pgx7) zW)}IZ<-tHHMQ)G6;u#yZMp1ghxQ5%|sK5)6BWyhn<-%&WV%m0PfJG-uJ;-@2+cuBY zIkmOEp@KfvhKq8Z&HmJ4M1;pFY5Ngcl8`v)DyWKo{|2JFB&Gp!&!C(no$ptQcQ5Qp zf718m`SSgKZOjr=Uq~M?_3890iujF8vVW;4%vZIsqwo!!NGLeHx9l}HIA**#_i%o8 zwkhzQXmS=d6-QI0<)q!y%3?xM7ULy$O%^FvJe9XWNz=4}epxdHK;3Qw?N$%m9KU{p z>%FtrpaRO(gOzu8K1_dfzV7slg+pWE$XNJeR1Q{p)#*>!k@e`O*)!G;jrAjAeNZi5 N(GP0s$F9nz{{XG$Sgrs7 literal 0 HcmV?d00001 diff --git a/src/play/__pycache__/views.cpython-311.pyc b/src/play/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48147ce330b84316fee3fe6e92ca746ee7355309 GIT binary patch literal 4931 zcmbtYZ)_9E72mbj-gRupj@KcHAxB6^z~SUcMalZ_o_ zH$Z&r%2!b-S5Y;+MuI!>!JjA*K~1GrI`vcU8||lEYb#qTMU7N}j&DJ561q=)v+=)m z0CDPg{ru+5n>RD>&CL6)|KxU85KtEW)fD-sn;`y+EBRu{G0%H|xlM2cM+(F&IYN?{ zw+NP5>xk9htpYV`8?hNYCD_jsob4ttLUVSY3`d_Mg3MEFEJ*6MtMf652gZ*0D90n< zs?SM?56woRll_u3_X}Q}i$z7OLbitUbHKf6_*&unywQf|BVk#tOp|#oRoWvjgqhz1 zjR!?7Y-d~HEM;2MHWd)ugYSbv19-yv8%tfGp0G%UN4Eqe^RgFIN*KvgtjJ|^T&2vj zNmylKn#t>@UTKfBO%nIO0}l#bNKl+TVUsD;AX9zBmHLGJO=HS-jxMfc#;}4c9Fwr! zdPlZ#_MD_krc#dlOiF*>Xxlnn@QiGocINv5@5=L><8IliNkXPd*Uj0EgEI7i-MUq{ ziWwuC=%iGimk|W#EY*oa1Lxx0tCjaa_dy~030kI8B{3-WH%B?afS$M5TI9@nB=MT) zR~35{InHB_@T+4gljS>s^Auy0aQt8Az*n42k&_*(-m;k$JXX{Kk5-jwz1?~7na)ea zYv%vTnZ0R$m3t}0md-WLo8y&m%1+cQJ8zKF{=5dq#$j)TEn@|V>`YbXTT6e16ZsGdPd&wRSs`^Aw~j?P-7zPG7RH2#D4j<5T%He7#;@))G(@aKj9i(QWzi;5eoZJ&~6g+F+6VwGb?$;3wQ$XHYH+i+D8+ zrR9g_54uN(MIMQx2ag`=>>QQ&8`7wV!lO61oe$6o)kE8}fQdmA3I_di+LwYp33HmKe%&D)jyaKl@(?8$hW(%z=jz?x6>9@e~v zlOJZQb|gQ_(%wzNYHQ3^1vUwbqtPIXz3U#|($O#ETk@T&sk*yz+H*kh9LU!1S*m!M zrK^^P({wXhD$Sl!*)tk@CV6&)W;Y4DZC94@D@>!tG^Ro-vu}$9 zS%#@gGj%GnQ)6~2#`C?MsNH@4<8Q7$x~hzXl$vq1W?ZWoUvzEPUiVZlP2TzJ;pvtB z)qd4;MDrX;_HQ`Zg z+sYfqEyt)Ob1WJ%X9qxzR>*Qz$Z`ez$XRn)t{{=Euf}v{TSk^EU^mEe6nw0Ztdz@Xi6pjMJDZ&2PrgyD0LL^xsy z0}>+zq8-4+y(KyKbVT4gp2F(Q2LW%jL-2im7svoX;=@n^R{&s;=2wR!M8e`AWJ{_< z3%ce?`4%@enN7A{Aa278Vw8-Mx88B!7e)A(?c&$Ob3_yI6GEh}TW(k{5!a!|C797x zOVBc?ThMsWf|_A0)B+?(=@jHgUatsG%|~a(#7LY+2cbbH!y?X)I76W>EO2AJu?VEn zkQ77lCY<+$Sct=^sQvg>7VT*_DV>6T;zJfmJIoPCRc%^q z?m*UGef#v6r|)#D{ua&OvP5QCKO~i^KsK;*>CDz=!(X@Q1l`RFqB^kYhR%isgFM5w zUSLv`y_S3V^5tvWj0O?EQ~a@^m$ZIMQoT0%TZRN0r`l)d4#jH$j0ll1;ILS(AC=n9FU;}r%8(?5!c(&#_-Vsui8zZLgCSn)2?MX~+lPhuE`1Sr zHy0z=DD1;-7(eJiyWt1z#H0a}JwSBZ90F{F0$32lq!kmq!_fgCIiP~a+Cob3LJtrJ zV9RVsLik-H$e=c?jc*!+VJ|w2$q7t;21IA_6Gca$D&jMN_W&+i`@mHic!WcYEr=Ik zGXn;BBaT?79E~0{7pQ_ZZjh3!V%ZYT$38m*;re`GG zGxG1tzf?jI_42fKd0Oq6(Ryao7C~zflKqOiQKgy;>k7MHs|c!8t46gdRBIL|UvvyS zJQ#H7u6ZN~k@5Dq5CWixes)-F!PkQAPm#4T9s%!#MqpC4rG0#^k77P`?s z8{>FEG_a!)ycNQ*Zp8Kn<~TIZ3w#e60NeO_66b&b1|!KV@s47CHi#z0{A7tX#r$N6 XfRcYUnSCUj>jJqzHsbnrV$A4&k02nn literal 0 HcmV?d00001 diff --git a/src/play/migrations/__pycache__/__init__.cpython-311.pyc b/src/play/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd10edff7c1b2a8ecf2f2ff95d741e5c83328230 GIT binary patch literal 160 zcmZ3^%ge<81eK?hGePuY5CH>>P{wCAAY(d13PUi1CZpd>P{wCAAY(d13PUi1CZpdBam&;sY}yBjX1K7*WIw6axTKUm?)| literal 0 HcmV?d00001 diff --git a/src/ranking/__pycache__/admin.cpython-311.pyc b/src/ranking/__pycache__/admin.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58f2f12b72fabeb2f5dfdfc9d637c46b4e5e3418 GIT binary patch literal 207 zcmZ3^%ge<81eK?hGo66+V-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zw^$QXax?S%G?{MkrDP@MrRVD<=jW9aWhNCd0~M@f_zY6_OC#ATCbT%Us5r*R+}OY% zrX;nZB&N71Ii@HvFFP|YJqB!wUP0wA4x8Nkl+v73yCM#tMn)hmmIV?Ym>C%vZ!joa Kz=n$0fGPm64>M2z literal 0 HcmV?d00001 diff --git a/src/ranking/__pycache__/models.cpython-311.pyc b/src/ranking/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fb132690e33b2c77f858846ca96853ba88ae20c GIT binary patch literal 204 zcmZ3^%ge<81eK?hGi`wMV-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zx7c#?Q&Mw^{WO_wai(M?=B4NBr6d(G10`27dQ<7Ry z5>s5198;8-mz|lH9s@B!ub}c5hYgTjnv-f*!~xXF2*ky*K;i>4BO~Jt2AK=kP!StY F1pwn)G4cQa literal 0 HcmV?d00001 diff --git a/src/ranking/__pycache__/urls.cpython-311.pyc b/src/ranking/__pycache__/urls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47e6cb6cabd92b76dab4e44d730fc1b109527154 GIT binary patch literal 1021 zcma)4O^ee&7@nl*hbdh}ueuC)NCP#g^&k`#q`J5w9@P3#3f*jG+NNe^!puasw>|DZ z@ajns{Ux3%>_Ku8JngNpw>>$Nrcec8C&@4~dEe)Kp68vn18<>y)FUpTW{8* zTr5r>tHlR^zyKfvnXy64foT9#LRMTN*1$4=39yOE*qW_#0IGbeeo}~E)wdcGV^Bf0 z=fJ%XP!j->iYSErXHQ^{(Q!0Mc_1T3ZTrO(!@ZQpNgyTWRP4bx5)yKjN-T7OfRe#? z5q>W`xWhOkjAIzlG2-YeO}rQYND7`-p|YL$iQRSi;#1htdlf@iFx~ zUfY)}i9+G)U|*FNzWwkZAPP%#?VXf{n%$~w4tmpr_Yr~tg%L>@mt6?QoDoRoqaaC& z!;Sb(5uZy|0yY$?R3&!WbevY9Ysv_2K^hQz*U@XowR>?O#EpF=3~iwPj|G!c%ry}& zH)>7ik;2N^pOcM__X07}AWiolM!PhOQxwsOG9j<0rG=`QYkzigW1ym<+M{D}(}m;0 z%I?apRXaRw_?l!9+saKjH{1P~O?+kGx{{+0a$LuC?Gt?mT_dx!(I>`gQ_j7~Kvv}e zeXE4%0B!nHx0+Q)BXwU!qpZF`k?Y&cD|*s5J*yXqFO@%8eWRscz^VEV&YWI%*cX_K zVdwU(c6%uCfgB1R4vWO07VahUv)UcPP#WWV{F2Jk1jQ>gElY-BEX^&$S^_<71LN8P uT-|(sf-8%^-(Obk@WIjLqyBMY`{SF1<^Qn!W6NKbtc&JhT|azFVgCUc=QT$F literal 0 HcmV?d00001 diff --git a/src/ranking/__pycache__/views.cpython-311.pyc b/src/ranking/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..550a520f1f55ffd5642fb1dc195e7fe24d669cc8 GIT binary patch literal 1621 zcmcIk&2Jk;6rc63ziOuo>nW(Egtj?=kuZ@7Axhd*#zi2tDiU!}n>d)w?lf_--VHOG zQb&oD14ub=s8FN;;^0%DN|E|^^t8KLX`_)UkWde~1*Kei;;j=qj?Dq7;%Vm1oA=(n zkKfGfFMWNd5K#T`K=pncp+Cb-iy}wD!37YukdAc0Ks8}X5JEX(L`p~(zd=)?E={0p zbT4$z3Oq)MsS^s4@U|v|$|H)wD#AQ?43W2x-O|Il(DrMzvUXSzWZnjkonx;sP7mpk zE-$Ia1r*ybciIN%MEo{#w!L2y>?R_IijKO%>U&6+x-tTWy>v3;T4WV1BwAjLWJ~H? z^{5`(1|)XcXsn5=B2`}qvyQ%wbFGRG<6S-cJGO}~um6T^@&vY$dE8I@DE75ghwxNohb|rB0Q#ZN9EOTx}en+pHYOShO7*VMFt{`U74XN*&36N3&{GB< zz2Yh(zA_Rh1y3nBA5OSR$yZ8&a?4Y0xyqEUOgYmtPI(5nuY9q7{i&S!ZZ(iEdGe*k zxGU#EtSA6-(`X_&6&TWouUH$%QWBAv+o5}f^-1?2(cxE3-QB`(YaP~@uZI@1AN=Vw_QB#<7uZ{ab_yOef;G{@=5CD z`)~d*{@d__k%uF0YRFFwInvMpAcbybCH|7Wpqg`5j?G)t)|PE{c#!ET{D|-6YL-q6 z*2MM!qHn-A^mSm*6PLlVY>;s}0Ne22$}R)j7X?AsMFY;sv5U?*t+5|V3-9lvUe=8M E4;;W*0{{R3 literal 0 HcmV?d00001 diff --git a/src/ranking/migrations/__pycache__/__init__.cpython-311.pyc b/src/ranking/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3636f8231bdf9bad0a8bc30ac7a8847e1c3b17e9 GIT binary patch literal 163 zcmZ3^%ge<81eK?hGePuY5CH>>P{wCAAY(d13PUi1CZpd&ryk0@&FAkgB h{FKt1RJ$TppfMneiur-W2WCb_#t#fIqKFwN1^`T`CRG3c literal 0 HcmV?d00001 diff --git a/src/search/__pycache__/__init__.cpython-311.pyc b/src/search/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b1e3dd29706fb888a4eeacf5299f1b882a9f607 GIT binary patch literal 151 zcmZ3^%ge<81eK?hGePuY5CH>>P{wCAAY(d13PUi1CZpdOlWax zQE`lsxv_ykOi5}*NlbB3a!he*Vo`ENOniK1US>&ryk0@&FAkgB{FKt1RJ$TppjMFK V#r#0x12ZEd;|B&9QN#=s0{|niAzT0e literal 0 HcmV?d00001 diff --git a/src/search/__pycache__/admin.cpython-311.pyc b/src/search/__pycache__/admin.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6891f8bd71b2aaf9b300a6a6e454e20f35593734 GIT binary patch literal 206 zcmZ3^%ge<81eK?hGo66+V-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zw^$QXax?S%G?{MkrDP@MrRVD<=jW9aWhNCd0~M@f_zY6_OFh{tCbT%Us5r*R+}OY% zrX;nZB&N71Ii@%@u_!qs25g94LFF$Fo80`A(wtPgA`YNFMj$Sh1ri^a85tRGFeqHW JhKksLDgbY3GTQ(E literal 0 HcmV?d00001 diff --git a/src/search/__pycache__/models.cpython-311.pyc b/src/search/__pycache__/models.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04548f94fea2978fcc73eaf1efc7b1017b88a1fd GIT binary patch literal 203 zcmZ3^%ge<81eK?hGi`wMV-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zx7c#?Q&Mw^{WO_wai(M?=B4NBr6d(G10`27dQ<7Ry z5>s5198;W{Sd^R*12I6apz;@o4Uk=$lWJGQ0o2F{#Kp2e;sY}yBjXJQnG4uZ5gSki E0HgUaeE6u6_$nVG&8$N$;^bAiMF14 z^ytn1z#r&e;;BLpl9S-6w}sw%awge@RS^1;3^SAWzW2TFy-&-_F3@)P{bt&10Px!! zX4af;&K~Q{2Y^8zU<=!sMeV+A0o=e&)}T(`v49PTjhn>TpTz*&`nK>9`O`rJT9$i-f@4LS#8oiU=lmVU|h-1uqnlCO|^P z;p>#VkpbM|0#YsrOxcJFT0y`(BS;b`35i^&Em10$Q5a$#%K+~qHs-nD`y^ID%xOqi z*bO?N;&~d&&^U)Wy$s!l2Z(Ac8M#{piw(OvZ3TKKfcG(mh{2TRT&M`bk>C{4!y(G^ z>E)b%cj{l2tP7Z{P>1SblQqw4PwPrJC2hzMCHFkD_k4FVLsH(}(}m$V)c>*IDj~uU z2`ZsxbRKD}iv0!I821{FoMrWPJP>zC>LhCm+^6^1)OE_%teLk`M!HMxWF!=WCW;jmnq<0{Npmq3_#FWoxmr534Nn(ONqaHfBQ z^IMzIU`G-m2i@M?PG_LVff`5=59+vqDL%*#&llGz$3;dq#1$Q8NXl1wnKUfRn%FCr zGXZ9~0j%rCV0Hfe39cUh{r++mj~={ReP5hh^FAlXPVa})J8^oGhJD#SS~8DV(b#_g Dh4DA9 literal 0 HcmV?d00001 diff --git a/src/search/__pycache__/views.cpython-311.pyc b/src/search/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ad37f6f079adf72215889af7734592e06abbbde6 GIT binary patch literal 3030 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 literal 0 HcmV?d00001 diff --git a/src/user/__pycache__/views.cpython-311.pyc b/src/user/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..871e05d0a1a2d58976666e835bb29af316ab1703 GIT binary patch literal 4052 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 W4Aq3z=8LEsAAG?!UhT8XZTlbW;$n>e literal 0 HcmV?d00001 diff --git a/src/user/migrations/__pycache__/__init__.cpython-311.pyc b/src/user/migrations/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33a23c82d994395acfdcef29851cef417e1eb7d4 GIT binary patch literal 160 zcmZ3^%ge<81l6aMGePuY5CH>>P{wCAAY(d13PUi1CZpd