├── .github
└── workflows
│ └── translate.yml
├── .gitignore
├── LICENSE
├── README.French.md
├── README.md
├── README.zh-CN.md
├── README.zh-TW.md
├── chatgpt_linebot
├── __init__.py
├── memory.py
├── modules
│ ├── __init__.py
│ ├── business_channel.py
│ ├── chat.py
│ ├── gpt.py
│ ├── horoscope.py
│ ├── image_crawler.py
│ ├── image_generate.py
│ └── youtube_recommend.py
├── prompts
│ ├── __init__.py
│ └── template.py
└── urls.py
├── config.py
├── data
├── cws_channel.txt
└── favorite_videos.json
├── img
├── 2023-10-25-10-00-59.png
├── 2023-10-25-10-01-21.png
├── 2023-10-25-10-03-47.png
├── 2023-10-27-10-09-17.png
├── 2023-11-02-10-00-32.png
├── 2023-11-03-14-44-41.png
├── 2023-12-08-16-03-28.png
├── 2024-05-15-14-03-09.png
└── 2024-05-17-15-08-12.png
├── main.py
├── poetry.lock
├── pyproject.toml
└── static
└── images
├── 2025-01-02-10-18-10.png
├── 2025-02-11-16-16-27.png
├── 2025-02-11-16-26-05.png
└── 2025-02-11-17-27-24.png
/.github/workflows/translate.yml:
--------------------------------------------------------------------------------
1 | # .github/workflows/translate.yml
2 | name: Translate Readme
3 |
4 | on:
5 | push:
6 | branches: ['**']
7 |
8 | jobs:
9 | translate:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v3
14 | with:
15 | fetch-depth: 3
16 |
17 | - name: Auto Translate
18 | uses: Lin-jun-xiang/action-translate-readme@v2 # Based on the tag
19 | with:
20 | token: ${{ secrets.Action_Bot }} # Based on step2 name
21 | zhipuai: ${{ secrets.zhipuai_api_key }} # Optional: Based on step3
22 | openai: ${{ secrets.openai_api_key }}
23 | langs: "en,zh-TW,zh-CN,French" # You can define any langs
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | secret.txt
2 | test.py
3 |
4 | # Byte-compiled / optimized / DLL files
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | share/python-wheels/
27 | *.egg-info/
28 | .installed.cfg
29 | *.egg
30 | MANIFEST
31 |
32 | # PyInstaller
33 | # Usually these files are written by a python script from a template
34 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
35 | *.manifest
36 | *.spec
37 |
38 | # Installer logs
39 | pip-log.txt
40 | pip-delete-this-directory.txt
41 |
42 | # Unit test / coverage reports
43 | htmlcov/
44 | .tox/
45 | .nox/
46 | .coverage
47 | .coverage.*
48 | .cache
49 | nosetests.xml
50 | coverage.xml
51 | *.cover
52 | *.py,cover
53 | .hypothesis/
54 | .pytest_cache/
55 | cover/
56 |
57 | # Translations
58 | *.mo
59 | *.pot
60 |
61 | # Django stuff:
62 | *.log
63 | local_settings.py
64 | db.sqlite3
65 | db.sqlite3-journal
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | .pybuilder/
79 | target/
80 |
81 | # Jupyter Notebook
82 | .ipynb_checkpoints
83 |
84 | # IPython
85 | profile_default/
86 | ipython_config.py
87 |
88 | # pyenv
89 | # For a library or package, you might want to ignore these files since the code is
90 | # intended to run in multiple environments; otherwise, check them in:
91 | # .python-version
92 |
93 | # pipenv
94 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
95 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
96 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
97 | # install all needed dependencies.
98 | #Pipfile.lock
99 |
100 | # poetry
101 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
102 | # This is especially recommended for binary packages to ensure reproducibility, and is more
103 | # commonly ignored for libraries.
104 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
105 | #poetry.lock
106 |
107 | # pdm
108 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
109 | #pdm.lock
110 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
111 | # in version control.
112 | # https://pdm.fming.dev/#use-with-ide
113 | .pdm.toml
114 |
115 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116 | __pypackages__/
117 |
118 | # Celery stuff
119 | celerybeat-schedule
120 | celerybeat.pid
121 |
122 | # SageMath parsed files
123 | *.sage.py
124 |
125 | # Environments
126 | .env
127 | .venv
128 | env/
129 | venv/
130 | ENV/
131 | env.bak/
132 | venv.bak/
133 |
134 | # Spyder project settings
135 | .spyderproject
136 | .spyproject
137 |
138 | # Rope project settings
139 | .ropeproject
140 |
141 | # mkdocs documentation
142 | /site
143 |
144 | # mypy
145 | .mypy_cache/
146 | .dmypy.json
147 | dmypy.json
148 |
149 | # Pyre type checker
150 | .pyre/
151 |
152 | # pytype static type analyzer
153 | .pytype/
154 |
155 | # Cython debug symbols
156 | cython_debug/
157 |
158 | # PyCharm
159 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161 | # and can be added to the global gitignore or merged into this file. For a more nuclear
162 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163 | #.idea/
164 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 JunXiang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.French.md:
--------------------------------------------------------------------------------
1 | ```markdown
2 | # ChatGPT Line Bot
3 |
4 | * [English](README.md)
5 | * [繁體中文版README.md](README.zh-TW.md)
6 | * [简体中文](README.zh-CN.md)
7 | * [Français](README.French.md)
8 |
9 | ## 🤖 Introduction
10 |
11 | Intégrez le ChatGPT Bot à Line. Entrez simplement du texte dans la zone de saisie pour commencer à interagir avec ChatGPT.
12 |
13 |
14 |
15 | ## ✨ Fonctionnalités
16 |
17 | * ChatGPT Bot **complètement gratuit**
18 | * **Informations astrologiques hebdomadaires** (en temps réel)
19 |
20 |
21 |
22 | * **Notifications personnalisées YouTube musique** (à heure fixe)
23 |
24 |
25 |
26 | * **Recherche d'images en ligne** (en temps réel)
27 |
28 |
29 |
30 | > [!NOTE]
31 | > Si vous avez des demandes de fonctionnalités, veuillez soumettre un PR ou un ISSUE à tout moment.
32 |
33 | ## 🔨 Outils
34 |
35 | * `Python FastAPI` : Créez une API de réponse ChatGPT
36 | * `gpt4free` : **Utilisez l'API OpenAI gratuitement**
37 | * `zhipuai` : **Utilisez l'API GPT gratuitement**
38 | * `Line messaging API channel` : Connectez l'API ChatGPT
39 | * `GitHub` : Dépôt de code
40 | * `replit/render/ngrok` : **Déployez gratuitement votre propre FastAPI**
41 | * `CronJob` : Envoyez des demandes programmées gratuitement, réalisez des notifications programmées
42 |
43 | ## 🧠 Options GPT gratuites
44 |
45 | En raison de la dépendance de `g4f` à l'inversement d'OpenAI API, il peut y avoir des instabilités. Par conséquent, l'auteur recommande d'utiliser la plateforme ouverte **Zhipu AI** en tant que solution de remplacement pour l'API GPT gratuite.
46 |
47 | * `g4f` : Utilisez l'inversement pour appeler l'API OpenAI
48 | * `zhipuai` : **Plateforme ouverte Zhipu AI** fournissant une API GPT gratuite. Visitez [site officiel](https://open.bigmodel.cn/dev/howuse/glm-4) pour vous inscrire, sans carte de crédit ni frais. Ajoutez l'API clé dans [centre personnel](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) comme suit. Configurez cette clé API dans les variables d'environnement pour utiliser cette option GPT.
49 | 
50 |
51 | ## 🎈 Instructions d'installation
52 |
53 | ### Obtenir des Tokens
54 |
55 | 1. Obtenez des Tokens Line :
56 | 1. Connectez-vous à [Line Developer](https://developers.line.biz/en/)
57 | 2. Créez un bot :
58 | 1. Créez un `Provider` -> Cliquez sur `Create`
59 | 2. Créez un `Channel` -> Sélectionnez `Create a Messaging API channel`
60 | 3. Remplissez les informations de base nécessaires
61 | 4. Terminez, puis accédez à `Basic Settings` -> Cliquez sur `Issue` sous `Channel Secret` pour générer `LINE_CHANNEL_SECRET` (utilisé plus tard).
62 | 5. Cliquez sur `Issue` sous `Messaging API` pour générer `Channel access token` (utilisé plus tard).
63 |
64 | ### Configuration du projet et exécution
65 |
66 | 1. Fork le projet GitHub :
67 | * Inscrivez-vous / connectez-vous à [GitHub](https://github.com/)
68 | * Allez à [ChatGPT-Line-Bot](https://github.com/Lin-jun-xiang/ChatGPT-Line-Bot)
69 | * Cliquez sur `Star` pour soutenir les développeurs
70 | * Cliquez sur `Fork` pour copier tout le code dans votre dépôt
71 |
72 | 2. Démarrer le serveur Python FastAPI :
73 | * `$env:LINE_CHANNEL_SECRET="..."; $env:LINE_CHANNEL_ACCESS_TOKEN="..."; $env:SERPAPI_API_KEY="..."; $env:GPT_METHOD="..."; $env:GPT_API_KEY="..."; python main.py`
74 | * `GPT_METHOD` : Choisissez `g4f` ou `zhipuai`
75 | * `GPT_API_KEY` : Si vous utilisez la méthode `zhipuai`, fournissez votre clé API
76 |
77 | 3. `ngrok` : Déployez l'API en utilisant un ordinateur local (ou Google Colab) comme serveur
78 | * [Créez un environnement ngrok](https://dashboard.ngrok.com/get-started/setup/)
79 | * Téléchargez la version `ngrok` adaptée à votre système d'exploitation
80 | * Ajoutez le chemin d'accès à `ngrok.exe` aux variables d'environnement du système
81 | * Exécutez : `ngrok config add-authtoken ` . Obtenez le token à partir de votre [tableau de bord personnel ngrok](https://dashboard.ngrok.com/get-started/your-authtoken).
82 | * Exécutez : `ngrok http --url=.ngrok-free.app 8090` (si vous échouez, essayez `ngrok http --hostname=.ngrok-free.app 8090`) et redirigez l'URL en tant que webhook URL.
83 |
84 |
85 |
86 |
87 |
88 | 4. Enfin, remplacez `http --url=.ngrok-free.app/callback` par le webhook URL dans la section `Messaging API` du tableau de bord du développeur Line.
89 |
90 |
91 |
92 | ### Connecter les services et le Line Bot
93 |
94 | Retournez à la [page d'accueil du Line Developer](https://manager.line.biz/account), cliquez sur `Add Friend Guide`, scannez le QR code pour ajouter le Line Bot en tant qu'amis.
95 |
96 | Page d'accueil -> Sélectionnez votre bot -> Outils d'ajout d'amis -> Créez un code QR d'action d'amis (https://manager.line.biz/account//gainfriends)
97 |
98 | Félicitations ! Vous avez créé votre premier Line Bot. Essayez de lui parler — il vous répondra !
99 |
100 | ## ⛄ Conversation de groupe vs. Conversation personnelle
101 |
102 | * Dans les conversations un à un, tout message déclenche une réponse.
103 | * Dans les conversations de groupe, utilisez le préfixe `@chat` pour interagir avec le robot, par exemple, `@chat hi~`.
104 |
105 | ## 🎃 Fonctionnalités spéciales
106 |
107 | ### Signe du zodiaque
108 |
109 | Lorsque votre message contient une demande d'information astrologique, le web crawler capture chaque semaine le signe du zodiaque :
110 |
111 | * Chat personnel : `Donnez-moi le signe du Scorpion`, `Je veux savoir le signe du Scorpion`, ...
112 | * Chat de groupe : `@chat Donnez-moi le signe du Scorpion`, `@chat Je veux savoir le signe du Scorpion`, ...
113 |
114 | ### Recherche d'images en ligne
115 |
116 | Lorsque votre message contient une demande d'image, le web crawler capture l'image :
117 |
118 | * Chat personnel : `Trouver des images de Lin Xiang fumant`, `Donnez-moi des images de Lin Xiang fumant`, ...
119 | * Chat de groupe : `@chat Trouver des images de Lin Xiang fumant`, `@chat Donnez-moi des images de Lin Xiang fumant`, ...
120 |
121 | ## 📢 Messages de diffusion - Recommandations YouTube quotidiennes
122 |
123 | * Comme pour **Recommandations YouTube quotidiennes**, il suffit de remplacer `/recommend` par `/cwsChannel`.
124 | * Vous pouvez configurer CronJob pour qu'il s'exécute toutes les `3 heures`.
125 |
126 |
127 |
128 | ## ⚔ Avancé - Bot personnalisé
129 |
130 | Vous pouvez utiliser des提示语 pour personnaliser les réponses du Line Bot. Définissez `template` dans `./ChatGPT_linebot/prompts/template.py`, par exemple :
131 |
132 |
133 |
134 | **Message utilisateur** : Je devrais manger quoi pour le petit-déjeuner ?
135 |
136 | **Réponse du Bot** : Cher, es-tu réveillé ? Je suis resté au lit pour toi, en pensant à ta belle silhouette. Que devrions-nous manger pour le petit-déjeuner ? Ne voudrions-nous pas quelque chose de piquant, comme une omelette, qui correspond à ton charme piquant ? 😏🍳
137 |
138 | ## Références
139 |
140 | 1. [Line_Bot_Tutorial](https://github.com/FawenYo/LINE_Bot_Tutorial)
141 |
142 | 2. [ChatGPT-Line-Bot](https://github.com/TheExplainthis/ChatGPT-Line-Bot)
143 |
144 | Retour en haut
145 | --------------------------------
146 | ```
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ChatGPT Line Bot
2 |
3 | * [English](README.md)
4 | * [繁體中文版README.md](README.zh-TW.md)
5 | * [简体中文](README.zh-CN.md)
6 | * [Française](README.French.md)
7 |
8 | ## 🤖 Introduction
9 |
10 | Integrate ChatGPT Bot into Line. Simply enter text in the input box to start interacting with ChatGPT.
11 |
12 |
13 |
14 | ## ✨ Features
15 |
16 | * **Free** ChatGPT Bot
17 | * **Weekly** horoscope information (real-time)
18 |
19 |
20 |
21 | * **YouTube Music** channel scheduled broadcasts
22 |
23 |
24 |
25 | * **Online Image Search** (real-time)
26 |
27 |
28 |
29 | > [!NOTE]
30 | > If you have any feature requests, please submit a PR or ISSUE at any time.
31 |
32 | ## 🔨 Tools
33 |
34 | * `Python FastAPI`:Create ChatGPT response API
35 | * `gpt4free`:**Free use of OpenAI API**
36 | * `zhipuai`:**Free use of GPT API**
37 | * `Line messaging API channel`:Connect to ChatGPT API
38 | * `GitHub`:Code repository
39 | * `replit/render/ngrok`:**Free deployment of your own FastAPI**
40 | * `CronJob`:Free scheduled requests, for scheduled message broadcasting
41 |
42 | ## 🧠 Free GPT Options
43 |
44 | Since `g4f` depends on reverse engineering to call OpenAI's API, it may be unstable. Therefore, the author recommends using the **Zhipu AI** open platform as an alternative to free GPT API.
45 |
46 | * `g4f`:Use reverse engineering to call OpenAI API
47 | * `zhipuai`:**Zhipu AI** open platform provides free GPT API. Visit [official website](https://open.bigmodel.cn/dev/howuse/glm-4) to register an account, no credit card or fees required. Add API key as shown below in [Personal Center](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys). Set this API key in the environment variable to use this GPT option.
48 | 
49 |
50 | ## 🎈 Installation Steps
51 |
52 | ### Obtain Tokens
53 |
54 | 1. Obtain Line Tokens:
55 | 1. Log in to [Line Developer](https://developers.line.biz/en/)
56 | 2. Create a bot:
57 | 1. Create a `Provider` -> Click `Create`
58 | 2. Create a `Channel` -> Select `Create a Messaging API channel`
59 | 3. Fill in the required basic information
60 | 4. After completing, go to `Basic Settings` -> Click `Issue` under `Channel Secret` to generate `LINE_CHANNEL_SECRET` (which will be used later).
61 | 5. Under `Messaging API`, click `Issue` to generate `Channel access token` (which will be used later).
62 |
63 | ### Project Setup and Execution
64 |
65 | 1. Fork GitHub Project:
66 | * Register/Login [GitHub](https://github.com/)
67 | * Go to [ChatGPT-Line-Bot](https://github.com/Lin-jun-xiang/ChatGPT-Line-Bot)
68 | * Click `Star` to support developers
69 | * Click `Fork` to copy all code to your repository
70 |
71 | 2. Start Python FastAPI Server:
72 | * `$env:LINE_CHANNEL_SECRET="..."; $env:LINE_CHANNEL_ACCESS_TOKEN="..."; $env:SERPAPI_API_KEY="..."; $env:GPT_METHOD="..."; $env:GPT_API_KEY="..."; python main.py`
73 | * `GPT_METHOD`:Choose `g4f` or `zhipuai`
74 | * `GPT_API_KEY`:If using `zhipuai` method, provide your API key
75 |
76 | 3. `ngrok`:Use your local computer (or Google Colab) as a server to deploy API
77 | * [Set up ngrok environment](https://dashboard.ngrok.com/get-started/setup/)
78 | * Download the `ngrok` version suitable for your operating system
79 | * Add the `ngrok.exe` path to the system environment variables
80 | * Execute: `ngrok config add-authtoken `. Get the token from your personal [ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken).
81 | * Execute: `ngrok http --url=.ngrok-free.app 8090` (if failed, please try `ngrok http --hostname=.ngrok-free.app 8090`). Forward the URL as the webhook URL.
82 |
83 |
84 |
85 |
86 |
87 | 4. Finally, replace `http --url=.ngrok-free.app/callback` with the webhook URL in the `Messaging API` area of the Line Developer console.
88 |
89 |
90 |
91 | ### Connect Services and Line Bot
92 |
93 | Go back to [Line Developer Home](https://manager.line.biz/account), click `Add Friend Guide`, scan the QR code to add Line Bot as a friend.
94 |
95 | Home -> Select your bot -> Add Friend Tool -> Create friend action barcode (https://manager.line.biz/account//gainfriends)
96 |
97 | Congratulations! You have created your first Line Bot. Try talking to it—it will respond to you!
98 |
99 | ## ⛄ Group Chat vs. Private Chat
100 |
101 | * In one-on-one chats, any message will trigger a response.
102 | * In group chats, use the `@chat` prefix to interact with the bot, such as, `@chat hi~`.
103 |
104 | ## 🎃 Special Features
105 |
106 | ### Horoscope
107 |
108 | When your message contains a horoscope information request, the web crawler will scrape the weekly horoscope:
109 |
110 | * Private chat: `給我天蠍座星座`, `我想知道天蠍座星座`, ...
111 | * Group chat: `@chat 給我天蠍座星座`, `@chat 我想知道天蠍座星座`, ...
112 |
113 | ### Online Image Search
114 |
115 | When your message contains a picture request, the web crawler will scrape the image:
116 |
117 | * Private chat: `在線找到林翔抽煙的圖片`, `給我在線林翔抽煙的圖片`, ...
118 | * Group chat: `@chat 在線找到林翔抽煙的圖片`, `@chat 給我在線林翔抽煙的圖片`, ...
119 |
120 | ## 📢 Broadcast Message - Daily YouTube Recommendation
121 |
122 | * Using the `broadcast` API, the Line Bot can send messages to all users at once.
123 | * This example demonstrates how the Line Bot can send 3 randomly selected YouTube songs every morning:
124 | * Create file `./data/favorite_videos.json`. Refer to the author's dataset.
125 |
126 | (The dataset is generated by using `YouTube Data v3 API` to crawl favorite videos. This guide does not involve the use of YouTube API.)
127 |
128 | * Use `./ChatGPT_linebot/modules/youtube_recommend.py` to randomly select 3 songs, formatted by GPT.
129 | * Add `/recommend` route in `./ChatGPT_linebot/urls.py`:
130 |
131 | ```python
132 | videos = recommend_videos() # Get 3 songs
133 |
134 | if videos:
135 | line_bot_api.broadcast(TextSendMessage(text=videos)) # Broadcast to users
136 |
137 | # Push message to known groups
138 | known_group_ids = [
139 | 'C6d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
140 | 'Ccc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
141 | 'Cbb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
142 | ]
143 | for group_id in known_group_ids:
144 | line_bot_api.push_message(group_id, TextSendMessage(text=videos))
145 | ```
146 |
147 | To get `group_id`, print in the console:
148 |
149 | ```python
150 | elif event.source.type == 'group' and user_message.startswith('@chat'):
151 | group_id = event.source.group_id
152 | print(group_id) # Output group_id
153 | ```
154 |
155 | * Now, visit `/recommend` route to broadcast messages to all users and specified groups.
156 | * Use [cron-job.org](https://cron-job.org/en/) to schedule a daily push at 8:00 AM:
157 | 1. Register/Login [cron-job.org](https://cron-job.org/en/)
158 | 2. Click the `CREATE CRONJOB` button at the top right
159 | 3. Title: `ChatGPT-Line-Bot`, URL: for example, `https://ChatGPT-Line-Bot.jimmylin.repl.co/`
160 | 4. Set to run every `5 minutes`
161 | 5. Click `CREATE`
162 |
163 | ## 📢 Broadcast Message - Caixin Finance Information
164 |
165 | * Just like **Daily YouTube Recommendation**, just replace `/recommend` with `/cwsChannel`.
166 | * It can be set to run every `3 hours` in CronJob
167 |
168 |
169 |
170 | ## ⚔ Advanced - Personalized Bot
171 |
172 | You can use prompts to personalize the responses of the Line Bot. Define `template` in `./ChatGPT_linebot/prompts/template.py`, for example:
173 |
174 |
175 |
176 | **User Input**:我應該吃什麼早餐?
177 |
178 | **Bot Response**:親愛的,你醒來了嗎?我一直在床上等你,想著你美麗的身材。我們應該吃什麼早餐?要不要來點辣的,比如熱蛋捲,配得上你火辣的魅力?😏🍳
179 |
180 | ## References
181 |
182 | 1. [Line_Bot_Tutorial](https://github.com/FawenYo/LINE_Bot_Tutorial)
183 |
184 | 2. [ChatGPT-Line-Bot](https://github.com/TheExplainthis/ChatGPT-Line-Bot)
185 |
186 | Back to Top
187 | --------------------------------
--------------------------------------------------------------------------------
/README.zh-CN.md:
--------------------------------------------------------------------------------
1 | # ChatGPT Line Bot
2 |
3 | * [English](README.md)
4 | * [繁體中文版README.md](README.zh-TW.md)
5 | * [简体中文](README.zh-CN.md)
6 | * [Française](README.French.md)
7 |
8 | ## 🤖 简介
9 |
10 | 將 ChatGPT Bot 整合到 Line。只需在輸入框中輸入文字,即可開始與 ChatGPT 互動。
11 |
12 |
13 |
14 | ## ✨ 功能
15 |
16 | * **完全免费** 的 ChatGPT Bot
17 | * 每周 **星座资讯**(即时)
18 |
19 |
20 |
21 | * **YouTube 音乐** 频道的定时推送
22 |
23 |
24 |
25 | * **在线图片搜索**(即时)
26 |
27 |
28 |
29 | > [!NOTE]
30 | > 如果你有任何功能请求,请随时提交 PR 或 ISSUE。
31 |
32 | ## 🔨 工具
33 |
34 | * `Python FastAPI`:创建 ChatGPT 回应 API
35 | * `gpt4free`:**免费使用 OpenAI API**
36 | * `zhipuai`:**免费使用 GPT API**
37 | * `Line messaging API channel`:连接 ChatGPT API
38 | * `GitHub`:代码存储库
39 | * `replit/render/ngrok`:**免费部署你自己的 FastAPI**
40 | * `CronJob`:免费发送定时请求,实现定时推送消息
41 |
42 | ## 🧠 免费GPT选项
43 |
44 | 由于 `g4f` 依赖逆向工程来调用 OpenAI 的 API,可能会不稳定。因此,作者建议使用 **智谱 AI** 开放平台作为免费 GPT API 的替代方案。
45 |
46 | * `g4f`:使用逆向工程调用 OpenAI API
47 | * `zhipuai`:**智谱 AI** 开放平台提供免费 GPT API。访问 [官方网站](https://open.bigmodel.cn/dev/howuse/glm-4) 注册账户,无需信用卡或费用。在 [个人中心](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) 添加 API 密钥,如下所示。将此 API 密钥设置在环境变量中使用此 GPT 选项。
48 | 
49 |
50 | ## 🎈 安装步骤
51 |
52 | ### 获取 Tokens
53 |
54 | 1. 获取 Line Tokens:
55 | 1. 登录 [Line Developer](https://developers.line.biz/en/)
56 | 2. 创建一个 bot:
57 | 1. 创建一个 `Provider` -> 点击 `Create`
58 | 2. 创建一个 `Channel` -> 选择 `Create a Messaging API channel`
59 | 3. 填写所需的基本信息
60 | 4. 完成后,进入 `Basic Settings` -> 在 `Channel Secret` 下,点击 `Issue` 生成 `LINE_CHANNEL_SECRET`(后面会用到)。
61 | 5. 在 `Messaging API` 下,点击 `Issue` 生成 `Channel access token`(后面会用到)。
62 |
63 | ### 项目设置与执行
64 |
65 | 1. Fork GitHub 项目:
66 | * 注册/登录 [GitHub](https://github.com/)
67 | * 前往 [ChatGPT-Line-Bot](https://github.com/Lin-jun-xiang/ChatGPT-Line-Bot)
68 | * 点击 `Star` 支持开发者
69 | * 点击 `Fork` 将所有代码复制到你的存储库
70 |
71 | 2. 启动 Python FastAPI Server:
72 | * `$env:LINE_CHANNEL_SECRET="..."; $env:LINE_CHANNEL_ACCESS_TOKEN="..."; $env:SERPAPI_API_KEY="..."; $env:GPT_METHOD="..."; $env:GPT_API_KEY="..."; python main.py`
73 | * `GPT_METHOD`:选择 `g4f` 或 `zhipuai`
74 | * `GPT_API_KEY`:如果使用 `zhipuai` 方法,提供你的 API 密钥
75 |
76 | 3. `ngrok`:使用本地电脑(或 Google Colab)作为服务器来部署 API
77 | * [建立 ngrok 环境](https://dashboard.ngrok.com/get-started/setup/)
78 | * 下载适合你操作系统的 `ngrok` 版本
79 | * 将 `ngrok.exe` 路径添加到系统的环境变量中
80 | * 执行:`ngrok config add-authtoken `。从你的个人 [ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken) 获得token。
81 | * 执行:`ngrok http --url=.ngrok-free.app 8090` (若失败请尝试 `ngrok http --hostname=.ngrok-free.app 8090`),并将 URL 转发为 webhook URL。
82 |
83 |
84 |
85 |
86 |
87 | 4. 最后,将 `http --url=.ngrok-free.app/callback` 替换 Line Developer 控制台 `Messaging API` 区域中的 webhook URL。
88 |
89 |
90 |
91 | ### 连接服务与 Line Bot
92 |
93 | 回到 [Line Developer 首页](https://manager.line.biz/account),点击 `Add Friend Guide`,扫描 QR 码将 Line Bot 添加为好友。
94 |
95 | 首页 -> 选择你的 bot -> 添加好友工具 -> 创建好友动作条码(https://manager.line.biz/account//gainfriends)
96 |
97 | 恭喜!你已经创建了你的第一个 Line Bot。试着与它交谈——它会回复你!
98 |
99 | ## ⛄ 群组对话 vs. 个人对话
100 |
101 | * 在一对一对话中,任何消息都会触发回复。
102 | * 在群组对话中,使用 `@chat` 前缀与机器人互动,例如,`@chat hi~`。
103 |
104 | ## 🎃 特殊功能
105 |
106 | ### 星座
107 |
108 | 当你的消息包含星座资讯请求时,网络爬虫将抓取每周星座:
109 |
110 | * 个人聊天:`给我天蝎座星座`, `我想知道天蝎座星座`, ...
111 | * 群组聊天:`@chat 给我天蝎座星座`, `@chat 我想知道天蝎座星座`, ...
112 |
113 | ### 在线图片搜索
114 |
115 | 当你的消息包含图片请求时,网络爬虫将抓取图片:
116 |
117 | * 个人聊天:`在线找到林翔抽烟的图片`, `给我在线林翔抽烟的图片`, ...
118 | * 群组聊天:`@chat 在线找到林翔抽烟的图片`, `@chat 给我在线林翔抽烟的图片`, ...
119 |
120 | ## 📢 广播消息 - 每日 YouTube 推荐
121 |
122 | * 使用 `broadcast` API,Line Bot 可以一次性推送消息给所有用户。
123 | * 此示例演示了 Line Bot 如何每天早上推送 3 首随机选择的歌曲:
124 | * 创建文件 `./data/favorite_videos.json`。参考作者的数据集。
125 |
126 | (数据集是使用 `YouTube Data v3 API` 抓取喜爱视频生成的。本指南不涉及 YouTube API 的使用。)
127 |
128 | * 使用 `./ChatGPT_linebot/modules/youtube_recommend.py` 随机选择 3 首歌曲,由 GPT 格式化。
129 | * 在 `./ChatGPT_linebot/urls.py` 中添加 `/recommend` 路由:
130 |
131 | ```python
132 | videos = recommend_videos() # 获取 3 首歌曲
133 |
134 | if videos:
135 | line_bot_api.broadcast(TextSendMessage(text=videos)) # 广播给用户
136 |
137 | # 推送消息给已知群组
138 | known_group_ids = [
139 | 'C6d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
140 | 'Ccc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
141 | 'Cbb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
142 | ]
143 | for group_id in known_group_ids:
144 | line_bot_api.push_message(group_id, TextSendMessage(text=videos))
145 | ```
146 |
147 | 要获取群组 `group_id`,在控制台中打印:
148 |
149 | ```python
150 | elif event.source.type == 'group' and user_message.startswith('@chat'):
151 | group_id = event.source.group_id
152 | print(group_id) # 输出 group_id
153 | ```
154 |
155 | * 现在,访问 `/recommend` 路由将广播消息给所有用户和指定群组。
156 | * 使用 [cron-job.org](https://cron-job.org/en/) 每天早上 8:00 定时推送:
157 | 1. 注册/登录 [cron-job.org](https://cron-job.org/en/)
158 | 2. 点击右上角的 `CREATE CRONJOB`
159 | 3. 标题:`ChatGPT-Line-Bot`,URL:例如,`https://ChatGPT-Line-Bot.jimmylin.repl.co/`
160 | 4. 设置为每 `5 分钟` 运行
161 | 5. 点击 `CREATE`
162 |
163 | ## 📢 广播消息 - 天下杂志财经资讯
164 |
165 | * 与 **每日 YouTube 推荐** 一样,只需要将 `/recommend` 替换成 `/cwsChannel` 即可。
166 | * 可于 CronJob 设置每 `3 小时` 运行
167 |
168 |
169 |
170 | ## ⚔ 高级 - 个性化 Bot
171 |
172 | 你可以使用提示语来个性化 Line Bot 的回复。在 `./ChatGPT_linebot/prompts/template.py` 中定义 `template`,例如:
173 |
174 |
175 |
176 | **用户输入**:我该吃些什么早餐?
177 |
178 | **Bot 回复**:亲爱的,你醒来了吗?我一直在床上等你,想着你美丽的身材。我们该吃些什么早餐?要不要来点辣的,比如热蛋卷,配得上你火辣的魅力?😏🍳
179 |
180 | ## 参考资料
181 |
182 | 1. [Line_Bot_Tutorial](https://github.com/FawenYo/LINE_Bot_Tutorial)
183 |
184 | 2. [ChatGPT-Line-Bot](https://github.com/TheExplainthis/ChatGPT-Line-Bot)
185 |
186 | 返回顶部
187 | --------------------------------
--------------------------------------------------------------------------------
/README.zh-TW.md:
--------------------------------------------------------------------------------
1 | # ChatGPT Line Bot
2 |
3 | * [English](README.md)
4 | * [繁體中文版README.md](README.zh-TW.md)
5 | * [简体中文](README.zh-CN.md)
6 | * [Française](README.French.md)
7 |
8 | ## 🤖 簡介
9 |
10 | 將 ChatGPT Bot 整合到 Line。只需在輸入框中輸入文字,即可開始與 ChatGPT 互動。
11 |
12 |
13 |
14 | ## ✨ 功能
15 |
16 | * **完全免費** 的 ChatGPT Bot
17 | * 每週 **星座資訊**(即時)
18 |
19 |
20 |
21 | * **YouTube 音樂** 頻道的定時推播
22 |
23 |
24 |
25 | * **在線圖片搜尋**(即時)
26 |
27 |
28 |
29 | > [!NOTE]
30 | > 如果你有任何功能請求,請隨時提交 PR 或 ISSUE。
31 |
32 | ## 🔨 工具
33 |
34 | * `Python FastAPI`:創建 ChatGPT 回應 API
35 | * `gpt4free`:**免費使用 OpenAI API**
36 | * `zhipuai`:**免費使用 GPT API**
37 | * `Line messaging API channel`:連接 ChatGPT API
38 | * `GitHub`:代碼存儲庫
39 | * `replit/render/ngrok`:**免費部署你自己的 FastAPI**
40 | * `CronJob`:免費發送定時請求,實現定時推播消息
41 |
42 | ## 🧠 免費 GPT 選項
43 |
44 | 由於 `g4f` 依賴於逆向工程來調用 OpenAI 的 API,可能會不穩定。因此,作者建議使用 **Zhipu AI** 開放平台作為免費 GPT API 的替代方案。
45 |
46 | * `g4f`:使用逆向工程調用 OpenAI API
47 | * `zhipuai`:**Zhipu AI** 開放平台提供免費 GPT API。訪問 [官方網站](https://open.bigmodel.cn/dev/howuse/glm-4) 註冊帳戶,無需信用卡或費用。在 [個人中心](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) 添加 API 金鑰,如下所示。將此 API 金鑰設置在環境變量中使用此 GPT 選項。
48 | 
49 |
50 | ## 🎈 安裝步驟
51 |
52 | ### 獲取 Tokens
53 |
54 | 1. 獲取 Line Tokens:
55 | 1. 登錄 [Line Developer](https://developers.line.biz/en/)
56 | 2. 創建一個 bot:
57 | 1. 創建一個 `Provider` -> 點擊 `Create`
58 | 2. 創建一個 `Channel` -> 選擇 `Create a Messaging API channel`
59 | 3. 填寫所需的基本信息
60 | 4. 完成後,進入 `Basic Settings` -> 在 `Channel Secret` 下,點擊 `Issue` 生成 `LINE_CHANNEL_SECRET`(後面會用到)。
61 | 5. 在 `Messaging API` 下,點擊 `Issue` 生成 `Channel access token`(後面會用到)。
62 |
63 | ### 專案設置與執行
64 |
65 | 1. Fork GitHub 專案:
66 | * 註冊/登錄 [GitHub](https://github.com/)
67 | * 前往 [ChatGPT-Line-Bot](https://github.com/Lin-jun-xiang/ChatGPT-Line-Bot)
68 | * 點擊 `Star` 支持開發者
69 | * 點擊 `Fork` 將所有代碼複製到你的存儲庫
70 |
71 | 2. 啟動 Python FastAPI Server:
72 | * `$env:LINE_CHANNEL_SECRET="..."; $env:LINE_CHANNEL_ACCESS_TOKEN="..."; $env:SERPAPI_API_KEY="..."; $env:GPT_METHOD="..."; $env:GPT_API_KEY="..."; python main.py`
73 | * `GPT_METHOD`:選擇 `g4f` 或 `zhipuai`
74 | * `GPT_API_KEY`:如果使用 `zhipuai` 方法,提供你的 API 金鑰
75 |
76 | 3. `ngrok`:使用本地電腦(或 Google Colab)作為服務器來部署 API
77 | * [建立 ngrok 環境](https://dashboard.ngrok.com/get-started/setup/)
78 | * 下載適合你操作系統的 `ngrok` 版本
79 | * 將 `ngrok.exe` 路徑添加到系統的環境變量中
80 | * 執行:`ngrok config add-authtoken `。從你的個人 [ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken) 獲取 token。
81 | * 執行:`ngrok http --url=.ngrok-free.app 8090` (若失敗請改嘗試 `ngrok http --hostname=.ngrok-free.app 8090`),並轉發 URL 將作為 webhook URL。
82 |
83 |
84 |
85 |
86 |
87 | 4. 最後,將 `http --url=.ngrok-free.app/callback` 替換 Line Developer 控制台 `Messaging API` 區域中的 webhook URL。
88 |
89 |
90 |
91 | ### 連接服務與 Line Bot
92 |
93 | 回到 [Line Developer 首頁](https://manager.line.biz/account),點擊 `Add Friend Guide`,掃描 QR 碼將 Line Bot 添加為好友。
94 |
95 | 首頁 -> 選擇你的 bot -> 添加好友工具 -> 創建好友動作條碼(https://manager.line.biz/account//gainfriends)
96 |
97 | 恭喜!你已創建了你的第一個 Line Bot。試著與它交談——它會回覆你!
98 |
99 | ## ⛄ 群組對話 vs. 個人對話
100 |
101 | * 在一對一對話中,任何消息都會觸發回應。
102 | * 在群組對話中,使用 `@chat` 前綴與機器人互動,例如,`@chat hi~`。
103 |
104 | ## 🎃 特殊功能
105 |
106 | ### 星座
107 |
108 | 當你的消息包含星座資訊請求時,網絡爬蟲將抓取每週星座:
109 |
110 | * 個人聊天:`給我天蠍座星座`, `我想知道天蠍座星座`, ...
111 | * 群組聊天:`@chat 給我天蠍座星座`, `@chat 我想知道天蠍座星座`, ...
112 |
113 | ### 在線圖片搜尋
114 |
115 | 當你的消息包含圖片請求時,網絡爬蟲將抓取圖片:
116 |
117 | * 個人聊天:`在線找到林翔抽煙的圖片`, `給我在線林翔抽煙的圖片`, ...
118 | * 群組聊天:`@chat 在線找到林翔抽煙的圖片`, `@chat 給我在線林翔抽煙的圖片`, ...
119 |
120 | ## 📢 廣播消息 - 每日 YouTube 推薦
121 |
122 | * 使用 `broadcast` API,Line Bot 可以一次性推送消息給所有用戶。
123 | * 此示例演示了 Line Bot 如何每天早上推送 3 首隨機選擇的 YouTube 歌曲:
124 | * 創建文件 `./data/favorite_videos.json`。參考作者的數據集。
125 |
126 | (數據集是使用 `YouTube Data v3 API` 抓取喜愛視頻生成的。本指南不涉及 YouTube API 的使用。)
127 |
128 | * 使用 `./ChatGPT_linebot/modules/youtube_recommend.py` 隨機選擇 3 首歌曲,由 GPT 格式化。
129 | * 在 `./ChatGPT_linebot/urls.py` 中添加 `/recommend` 路由:
130 |
131 | ```python
132 | videos = recommend_videos() # 獲取 3 首歌曲
133 |
134 | if videos:
135 | line_bot_api.broadcast(TextSendMessage(text=videos)) # 廣播給用戶
136 |
137 | # 推送消息給已知群組
138 | known_group_ids = [
139 | 'C6d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
140 | 'Ccc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
141 | 'Cbb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
142 | ]
143 | for group_id in known_group_ids:
144 | line_bot_api.push_message(group_id, TextSendMessage(text=videos))
145 | ```
146 |
147 | 要獲取群組 `group_id`,在控制台中打印:
148 |
149 | ```python
150 | elif event.source.type == 'group' and user_message.startswith('@chat'):
151 | group_id = event.source.group_id
152 | print(group_id) # 輸出 group_id
153 | ```
154 |
155 | * 現在,訪問 `/recommend` 路由將廣播消息給所有用戶和指定群組。
156 | * 使用 [cron-job.org](https://cron-job.org/en/) 每天早上 8:00 定時推送:
157 | 1. 註冊/登錄 [cron-job.org](https://cron-job.org/en/)
158 | 2. 點擊右上角的 `CREATE CRONJOB`
159 | 3. 標題:`ChatGPT-Line-Bot`,URL:例如,`https://ChatGPT-Line-Bot.jimmylin.repl.co/`
160 | 4. 設置為每 `5 分鐘` 运行
161 | 5. 點擊 `CREATE`
162 |
163 | ## 📢 廣播消息 - 天下雜誌財經資訊
164 |
165 | * 與 **每日 YouTube 推薦** 一樣,只需要將 `/recommend` 替換成 `/cwsChannel` 即可。
166 | * 可於 CronJob 設置每 `3 小時` 運行
167 |
168 |
169 |
170 | ## ⚔ 進階 - 個性化 Bot
171 |
172 | 你可以使用提示語來個性化 Line Bot 的回應。在 `./ChatGPT_linebot/prompts/template.py` 中定義 `template`,例如:
173 |
174 |
175 |
176 | **用戶輸入**:我應該吃什麼早餐?
177 |
178 | **Bot 回應**:親愛的,你醒來了嗎?我一直在床上等你,想著你美麗的身材。我們應該吃什麼早餐?要不要來點辣的,比如熱蛋捲,配得上你火辣的魅力?😏🍳
179 |
180 | ## 參考資料
181 |
182 | 1. [Line_Bot_Tutorial](https://github.com/FawenYo/LINE_Bot_Tutorial)
183 |
184 | 2. [ChatGPT-Line-Bot](https://github.com/TheExplainthis/ChatGPT-Line-Bot)
185 |
186 | 返回頂部
187 |
--------------------------------------------------------------------------------
/chatgpt_linebot/__init__.py:
--------------------------------------------------------------------------------
1 | from chatgpt_linebot.urls import line_app
2 |
--------------------------------------------------------------------------------
/chatgpt_linebot/memory.py:
--------------------------------------------------------------------------------
1 | from typing import Dict
2 | from collections import defaultdict
3 |
4 |
5 | class MemoryInterface:
6 | def append(self, user_id: str, message: Dict) -> None:
7 | pass
8 |
9 | def get(self, user_id: str) -> str:
10 | return ""
11 |
12 | def remove(self, user_id: str) -> None:
13 | pass
14 |
15 |
16 | class Memory(MemoryInterface):
17 | """Chat Memory
18 |
19 | Args:
20 | storage (List[Dict[str, str]]): Chat history, ex:
21 | [
22 | {'role': 'system', 'content': 'You are a helpful assistant.'},
23 | {'role': 'user', content': 'Hi'},
24 | {'role': 'system', 'content': 'Hi. How can i assist u?'},
25 | ...
26 | ]
27 |
28 | id (int): user_id, grouop_id, room_id
29 | """
30 | def __init__(self, memory_message_count: int) -> None:
31 | self.storage = defaultdict(list)
32 | self.memory_message_count = memory_message_count
33 |
34 | def _initialize(self, id: str) -> None:
35 | self.storage[id] = [{
36 | 'role': 'system', 'content': 'You are a helpful assistant.'
37 | }]
38 |
39 | def _drop_message(self, id: str) -> str:
40 | if len(self.storage.get(id)) >= (self.memory_message_count + 1) * 2 + 1:
41 | return [self.storage[id][0]] + self.storage[id][-(self.memory_message_count * 2):]
42 | return self.storage.get(id)
43 |
44 | def append(self, id: str, role: str, content: str) -> None:
45 | if self.storage[id] == []:
46 | self._initialize(id)
47 | self.storage[id].append({
48 | 'role': role,
49 | 'content': content
50 | })
51 | self._drop_message(id)
52 |
53 | def get(self, id: str) -> str:
54 | return self.storage[id]
55 |
56 | def remove(self, id: str) -> None:
57 | self.storage[id] = []
58 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/__init__.py:
--------------------------------------------------------------------------------
1 | from chatgpt_linebot.modules.business_channel import CWArticleScraper
2 | from chatgpt_linebot.modules.chat import chat_completion
3 | from chatgpt_linebot.modules.gpt import chat_completion as chat
4 | from chatgpt_linebot.modules.horoscope import Horoscope
5 | from chatgpt_linebot.modules.image_crawler import ImageCrawler
6 | from chatgpt_linebot.modules.image_generate import RapidAPIs, g4f_generate_image
7 | from chatgpt_linebot.modules.youtube_recommend import recommend_videos
8 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/business_channel.py:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | from typing import Dict, Optional
4 |
5 | import cloudscraper
6 | from bs4 import BeautifulSoup
7 |
8 | from chatgpt_linebot.modules.gpt import chat_completion
9 | from chatgpt_linebot.prompts import cws_channel_template
10 |
11 | sys.path.append(".")
12 |
13 | import config
14 |
15 |
16 | class CWArticleScraper:
17 | """
18 | A scraper for retrieving the latest article from CW, bypassing Cloudflare protections.
19 | """
20 | BASE_URL = 'https://www.cw.com.tw'
21 | DATA_FILE = './data/cws_channel.txt'
22 |
23 | def __init__(self) -> None:
24 | """Initialize the scraper with retry logic."""
25 | self.scraper = cloudscraper.create_scraper()
26 |
27 | def _get_latest_article_url(self) -> Optional[str]:
28 | """
29 | Retrieve the latest article URL.
30 |
31 | Returns:
32 | The full URL of the latest article or None if not found.
33 | """
34 | list_url = f'{self.BASE_URL}/masterChannel.action?idMasterChannel=8'
35 | try:
36 | response = self.scraper.get(list_url)
37 | soup = BeautifulSoup(response.text, 'html.parser')
38 |
39 | latest_article_tag = soup.select_one('section.article h3 a')
40 | if latest_article_tag:
41 | href = latest_article_tag['href']
42 | latest_article_url = href if href.startswith('http') else 'https://www.cw.com.tw' + href
43 | return latest_article_url
44 | except Exception as e:
45 | print(f"Failed to fetch the latest article URL: {e}")
46 | return None
47 |
48 | def _get_article_details(self, article_url: str) -> Dict[str, str]:
49 | """
50 | Extract the article's title, time, and content.
51 |
52 | Args:
53 | article_url: The URL of the article.
54 |
55 | Returns:
56 | A dictionary with the article details.
57 | """
58 | try:
59 | response = self.scraper.get(article_url, timeout=10)
60 | soup = BeautifulSoup(response.text, 'html.parser')
61 |
62 | publish_date = 'Unknown'
63 | for tag in soup.select('time.pr20'):
64 | if '發布時間' in tag.get_text():
65 | publish_date = tag.get_text(strip=True).replace('發布時間:', '')
66 | break
67 |
68 | title_tag = soup.select_one('h1')
69 | title = title_tag.get_text(strip=True) if title_tag else 'No Title'
70 |
71 | content_section = soup.select_one('div.article__content')
72 | content = ''
73 | if content_section:
74 | paragraphs = content_section.find_all(['p', 'h2', 'blockquote'])
75 | content = '\n'.join(para.get_text(strip=True) for para in paragraphs)
76 |
77 | keywords = [tag.get_text(strip=True) for tag in soup.select('ul.article__keyword a.keywords')]
78 |
79 | return {
80 | 'title': title,
81 | 'time': publish_date,
82 | 'content': content,
83 | 'keywords': keywords
84 | }
85 |
86 | except Exception as e:
87 | print(f"Failed to extract article details: {e}")
88 | return {}
89 |
90 | def _is_url_already_processed(self, url: str) -> bool:
91 | """
92 | Check if the given URL already exists in the text file.
93 |
94 | Args:
95 | url: The article URL to check.
96 |
97 | Returns:
98 | True if the URL exists, False otherwise.
99 | """
100 | if os.path.exists(self.DATA_FILE):
101 | with open(self.DATA_FILE, 'r', encoding='utf-8') as file:
102 | existing_urls = {line.strip() for line in file}
103 | return url in existing_urls
104 | return False
105 |
106 | def _save_article_url(self, url: str) -> None:
107 | """
108 | Save the article URL to the text file.
109 |
110 | Args:
111 | url: The article URL to save.
112 | """
113 | os.makedirs(os.path.dirname(self.DATA_FILE), exist_ok=True)
114 |
115 | with open(self.DATA_FILE, 'a', encoding='utf-8') as file:
116 | file.write(f"{url}\n")
117 |
118 | print(f"📥 Article URL saved: {url}")
119 |
120 | def get_latest_article(self) -> Optional[Dict[str, str]]:
121 | """
122 | Scrape the latest article.
123 |
124 | Returns:
125 | A dictionary with article details or None if no article is found.
126 | """
127 | article_url = self._get_latest_article_url()
128 | if self._is_url_already_processed(article_url):
129 | print(f"✅ URL already exists: {article_url}")
130 | return None
131 | else:
132 | article_details = self._get_article_details(article_url)
133 | if article_details:
134 | self._save_article_url(article_url)
135 | return article_details
136 |
137 | def get_cws_channel_response(self, article_details: Dict) -> str:
138 | if article_details:
139 | response = chat_completion(
140 | [{"role": "user", "content": cws_channel_template+str(article_details)}],
141 | config.GPT_METHOD,
142 | config.GPT_API_KEY
143 | )
144 | return response
145 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/chat.py:
--------------------------------------------------------------------------------
1 | from chatgpt_linebot.memory import Memory
2 | from chatgpt_linebot.modules.gpt import chat_completion as chat
3 |
4 |
5 | def chat_completion(
6 | id: int,
7 | memory: Memory,
8 | method: str = 'g4f',
9 | api_key: str = None
10 | ) -> str:
11 | """Use OpenAI API via gpt4free providers"""
12 | response = chat(memory.get(id), method, api_key)
13 | memory.append(id, 'system', response)
14 | print(memory.storage)
15 | return response
16 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/gpt.py:
--------------------------------------------------------------------------------
1 | from typing import Dict, List
2 |
3 | import g4f
4 | from g4f.client import Client
5 | from zhipuai import ZhipuAI
6 |
7 | g4f.debug.logging = True
8 |
9 |
10 | def chat_completion(message: List[Dict], method: str = 'g4f', api_key: str = None) -> str:
11 | """Use OpenAI API via gpt4free providers"""
12 | try:
13 | if method == 'g4f':
14 | client = Client()
15 | response = client.chat.completions.create(
16 | model="gpt-4o-mini",
17 | messages=message,
18 | ignored=["Cnote", "Aichatos"]
19 | )
20 | response = response.choices[0].message.content
21 | elif method == 'zhipuai':
22 | client = ZhipuAI(api_key=api_key)
23 | response = client.chat.completions.create(
24 | model="glm-4-flash",
25 | messages=message,
26 | )
27 | return response.choices[0].message.content
28 |
29 | except Exception as e:
30 | response = (
31 | "There're something wrong in openai api, please try again.\n"
32 | "Or connect to developer: https://github.com/Lin-jun-xiang/chatgpt-line-bot/issues \n"
33 | f"{e}"
34 | )
35 | print(e)
36 |
37 | return response
38 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/horoscope.py:
--------------------------------------------------------------------------------
1 | import json
2 | import re
3 |
4 | import requests
5 | from bs4 import BeautifulSoup
6 |
7 | from chatgpt_linebot.modules.gpt import chat_completion
8 | from chatgpt_linebot.prompts import horoscope_template
9 |
10 |
11 | class Horoscope:
12 | HOST = "https://www.cosmopolitan.com/tw/horoscopes/"
13 | headers = {
14 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
15 | }
16 | error_msg = (
17 | "Cannot get the horoscope, please try again.🥶\n"
18 | "Or connect to developer: https://github.com/Lin-jun-xiang/chatgpt-line-bot/issues"
19 | )
20 |
21 |
22 | def __init__(self) -> None:
23 | self.horoscope_urls = self.get_horoscope_urls()
24 |
25 | def get_horoscope_urls(self) -> list:
26 | """Get all horoscope urls
27 | Returns
28 | -------
29 | horoscope_urls (List[Dict]):
30 | [
31 | {'name': '天蠍座', 'url': 'https://www...'},
32 | {'name': '獅子座', 'url': 'https://www...'},
33 | ...
34 | ]
35 | """
36 | try:
37 | response = requests.get(f"{self.HOST}weekly/", headers=self.headers)
38 | soup = BeautifulSoup(response.content, 'html.parser')
39 |
40 | # Find the script tag containing JSON data
41 | script_tag = soup.find('script', {'id': 'json-ld'})
42 |
43 | horoscope_urls = []
44 |
45 | if not script_tag:
46 | return
47 | # Extract the text content of the script tag
48 | script_content = script_tag.contents[0]
49 |
50 | # Load the JSON data
51 | json_data = json.loads(script_content)
52 |
53 | # Extract the information for each zodiac sign
54 | for item in json_data['itemListElement']:
55 | name = item['name']
56 | url = item['url']
57 | horoscope_urls.append({"name": name, "url": url})
58 |
59 | return horoscope_urls
60 |
61 | except Exception as e:
62 | print(e)
63 |
64 | def _process_horoscope_response(self, content: str) -> str:
65 | if not content:
66 | return f"{self.error_msg}\nContent is None."
67 | response = chat_completion(
68 | [{"role": "user", "content": horoscope_template+content}]
69 | )
70 | return response
71 |
72 | def get_horoscope_response(self, target: str) -> str:
73 | if not self.horoscope_urls:
74 | return f"{self.error_msg}\nNot found any horoscope urls."
75 |
76 | match_target = re.search(r'(\w{2}座)', target)
77 |
78 | if not match_target:
79 | return self.error_msg
80 |
81 | for horoscope_url in self.horoscope_urls:
82 | if horoscope_url.get('name') == match_target.group():
83 | res = requests.get(horoscope_url.get('url'), headers=self.headers)
84 | soup = BeautifulSoup(res.content, 'html.parser')
85 | meta_excerpt = soup.find('meta', {'name': 'sailthru.excerpt'})
86 |
87 | if not meta_excerpt:
88 | return f"{self.error_msg}\nParse horoscope url failed."
89 |
90 | content = meta_excerpt.get('content')
91 | return self._process_horoscope_response(content)
92 |
93 | return self.error_msg
94 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/image_crawler.py:
--------------------------------------------------------------------------------
1 | import requests
2 | from icrawler import ImageDownloader
3 | from icrawler.builtin import GoogleImageCrawler
4 | from serpapi import GoogleSearch
5 |
6 |
7 | class CustomLinkPrinter(ImageDownloader):
8 | """Only get image urls instead of store
9 |
10 | References
11 | ----------
12 | [Issue#73](https://github.com/hellock/icrawler/issues/73)
13 | """
14 | file_urls = []
15 |
16 | def get_filename(self, task, default_ext):
17 | file_idx = self.fetched_num + self.file_idx_offset
18 | return '{:04d}.{}'.format(file_idx, default_ext)
19 |
20 | def download(self, task, default_ext, timeout=5, max_retry=3, overwrite=False, **kwargs):
21 | file_url = task['file_url']
22 | filename = self.get_filename(task, default_ext)
23 |
24 | task['success'] = True
25 | task['filename'] = filename
26 |
27 | if not self.signal.get('reach_max_num'):
28 | self.file_urls.append(file_url)
29 |
30 | self.fetched_num += 1
31 |
32 | if self.reach_max_num():
33 | self.signal.set(reach_max_num=True)
34 |
35 | return
36 |
37 |
38 | class ImageCrawler:
39 | """Crawl the Image"""
40 | def __init__(
41 | self,
42 | engine: str = 'icrawler',
43 | nums: int = 1,
44 | api_key: str = None
45 | ) -> None:
46 | self.image_save_path = ("./")
47 | self.engine = engine
48 | self.nums = nums
49 | self.api_key = api_key
50 |
51 | def _is_img_url(self, url) -> bool:
52 | """Check the image url is valid or invalid"""
53 | try:
54 | response = requests.head(url)
55 | content_type = response.headers['content-type']
56 | return content_type.startswith('image/')
57 | except requests.RequestException:
58 | return False
59 | except Exception as e:
60 | return False
61 |
62 | def _serpapi(self, search_query: str) -> list[str]:
63 | """Serpapi for google search images"""
64 | params = {
65 | "engine": "google",
66 | "q": search_query,
67 | "tbm": "isch",
68 | "api_key": self.api_key
69 | }
70 |
71 | search = GoogleSearch(params)
72 | results = search.get_dict()
73 | images = results['images_results']
74 |
75 | urls = []
76 | for image in images[:self.nums]:
77 | urls.append(image['original'])
78 |
79 | return urls
80 |
81 | def _icrawler(self, search_query: str, prefix_name: str = 'tmp') -> list[str]:
82 | """Icrawler for google search images (Free)"""
83 | google_crawler = GoogleImageCrawler(
84 | downloader_cls=CustomLinkPrinter,
85 | storage={'root_dir': self.image_save_path},
86 | parser_threads=4,
87 | downloader_threads=4
88 | )
89 |
90 | # TODO: https://github.com/hellock/icrawler/issues/40
91 | google_crawler.session.verify = False
92 | google_crawler.downloader.file_urls = []
93 |
94 | google_crawler.crawl(
95 | keyword=search_query,
96 | max_num=self.nums,
97 | file_idx_offset=0
98 | )
99 | img_urls = google_crawler.downloader.file_urls
100 | print(f'Get image urls: {img_urls}')
101 |
102 | return img_urls[:self.nums]
103 |
104 | def get_url(self, search_query: str) -> str:
105 | try:
106 | if self.engine == 'icrawler':
107 | urls = self._icrawler(search_query)
108 | elif self.engine == 'serpapi':
109 | urls = self._serpapi(search_query)
110 |
111 | for url in urls:
112 | if self._is_img_url(url):
113 | return url
114 |
115 | except Exception as e:
116 | print(f'\033[31m{e}')
117 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/image_generate.py:
--------------------------------------------------------------------------------
1 | import re
2 |
3 | import requests
4 | from g4f.client import Client
5 | from g4f.cookies import set_cookies
6 |
7 | set_cookies(".google.com", {
8 | "__Secure-1PSID": "",
9 | "__Secure-1PSIDCC": "",
10 | "__Secure-1PSIDTS": "",
11 | })
12 |
13 |
14 | def g4f_generate_image(query: str) -> str:
15 | """Should setup the cookies first."""
16 | try:
17 | client = Client()
18 | query_en = client.chat.completions.create(
19 | model="gpt-3.5-turbo",
20 | messages=[{
21 | 'role': 'user',
22 | 'content': f"Translate the following text to English, and just return english version: {query}"
23 | }],
24 | ignored=["Cnote", "Aichatos"]
25 | ).choices[0].message.content
26 |
27 | response = client.images.generate(
28 | model="gemini",
29 | prompt=query_en,
30 | )
31 | image_url = response.data[0].url
32 | return image_url
33 |
34 | except Exception as e:
35 | print(
36 | "There're something wrong in openai api, please try again.\n"
37 | "Or connect to developer: https://github.com/Lin-jun-xiang/chatgpt-line-bot/issues \n"
38 | f"{e}"
39 | )
40 |
41 |
42 | class RapidAPIs:
43 | def __init__(self, api_key: str) -> None:
44 | self.api_key = api_key
45 |
46 | def ai_text_to_img(self, prompt: str) -> str:
47 | """https://rapidapi.com/bussinesonline250/api/ai-text-to-image-generator-api
48 | ```python
49 | prompt = '#c dogs' | '#r dogs' | '#3d dogs'
50 | ```
51 | """
52 | hash_style = {
53 | 'c': 'cyberpunk',
54 | 'r': 'realistic',
55 | '3d': '3D'
56 | }
57 | pattern = r'#([a-zA-Z0-9]+)'
58 | style = hash_style.get(re.search(pattern, prompt).group(1))
59 |
60 | url = f"https://ai-text-to-image-generator-api.p.rapidapi.com/{style}"
61 |
62 | payload = {"inputs": prompt}
63 | headers = {
64 | "content-type": "application/json",
65 | "X-RapidAPI-Key": self.api_key,
66 | "X-RapidAPI-Host": "ai-text-to-image-generator-api.p.rapidapi.com"
67 | }
68 | response = requests.post(url, json=payload, headers=headers)
69 | print("Rapid API - AI Text to Image...")
70 | return response.json()['url']
71 |
--------------------------------------------------------------------------------
/chatgpt_linebot/modules/youtube_recommend.py:
--------------------------------------------------------------------------------
1 | import json
2 | import random
3 |
4 | from chatgpt_linebot.modules.gpt import chat_completion
5 | from chatgpt_linebot.prompts import youtube_recommend_template
6 |
7 | path = './data/favorite_videos.json'
8 |
9 | with open(path, 'r', encoding='utf-8') as file:
10 | favorite_videos = json.load(file)
11 |
12 |
13 | def recommend_videos():
14 | """Recommend youtube videos randomly"""
15 | push_video = random.sample(favorite_videos, 3)
16 |
17 | prompt = f"{youtube_recommend_template}{push_video}"
18 | response = chat_completion([{"role": "user", "content": prompt}])
19 |
20 | return response
21 |
--------------------------------------------------------------------------------
/chatgpt_linebot/prompts/__init__.py:
--------------------------------------------------------------------------------
1 | from .template import (
2 | agent_template,
3 | cws_channel_template,
4 | girlfriend,
5 | horoscope_template,
6 | youtube_recommend_template,
7 | )
8 |
--------------------------------------------------------------------------------
/chatgpt_linebot/prompts/template.py:
--------------------------------------------------------------------------------
1 | girlfriend = """
2 | Instruction:
3 |
4 | 妳是World Gym健身房的業務,名字叫做EVA,但是面對健身房以外的問題妳也能夠答覆。
5 | 妳說話的語氣需要自然可愛,可以在對話裡帶emoji和表情符號,例如: ❤🧡😂😘😭🥵🥺,但禁止過多的表情符號。
6 | 針對以下使用者的問題,用樂觀、可愛、有幫助、高情商、自然不官方的方式、繁體中文(ZH-TW)進行回答:
7 | """
8 |
9 | horoscope_template = """
10 | 作為一位可愛的星座運勢師,
11 |
12 | 你說話的語氣需要自然可愛,可以在對話裡偶爾帶emoji和表情符號,但禁止每句話都出現。
13 |
14 | 並請用\n作為換行方式,另外,延伸閱讀的部分可以省略、特殊符號請用適當方式代替。
15 |
16 | 將以下內容進行整理,輸出:\n
17 | """
18 |
19 | youtube_recommend_template = """
20 | 作為我的女朋友,請用繁體中文、可愛的方式推薦我每日歌曲,務必涵蓋title、link。
21 | 另外要避免使用markdown語法 []() 來表示link
22 | 以下是三個待推薦的歌單:\n
23 | """
24 |
25 | cws_channel_template = """
26 | 妳是一個專業的財經週刊報導者,妳需要將以下資料作一個摘要提供給 LINE 閱讀者。
27 | - 列出標題、內容摘要、關鍵字
28 | - 無需使用 markdown 語言 (因為 LINE 無法呈現)
29 | - 盡量描述重點、簡短描述
30 | - 讓使用者快速了解最新資訊
31 | - 搭配一下emoji、表情符號,避免訊息過於機械式
32 |
33 | 資料如下:\n
34 | """
35 |
36 | agent_template = """
37 | The available tools are:
38 | - g4f_generate_image: Generates images from text using G4F AI. Input is , and it returns only one URL.
39 | - rapidapis.ai_text_to_img: Generates images from text using RapidAPI's AI. Input is , and it returns only one URL.
40 | - search_image_url: Crawls the web to fetch images. Input is , and it returns only one URL.
41 | - horoscope.get_horoscope_response: Retrieves the weekly horoscope for a specific zodiac sign. Input is , and it returns a text response.
42 | - chat_completion: Handles general conversation content. Input is , and it returns a text response.
43 | Based on the user's query, determine which tool should be used and return the function name of that tool along with its input.
44 | return format (use , split): function name, input
45 |
46 | user query:
47 | """
48 |
--------------------------------------------------------------------------------
/chatgpt_linebot/urls.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from urllib.parse import urlparse
3 |
4 | from fastapi import APIRouter, HTTPException, Request
5 | from linebot import LineBotApi, WebhookHandler
6 | from linebot.exceptions import InvalidSignatureError
7 | from linebot.models import *
8 |
9 | from chatgpt_linebot.memory import Memory
10 | from chatgpt_linebot.modules import (
11 | CWArticleScraper,
12 | Horoscope,
13 | ImageCrawler,
14 | RapidAPIs,
15 | chat,
16 | chat_completion,
17 | g4f_generate_image,
18 | recommend_videos,
19 | )
20 | from chatgpt_linebot.prompts import agent_template, girlfriend
21 |
22 | sys.path.append(".")
23 |
24 | import config
25 |
26 | line_app = APIRouter()
27 | memory = Memory(3)
28 | horoscope = Horoscope()
29 | rapidapis = RapidAPIs(config.RAPID)
30 | cws_scraper = CWArticleScraper()
31 |
32 | line_bot_api = LineBotApi(config.LINE_CHANNEL_ACCESS_TOKEN)
33 | handler = WebhookHandler(config.LINE_CHANNEL_SECRET)
34 |
35 |
36 | @line_app.post("/callback")
37 | async def callback(request: Request) -> str:
38 | """LINE Bot webhook callback
39 |
40 | Args:
41 | request (Request): Request Object.
42 |
43 | Raises:
44 | HTTPException: Invalid Signature Error
45 |
46 | Returns:
47 | str: OK
48 | """
49 | signature = request.headers["X-Line-Signature"]
50 | body = await request.body()
51 |
52 | # handle webhook body
53 | try:
54 | handler.handle(body.decode(), signature)
55 | except InvalidSignatureError:
56 | raise HTTPException(status_code=400, detail="Missing Parameter")
57 | return "OK"
58 |
59 |
60 | def is_url(string: str) -> bool:
61 | try:
62 | result = urlparse(string)
63 | return all([result.scheme, result.netloc])
64 | except ValueError:
65 | return False
66 |
67 |
68 | def agent(query: str) -> tuple[str]:
69 | """Auto use correct tool by user query."""
70 | prompt = agent_template + query
71 | message = [{'role': 'user', 'content': prompt}]
72 |
73 | tool, input = chat(message, config.GPT_METHOD, config.GPT_API_KEY).split(', ')
74 |
75 | print(f"""
76 | Agent
77 | =========================================
78 | Query: {query}
79 | Tool: {tool}
80 | Input: {input}
81 | """)
82 |
83 | return tool, input
84 |
85 |
86 | def search_image_url(query: str) -> str:
87 | """Fetches image URL from different search sources."""
88 | img_crawler = ImageCrawler(nums=5)
89 | img_url = img_crawler.get_url(query)
90 | if not img_url:
91 | img_serp = ImageCrawler(engine='serpapi', nums=5, api_key=config.SERPAPI_API_KEY)
92 | img_url = img_serp.get_url(query)
93 | print('Used Serpapi search image instead of icrawler.')
94 | return img_url
95 |
96 |
97 | def send_image_reply(reply_token, img_url: str) -> None:
98 | """Sends an image message to the user."""
99 | if not img_url:
100 | send_text_reply(reply_token, 'Cannot get image.')
101 | image_message = ImageSendMessage(original_content_url=img_url, preview_image_url=img_url)
102 | line_bot_api.reply_message(reply_token, messages=image_message)
103 |
104 |
105 | def send_text_reply(reply_token, text: str) -> None:
106 | """Sends a text message to the user."""
107 | if not text:
108 | text = "There're some problem in server."
109 | text_message = TextSendMessage(text=text)
110 | line_bot_api.reply_message(reply_token, messages=text_message)
111 |
112 |
113 | @handler.add(MessageEvent, message=(TextMessage))
114 | def handle_message(event) -> None:
115 | """Event - User sent message
116 |
117 | Args:
118 | event (LINE Event Object)
119 |
120 | Refs:
121 | https://developers.line.biz/en/reference/messaging-api/#message-event
122 | https://www.21cs.tw/Nurse/showLiangArticle.xhtml?liangArticleId=503
123 | """
124 | if not isinstance(event.message, TextMessage):
125 | return
126 |
127 | reply_token = event.reply_token
128 | user_message = event.message.text
129 |
130 | source_type = event.source.type
131 | source_id = getattr(event.source, f"{source_type}_id", None)
132 |
133 | if source_type == 'user':
134 | user_name = line_bot_api.get_profile(source_id).display_name
135 | print(f'{user_name}: {user_message}')
136 |
137 | else:
138 | if not user_message.startswith('@chat'):
139 | return
140 | else:
141 | user_message = user_message.replace('@chat', '')
142 |
143 | tool, input_query = agent(user_message)
144 |
145 | if tool in ['chat_completion']:
146 | input_query = f"{girlfriend}:\n {input_query}"
147 | memory.append(source_id, 'user', f"{girlfriend}:\n {user_message}")
148 |
149 | try:
150 | if tool in ['chat_completion']:
151 | response = chat_completion(source_id, memory, config.GPT_METHOD, config.GPT_API_KEY)
152 | else:
153 | response = eval(f"{tool}('{input_query}')")
154 |
155 | if is_url(response):
156 | send_image_reply(reply_token, response)
157 | else:
158 | send_text_reply(reply_token, response)
159 |
160 | except Exception as e:
161 | send_text_reply(reply_token, e)
162 |
163 |
164 | @line_app.get("/recommend")
165 | def recommend_from_yt() -> dict:
166 | """Line Bot Broadcast
167 |
168 | Descriptions
169 | ------------
170 | Recommend youtube videos to all followed users.
171 | (Use cron-job.org to call this api)
172 |
173 | References
174 | ----------
175 | https://www.cnblogs.com/pungchur/p/14385539.html
176 | https://steam.oxxostudio.tw/category/python/example/line-push-message.html
177 | """
178 | videos = recommend_videos()
179 |
180 | if videos and "There're something wrong in openai api when call, please try again." not in videos:
181 | line_bot_api.broadcast(TextSendMessage(text=videos))
182 |
183 | # Push message to group via known group (event.source.group_id)
184 | known_group_ids = [
185 | 'C6d-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
186 | 'Ccc-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
187 | 'Cbb-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
188 | ]
189 | for group_id in known_group_ids:
190 | line_bot_api.push_message(group_id, TextSendMessage(text=videos))
191 |
192 | print('Successfully recommended videos')
193 | return {"status": "success", "message": "recommended videos."}
194 |
195 | else:
196 | print('Failed recommended videos')
197 | return {"status": "failed", "message": "no get recommended videos."}
198 |
199 |
200 | @line_app.get('/cwsChannel')
201 | def get_cws_channel() -> dict:
202 | article_details = cws_scraper.get_latest_article()
203 | cws_channel_response = cws_scraper.get_cws_channel_response(article_details)
204 |
205 | if cws_channel_response:
206 | line_bot_api.broadcast(TextSendMessage(text=cws_channel_response))
207 | return {"status": "success", "message": "got cws channel response."}
208 |
209 | else:
210 | return {"status": "failed", "message": "no get cws channel response."}
211 |
--------------------------------------------------------------------------------
/config.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from dotenv import load_dotenv
4 |
5 | # Load environment variables
6 | load_dotenv()
7 |
8 | # LINE Bot 設定
9 | LINE_CHANNEL_SECRET = os.environ.get("LINE_CHANNEL_SECRET")
10 | LINE_CHANNEL_ACCESS_TOKEN = os.environ.get("LINE_CHANNEL_ACCESS_TOKEN")
11 |
12 | # SerpAPI
13 | SERPAPI_API_KEY = os.environ.get('SERPAPI_API_KEY')
14 |
15 | # RAPID API
16 | RAPID = os.environ.get('RAPID')
17 |
18 | # GPT METHOD: g4f/zhipuai
19 | GPT_METHOD = os.environ.get('GPT_METHOD', 'g4f')
20 |
21 | # ZHIPUAI API: if using zhipuai gpt method
22 | GPT_API_KEY = os.environ.get('GPT_API_KEY')
23 |
--------------------------------------------------------------------------------
/data/cws_channel.txt:
--------------------------------------------------------------------------------
1 | https://www.cw.com.tw/article/5134007
2 | https://www.cw.com.tw/article/5134008
3 |
--------------------------------------------------------------------------------
/data/favorite_videos.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "張妙格 - 我期待的不是雪「我期待的不是雪而是有你的冬天」【動態歌詞/PinyinLyrics】♪",
4 | "link": "https://www.youtube.com/watch?v=qP2pAYJnRtE"
5 | },
6 | {
7 | "title": "In The Shadow Of The Sun (Original Mix) - Professor Green (Kain Music) ♪ || 全网热播BGM | 抖音 | TikTok",
8 | "link": "https://www.youtube.com/watch?v=-lqkmapAuZc"
9 | },
10 | {
11 | "title": "你到底爱谁",
12 | "link": "https://www.youtube.com/watch?v=oH9i2oOQkP8"
13 | },
14 | {
15 | "title": "【明天會更好 Tomorrow Will Be Better】Official Music Video",
16 | "link": "https://www.youtube.com/watch?v=s6T4DXRKYHM"
17 | },
18 | {
19 | "title": "以后的以后 蘇蘇(苏苏)( 男聲版 (Cover 庄心妍)",
20 | "link": "https://www.youtube.com/watch?v=ERSIvnnTujc"
21 | },
22 | {
23 | "title": "打擾一下樂團「預言」2022現場版 黑色羅曼史全國巡演",
24 | "link": "https://www.youtube.com/watch?v=pT5VGTwk8IA"
25 | },
26 | {
27 | "title": "打擾一下-預言 【我可以不愛他,也可以忘了他,可那該死的回憶,拉扯我放不下】(動態歌詞 Lyrics)",
28 | "link": "https://www.youtube.com/watch?v=gSuIk6G2nPo"
29 | },
30 | {
31 | "title": "盛哲 - 在你的身边【我以为忘了想念】By Your Side (Official Lyric Video)",
32 | "link": "https://www.youtube.com/watch?v=1hOfUcLaqxs"
33 | },
34 | {
35 | "title": "王傑 Dave Wong《我是真的愛上你》[Lyrics MV]",
36 | "link": "https://www.youtube.com/watch?v=gGLp7ht_2bk"
37 | },
38 | {
39 | "title": "于冬然 - 其實都沒有『我也曾經做夢過 後來更寂寞,我們能留下的其實都沒有。』【高音質|動態歌詞Lyrics】♫ · 翻唱歌曲(原唱:楊宗緯)",
40 | "link": "https://www.youtube.com/watch?v=eHcethrXlKg"
41 | },
42 | {
43 | "title": "GODS ft. NewJeans (뉴진스) (Official Music Video) | Worlds 2023 Anthem - League of Legends",
44 | "link": "https://www.youtube.com/watch?v=C3GouGa0noM"
45 | },
46 | {
47 | "title": "預謀 - 代理仁「她只要自由,她都不會理會我的感受」動態歌詞版",
48 | "link": "https://www.youtube.com/watch?v=IUXcGLNEX3s"
49 | },
50 | {
51 | "title": "王企鵝 - 不刪(女生版)(原唱:井朧)『為什麼留著你的微信不刪,為什麼當初說好的話不算。』【熱門歌曲翻唱 Cover】【MV】",
52 | "link": "https://www.youtube.com/watch?v=NE-T-N2p90Y"
53 | },
54 | {
55 | "title": "盧巧音 Candy Lo feat. 王力宏 Leehom Wang - 好心分手",
56 | "link": "https://www.youtube.com/watch?v=v04DzjzSb5w"
57 | },
58 | {
59 | "title": "井朧 - 不刪『為什麼留著你的微信不刪?為什麼當初說好的話不算?』【動態歌詞Lyrics】",
60 | "link": "https://www.youtube.com/watch?v=TQDM0H3L_y4"
61 | },
62 | {
63 | "title": "張信哲 -【愛就一個字】| Cover 7en | Pocats Studio",
64 | "link": "https://www.youtube.com/watch?v=T7ztSMjN70I"
65 | },
66 | {
67 | "title": "張信哲 Jeff Chang [ 愛就一個字 ] 官方完整版 MV",
68 | "link": "https://www.youtube.com/watch?v=NhJFuDZ7RDg"
69 | },
70 | {
71 | "title": "練習 - 劉德華",
72 | "link": "https://www.youtube.com/watch?v=Tad3kweJmC4"
73 | },
74 | {
75 | "title": "游鴻明 Chris Yu - 下沙",
76 | "link": "https://www.youtube.com/watch?v=BgmT2siQ23s"
77 | },
78 | {
79 | "title": "1個球 - 不是因為寂寞才想你(原唱:T.R.Y)『只是因為想你才寂寞,當淚落下的時候 所有風景都沉默。』【動態歌詞MV】",
80 | "link": "https://www.youtube.com/watch?v=MvgFf41bEuk"
81 | },
82 | {
83 | "title": "郭飞宏 - 还是会想你【动态歌词/Pinyin Lyrics】Guo Fei Hong - Hai Shi Hui Xiang Ni",
84 | "link": "https://www.youtube.com/watch?v=zhL5OKEwQmM"
85 | },
86 | {
87 | "title": "《幻想三國誌—天元異事錄》主題曲「萬卷傳奇」傳唱活動|Cover by 文慧如",
88 | "link": "https://www.youtube.com/watch?v=IbZHF1_yhS8"
89 | },
90 | {
91 | "title": "Natalie Ho 何榛綦 - 《TIME TO FLY》Official Music Video",
92 | "link": "https://www.youtube.com/watch?v=Xg2XzIRA1MI"
93 | },
94 | {
95 | "title": "張語噥 Sammy -【複數的孤寂 Loneliness】|Official MV",
96 | "link": "https://www.youtube.com/watch?v=0eERXuDcVyY"
97 | },
98 | {
99 | "title": "張語噥 Sammy -【月光下的影子】《電影 第九分局 片尾曲》|Official MV",
100 | "link": "https://www.youtube.com/watch?v=Y512C5uPb9I"
101 | },
102 | {
103 | "title": "The Tech Thieves - Fake (Lyrics)",
104 | "link": "https://www.youtube.com/watch?v=eIFPuHtbHck"
105 | },
106 | {
107 | "title": "柯柯柯啊 - 櫻花樹下的約定 (熱搜版)「那時的我和你 常常相約在櫻花下」【動態歌詞/PinyinLyrics】♪",
108 | "link": "https://www.youtube.com/watch?v=PhJyRBkmpHQ"
109 | },
110 | {
111 | "title": "旺仔小喬 - 櫻花樹下的約定(完整版)「如詩啊如畫 放不下的是牽掛」【動態歌詞】♪",
112 | "link": "https://www.youtube.com/watch?v=wkMSBSSjN9E"
113 | },
114 | {
115 | "title": "汪蘇瀧&徐良 - 後會無期【動態歌詞/Lyrics Video】",
116 | "link": "https://www.youtube.com/watch?v=i2N8ap31B0I"
117 | },
118 | {
119 | "title": "顧峰 & 斯琴高麗《犯錯》官方完整版 KTV",
120 | "link": "https://www.youtube.com/watch?v=TewaMSPT-dI"
121 | },
122 | {
123 | "title": "阿冗 - 未發送【動態歌詞】「對話框裡的內容 我輸入 刪除了再刪除 一個人的交流我 重覆了又重覆」♪",
124 | "link": "https://www.youtube.com/watch?v=GE7A3jXDH3I"
125 | },
126 | {
127 | "title": "阿冗《未發送》 文慧如翻唱",
128 | "link": "https://www.youtube.com/watch?v=5suXqXroYjE"
129 | },
130 | {
131 | "title": "Capper, 羅言 -【雪】| Cover Yun | Pocats Studio",
132 | "link": "https://www.youtube.com/watch?v=EjGXGcpiRzs"
133 | },
134 | {
135 | "title": "Juice Boy ft. 派偉俊 Patrick Brasca《意猶未盡》Official Music Video",
136 | "link": "https://www.youtube.com/watch?v=hAehd65HHQo"
137 | },
138 | {
139 | "title": "Juice Boy ft. Karencici 《Target》Official Music Video",
140 | "link": "https://www.youtube.com/watch?v=T9bnYfzSU0k"
141 | },
142 | {
143 | "title": "Take Over",
144 | "link": "https://www.youtube.com/watch?v=oFPvSRKel0Q"
145 | },
146 | {
147 | "title": "TVアニメ『るろうに剣心 -明治剣客浪漫譚-』第二クールED映像|KID PHENOMENON「存在証明」",
148 | "link": "https://www.youtube.com/watch?v=QuP1gfla7mg"
149 | },
150 | {
151 | "title": "程響 - 四季予你『大雪漫天飄零 做你的嫁衣多美麗』【動態歌詞】",
152 | "link": "https://www.youtube.com/watch?v=nmJUVhjwZ4Y"
153 | },
154 | {
155 | "title": "陸傑awr - 後來我們的愛「後來我們的愛從認真變得敷衍 後來我們的愛從誓言變成謊言」【動態歌詞/PinyinLyrics】♪",
156 | "link": "https://www.youtube.com/watch?v=G_NKYDSI574"
157 | },
158 | {
159 | "title": "原子邦妮 Astro Bunny【深夜情歌 Late Night Tales】Official Music Video",
160 | "link": "https://www.youtube.com/watch?v=sGPHH8iLki8"
161 | },
162 | {
163 | "title": "The Mongolian Live Sessions: Rokit Bay and DJ Zaya - Микрофоны ард ( remix )",
164 | "link": "https://www.youtube.com/watch?v=bfgr2agdWyI"
165 | },
166 | {
167 | "title": "很美味 - April Encounter 「第一次見你的我(好慌張) 找不到什麼話要講」 抖音【動態歌詞】",
168 | "link": "https://www.youtube.com/watch?v=riNjqt1w5JQ"
169 | },
170 | {
171 | "title": "BK x Vigoz -【第一次見妳的我】audio",
172 | "link": "https://www.youtube.com/watch?v=26Gq1LH7s54"
173 | },
174 | {
175 | "title": "TANK [給我你的愛 Give me your love] Official Music Video",
176 | "link": "https://www.youtube.com/watch?v=9CInTGdSTf0"
177 | },
178 | {
179 | "title": "李聖傑 Sam Lee【最近】Official Music Video",
180 | "link": "https://www.youtube.com/watch?v=azOIvILpIW8"
181 | },
182 | {
183 | "title": "W0LF(S) 五堅情【你是我這輩子最想愛的呀 Last Love】Official MV | 邱鋒澤 Feng Ze、陳零九 NINE CHEN、黃偉晉 Wayne、賴晏駒 LAI、婁峻碩 SHOU",
184 | "link": "https://www.youtube.com/watch?v=3wPONiZwy0o"
185 | },
186 | {
187 | "title": "雪 Distance (Capper feat. 罗言) Cover ( 蔡恩雨 Priscilla Abby)",
188 | "link": "https://www.youtube.com/watch?v=pgDj6apgMUA"
189 | },
190 | {
191 | "title": "G.E.M.鄧紫棋【唯一 Only One】LIVE現場版 (時光音樂會 · 老友記 EP.4)",
192 | "link": "https://www.youtube.com/watch?v=xXr4Z7HAZCE"
193 | },
194 | {
195 | "title": "飛兒樂團 F.I.R. - I remember (official 高畫質HD官方完整版MV)",
196 | "link": "https://www.youtube.com/watch?v=I0jziPqZLX8"
197 | },
198 | {
199 | "title": "G.E.M.鄧紫棋【句號 Full Stop】LIVE現場版 (時光音樂會 · 老友記 EP.1)",
200 | "link": "https://www.youtube.com/watch?v=lRAu2VG25js"
201 | },
202 | {
203 | "title": "郭飞宏 - 还是会想你【动态歌词/Pinyin Lyrics】Guo Fei Hong - Hai Shi Hui Xiang Ni",
204 | "link": "https://www.youtube.com/watch?v=zhL5OKEwQmM"
205 | },
206 | {
207 | "title": "《幻想三國誌—天元異事錄》主題曲「萬卷傳奇」傳唱活動|Cover by 文慧如",
208 | "link": "https://www.youtube.com/watch?v=IbZHF1_yhS8"
209 | },
210 | {
211 | "title": "張語噥 Sammy -【複數的孤寂 Loneliness】|Official MV",
212 | "link": "https://www.youtube.com/watch?v=0eERXuDcVyY"
213 | },
214 | {
215 | "title": "張語噥 Sammy -【月光下的影子】《電影 第九分局 片尾曲》|Official MV",
216 | "link": "https://www.youtube.com/watch?v=Y512C5uPb9I"
217 | },
218 | {
219 | "title": "The Tech Thieves - Fake (Lyrics)",
220 | "link": "https://www.youtube.com/watch?v=eIFPuHtbHck"
221 | },
222 | {
223 | "title": "柯柯柯啊 - 櫻花樹下的約定 (熱搜版)「那時的我和你 常常相約在櫻花下」【動態歌詞/PinyinLyrics】♪",
224 | "link": "https://www.youtube.com/watch?v=PhJyRBkmpHQ"
225 | },
226 | {
227 | "title": "旺仔小喬 - 櫻花樹下的約定(完整版)「如詩啊如畫 放不下的是牽掛」【動態歌詞】♪",
228 | "link": "https://www.youtube.com/watch?v=wkMSBSSjN9E"
229 | },
230 | {
231 | "title": "汪蘇瀧&徐良 - 後會無期【動態歌詞/Lyrics Video】",
232 | "link": "https://www.youtube.com/watch?v=i2N8ap31B0I"
233 | },
234 | {
235 | "title": "顧峰 & 斯琴高麗《犯錯》官方完整版 KTV",
236 | "link": "https://www.youtube.com/watch?v=TewaMSPT-dI"
237 | },
238 | {
239 | "title": "阿冗 - 未發送【動態歌詞】「對話框裡的內容 我輸入 刪除了再刪除 一個人的交流我 重覆了又重覆」♪",
240 | "link": "https://www.youtube.com/watch?v=GE7A3jXDH3I"
241 | },
242 | {
243 | "title": "阿冗《未發送》 文慧如翻唱",
244 | "link": "https://www.youtube.com/watch?v=5suXqXroYjE"
245 | },
246 | {
247 | "title": "Capper, 羅言 -【雪】| Cover Yun | Pocats Studio",
248 | "link": "https://www.youtube.com/watch?v=EjGXGcpiRzs"
249 | },
250 | {
251 | "title": "Juice Boy ft. 派偉俊 Patrick Brasca《意猶未盡》Official Music Video",
252 | "link": "https://www.youtube.com/watch?v=hAehd65HHQo"
253 | },
254 | {
255 | "title": "Juice Boy ft. Karencici 《Target》Official Music Video",
256 | "link": "https://www.youtube.com/watch?v=T9bnYfzSU0k"
257 | },
258 | {
259 | "title": "Take Over",
260 | "link": "https://www.youtube.com/watch?v=oFPvSRKel0Q"
261 | },
262 | {
263 | "title": "TVアニメ『るろうに剣心 -明治剣客浪漫譚-』第二クールED映像|KID PHENOMENON「存在証明」",
264 | "link": "https://www.youtube.com/watch?v=QuP1gfla7mg"
265 | },
266 | {
267 | "title": "程響 - 四季予你『大雪漫天飄零 做你的嫁衣多美麗』【動態歌詞】",
268 | "link": "https://www.youtube.com/watch?v=nmJUVhjwZ4Y"
269 | },
270 | {
271 | "title": "陸傑awr - 後來我們的愛「後來我們的愛從認真變得敷衍 後來我們的愛從誓言變成謊言」【動態歌詞/PinyinLyrics】♪",
272 | "link": "https://www.youtube.com/watch?v=G_NKYDSI574"
273 | },
274 | {
275 | "title": "原子邦妮 Astro Bunny【深夜情歌 Late Night Tales】Official Music Video",
276 | "link": "https://www.youtube.com/watch?v=sGPHH8iLki8"
277 | },
278 | {
279 | "title": "The Mongolian Live Sessions: Rokit Bay and DJ Zaya - Микрофоны ард ( remix )",
280 | "link": "https://www.youtube.com/watch?v=bfgr2agdWyI"
281 | },
282 | {
283 | "title": "很美味 - April Encounter 「第一次見你的我(好慌張) 找不到什麼話要講」 抖音【動態歌詞】",
284 | "link": "https://www.youtube.com/watch?v=riNjqt1w5JQ"
285 | },
286 | {
287 | "title": "BK x Vigoz -【第一次見妳的我】audio",
288 | "link": "https://www.youtube.com/watch?v=26Gq1LH7s54"
289 | },
290 | {
291 | "title": "TANK [給我你的愛 Give me your love] Official Music Video",
292 | "link": "https://www.youtube.com/watch?v=9CInTGdSTf0"
293 | },
294 | {
295 | "title": "李聖傑 Sam Lee【最近】Official Music Video",
296 | "link": "https://www.youtube.com/watch?v=azOIvILpIW8"
297 | },
298 | {
299 | "title": "W0LF(S) 五堅情【你是我這輩子最想愛的呀 Last Love】Official MV | 邱鋒澤 Feng Ze、陳零九 NINE CHEN、黃偉晉 Wayne、賴晏駒 LAI、婁峻碩 SHOU",
300 | "link": "https://www.youtube.com/watch?v=3wPONiZwy0o"
301 | },
302 | {
303 | "title": "雪 Distance (Capper feat. 罗言) Cover ( 蔡恩雨 Priscilla Abby)",
304 | "link": "https://www.youtube.com/watch?v=pgDj6apgMUA"
305 | },
306 | {
307 | "title": "G.E.M.鄧紫棋【唯一 Only One】LIVE現場版 (時光音樂會 · 老友記 EP.4)",
308 | "link": "https://www.youtube.com/watch?v=xXr4Z7HAZCE"
309 | },
310 | {
311 | "title": "飛兒樂團 F.I.R. - I remember (official 高畫質HD官方完整版MV)",
312 | "link": "https://www.youtube.com/watch?v=I0jziPqZLX8"
313 | },
314 | {
315 | "title": "G.E.M.鄧紫棋【句號 Full Stop】LIVE現場版 (時光音樂會 · 老友記 EP.1)",
316 | "link": "https://www.youtube.com/watch?v=lRAu2VG25js"
317 | },
318 | {
319 | "title": "灰色的雨",
320 | "link": "https://www.youtube.com/watch?v=Lc1DED7GVqw"
321 | },
322 | {
323 | "title": "【按CC打開字幕】G.E.M.鄧紫棋 - 唯一(原唱:告五人)@2023煥新計劃《T.I.M.E.》EP 第二首",
324 | "link": "https://www.youtube.com/watch?v=Zv5vimlmasE"
325 | },
326 | {
327 | "title": "想忘了所有",
328 | "link": "https://www.youtube.com/watch?v=j-Ye6DXiwO0"
329 | },
330 | {
331 | "title": "太过神秘",
332 | "link": "https://www.youtube.com/watch?v=ZahX2Vfblg8"
333 | },
334 | {
335 | "title": "Nicky/前男友 -《爱情是无法理解的现象》 【我要喝好多好多的酒,把爱都吐进这垃圾桶,这一杯全世界最烈的酒,敬那些相信着爱情的狗,我是选项E 是plan B。 】 动态音乐/lyric music",
336 | "link": "https://www.youtube.com/watch?v=QmMkvHyRjE4"
337 | },
338 | {
339 | "title": "張敬軒 - 斷點",
340 | "link": "https://www.youtube.com/watch?v=eq1VWTE_iDI"
341 | },
342 | {
343 | "title": "南西肯恩 NeciKen〈大海 Ocean〉Official Music Video",
344 | "link": "https://www.youtube.com/watch?v=exVEN7hlqBg"
345 | },
346 | {
347 | "title": "康士坦的變化球 KST-美好的事可不可以發生在我身上 Lucky As You (Official Music Video)",
348 | "link": "https://www.youtube.com/watch?v=n7xF4UYrkq8"
349 | },
350 | {
351 | "title": "南西肯恩 NeciKen〈我也曾經想過這樣殺了我自己 Once I Thought of Leaving〉Official Music Video",
352 | "link": "https://www.youtube.com/watch?v=aT6056Eb11I"
353 | },
354 | {
355 | "title": "蕭秉治 Xiao Bing Chih [ 可不可以別做他的情人 Singing For You ] Official Music Video",
356 | "link": "https://www.youtube.com/watch?v=bFJbrfMEU_Y"
357 | },
358 | {
359 | "title": "伍佰 Wu Bai&China Blue【痛哭的人 The person who weeps bitterly】Official Music Video",
360 | "link": "https://www.youtube.com/watch?v=P8fqHvr82-o"
361 | },
362 | {
363 | "title": "蕭瀟-握不住的他",
364 | "link": "https://www.youtube.com/watch?v=gYIrKh388jo"
365 | },
366 | {
367 | "title": "Doll",
368 | "link": "https://www.youtube.com/watch?v=nDtPSShUVYc"
369 | },
370 | {
371 | "title": "My Stupid Heart - Walk off the Earth (Ft. Luminati Suns) Official Video",
372 | "link": "https://www.youtube.com/watch?v=1UJpFahphko"
373 | },
374 | {
375 | "title": "九九 Sophie Chen -【再陪我一個夏天】 Another Summer 地獄里長 插曲 Official MV",
376 | "link": "https://www.youtube.com/watch?v=CzIVcGvnpgM"
377 | },
378 | {
379 | "title": "林俊傑 - 握不住的他",
380 | "link": "https://www.youtube.com/watch?v=Ks9aqEOpPXU"
381 | },
382 | {
383 | "title": "OneRepublic - If I Lose Myself",
384 | "link": "https://www.youtube.com/watch?v=TGx0rApSk6w"
385 | },
386 | {
387 | "title": "Diana Wang 王詩安 - Somebody Else(Official Lyric Video)",
388 | "link": "https://www.youtube.com/watch?v=H5ATX5z7pvY"
389 | },
390 | {
391 | "title": "南拳媽媽(Nan Quan Mama)-妳不像她 Ni Bu Xiang Ta (Official Music Video)",
392 | "link": "https://www.youtube.com/watch?v=3k8texyuDRo"
393 | },
394 | {
395 | "title": "more than words",
396 | "link": "https://www.youtube.com/watch?v=Vm3tf65-8d4"
397 | },
398 | {
399 | "title": "仗著 - 陳壹仟『妳就仗著 我對妳 那麽愛 那麽好,所以妳才 面對我 那麽驕傲』【動態歌詞】",
400 | "link": "https://www.youtube.com/watch?v=efAR_MlnQI4"
401 | },
402 | {
403 | "title": "Juice Boy《Fake》Official Video",
404 | "link": "https://www.youtube.com/watch?v=9_5HzSOGEzE"
405 | },
406 | {
407 | "title": "囧菌 - 東京不太熱「你已經淡出,在我時間軸。」[ High Quality Lyrics ] tk推薦",
408 | "link": "https://www.youtube.com/watch?v=eTFGL3rlOAs"
409 | },
410 | {
411 | "title": "王忻辰, IN-K - 回憶觀影券『最後你消失在那個雨天 你說的再見在耳邊盤旋』【動態歌詞】",
412 | "link": "https://www.youtube.com/watch?v=ghh12yhxego"
413 | },
414 | {
415 | "title": "Mariah Carey - Touch My Body (Official Music Video)",
416 | "link": "https://www.youtube.com/watch?v=9b8erWuBA44"
417 | },
418 | {
419 | "title": "一首好聽的日語歌《be with you》Tiara【中日歌詞Lyrics】",
420 | "link": "https://www.youtube.com/watch?v=2IYluY6fS44"
421 | },
422 | {
423 | "title": "LONGMAN 『spiral』Music Video(TVアニメ『無職転生Ⅱ ~異世界行ったら本気だす~』OPテーマ)",
424 | "link": "https://www.youtube.com/watch?v=fE9trKOuT3Q"
425 | },
426 | {
427 | "title": "Martin Garrix & David Guetta - So Far Away (Official Video) feat. Jamie Scott & Romy Dya",
428 | "link": "https://www.youtube.com/watch?v=o7iL2KzDh38"
429 | },
430 | {
431 | "title": "【MOMOLAND X CHROMANCE】 Wrap Me In Plastic (中字MV)",
432 | "link": "https://www.youtube.com/watch?v=8vN96QpSfWs"
433 | },
434 | {
435 | "title": "崎山蒼志 Soushi Sakiyama / 燈 Akari [Official Music Video]",
436 | "link": "https://www.youtube.com/watch?v=4jWzGkRsHw8"
437 | },
438 | {
439 | "title": "【中日翻譯/歌詞】無職轉生 第二季 OP「Longman - Spiral」(無職転生 Season 2 Full Opening OP)【JP/Eng/中/Romaji Lyrics 歌詞】",
440 | "link": "https://www.youtube.com/watch?v=t6KMFNHTsaU"
441 | },
442 | {
443 | "title": "DP 龍豬/王雲宏/陷阱表哥 - 翠花「沒收到你的消息我會傷心聽了村長說你要相親 」【動態歌詞/PinyinLyrics】♪",
444 | "link": "https://www.youtube.com/watch?v=fbFucBKdiwA"
445 | },
446 | {
447 | "title": "張遠 - 嘉賓【高音質|動態歌詞Lyrics】♫『感謝你特別邀請,來見證你的愛情。』Zhang Yuan-Khách",
448 | "link": "https://www.youtube.com/watch?v=jPzkNvWOcGc"
449 | },
450 | {
451 | "title": "信徒 - 張衛健『如果我們不曾看過對方這麼苦』【動態歌詞Lyrics】",
452 | "link": "https://www.youtube.com/watch?v=B0LfRStmDOM"
453 | },
454 | {
455 | "title": "\"Where Did U Go\" [MV] - G.E.M. 鄧紫棋",
456 | "link": "https://www.youtube.com/watch?v=9k_qrnQpwR8"
457 | },
458 | {
459 | "title": "J.YosH - 《籠中鳥》(Official Audio)",
460 | "link": "https://www.youtube.com/watch?v=ApGpxNxZizQ"
461 | },
462 | {
463 | "title": "林俊傑 JJ Lin《交換餘生 No Turning Back》Official Music Video",
464 | "link": "https://www.youtube.com/watch?v=mNQwhIx_0CM"
465 | },
466 | {
467 | "title": "【纯享】妙莎Miusa 王雨霃《交换余生》宿命感拉满 平行时空的爱恋纠葛让人动容 |《青年π计划》第7期 | Youth π Plan Stage Pure Version | Mango TV",
468 | "link": "https://www.youtube.com/watch?v=sWOpVJnotrA"
469 | },
470 | {
471 | "title": "告五人 Accusefive【帶我去找夜生活 Night life.Take us to the light】Official Music Video",
472 | "link": "https://www.youtube.com/watch?v=W9Fq1HC_5hg"
473 | },
474 | {
475 | "title": "Karencici – Everybody Loves Me ft.高爾宣 OSN (Visualizer)",
476 | "link": "https://www.youtube.com/watch?v=Lqbm13zHMsg"
477 | },
478 | {
479 | "title": "Kelly Yu 于文文《Want You Back》Official Music Video",
480 | "link": "https://www.youtube.com/watch?v=vJT9oIIcVZ0"
481 | },
482 | {
483 | "title": "【纯享版】没有人能拒绝玩摇滚的于文文!合作小鬼王琳凯一曲《带我去找夜生活》瞬间燃炸舞台! #天赐的声音4 EP1 20230428",
484 | "link": "https://www.youtube.com/watch?v=xzvdupWRTFY"
485 | },
486 | {
487 | "title": "MIUSA - “忘了眼淚” M/V",
488 | "link": "https://www.youtube.com/watch?v=zp_vEg50suQ"
489 | },
490 | {
491 | "title": "【纯享】妙莎《就让这大雨全都落下》听哭了!一袭白裙水中起舞太绝了! |《青年π计划》第5期 | Youth π Plan Stage Pure Version | Mango TV",
492 | "link": "https://www.youtube.com/watch?v=lXnwo9iqARM"
493 | },
494 | {
495 | "title": "FAST X | G Herbo, 24kGoldn, Kane Brown - My City (Official Audio)",
496 | "link": "https://www.youtube.com/watch?v=yV-dU5_9HcQ"
497 | },
498 | {
499 | "title": "FAST X | YG, Ty Dolla $ign, Lambo4oe - Let's Ride (Official Audio)",
500 | "link": "https://www.youtube.com/watch?v=UYopFD8kQUI"
501 | },
502 | {
503 | "title": "纯享丨宝石Gem一首《年轻的窦唯》再证实力 全新舞台太震撼引全场尖叫 | 中国说唱巅峰对决 EP1 花絮CLIP | iQIYI精选",
504 | "link": "https://www.youtube.com/watch?v=Ogm_NnTNCkM"
505 | },
506 | {
507 | "title": "寶石Gem《野狼Disco》官方高畫質 Official HD MV | Disco Alaskan Wolves",
508 | "link": "https://www.youtube.com/watch?v=TWm31xbRVjI"
509 | },
510 | {
511 | "title": "阿跨面 - 陷眠|純享版|EP12 SEMI FINALS 名列前茅",
512 | "link": "https://www.youtube.com/watch?v=kKBUgVHhWrA"
513 | },
514 | {
515 | "title": "ずっと真夜中でいいのに。『不法侵入』MV (ZUTOMAYO – Intrusion)",
516 | "link": "https://www.youtube.com/watch?v=SAdkxVFyAyc"
517 | },
518 | {
519 | "title": "晚风告白 (加速版)",
520 | "link": "https://www.youtube.com/watch?v=dEc1qyI0EA0"
521 | },
522 | {
523 | "title": "星野 - 晚風告白『我遇見很多人卻只想和你慢慢周旋,完全對的感覺在 心動蔓延。』【高音質|動態歌詞Lyrics】♫",
524 | "link": "https://www.youtube.com/watch?v=VIRQg8d8HvM"
525 | },
526 | {
527 | "title": "Wild Tik Tok - Monogem | 抖音神曲",
528 | "link": "https://www.youtube.com/watch?v=xLK57q6ylJI"
529 | },
530 | {
531 | "title": "Follow(羅生門)- 梨凍緊 / Wiz_H張子豪『我們看慣了世間的羅生門,變得好像陌生人』【動態歌詞】",
532 | "link": "https://www.youtube.com/watch?v=2utdIHMmC3Y"
533 | },
534 | {
535 | "title": "张子豪 Wiz_H - 一般的一天 『一般的一天一般的一晚,一般的失眠到一栋楼的灯只下剩一盏。』【动态歌词/Pinyin Lyrics】[说唱听我的2]",
536 | "link": "https://www.youtube.com/watch?v=tIPP18Q0r08"
537 | },
538 | {
539 | "title": "纯享:Wiz_H张子豪《说唱入门教学2.0》专业教学现场 | #中国说唱巅峰对决2023 EP3 THE RAP OF CHINA| iQIYI精选",
540 | "link": "https://www.youtube.com/watch?v=PP5SezdIsbs"
541 | },
542 | {
543 | "title": "開口跪!女聲一出,瞬間感覺心靈都治癒了! ——《花降らし》 pazi",
544 | "link": "https://www.youtube.com/watch?v=5veZ_PcaFYM"
545 | },
546 | {
547 | "title": "【纯享版】当京剧唱腔遇上热血Rap!GAI周延&刘柏辛《三国恋》完美演绎跨越时空的音乐魅力! #天赐的声音4 EP4",
548 | "link": "https://www.youtube.com/watch?v=Y1gEUPuy7cI"
549 | },
550 | {
551 | "title": "I Wanna Be (Original Mix) - Erok (Kain Release) ♪ || 抖音 ·|· TikTok",
552 | "link": "https://www.youtube.com/watch?v=n2pfECO4YL4"
553 | },
554 | {
555 | "title": "I Wanna Be - eRok [w/ lyrics]",
556 | "link": "https://www.youtube.com/watch?v=I5InCfs6W_U"
557 | },
558 | {
559 | "title": "异地恋 ‖ ZAVIS/坤木Joymo 『我每天问一百次如何才能逃出生天』【动态歌词版Lyrics】",
560 | "link": "https://www.youtube.com/watch?v=IbjM-AXSfVw"
561 | },
562 | {
563 | "title": "[MV] 陳華 HuaChen【想和你看五月的晚霞 Sunset In May】feat. LCY呂植宇 | Official Music Video",
564 | "link": "https://www.youtube.com/watch?v=ljd9ISixsWo"
565 | },
566 | {
567 | "title": "《我會等》Cover By 魚閃閃BLING ||『我會等枯樹生出芽開出新的花 等著陽光刺破黑暗第一縷朝霞』#我會等 #承桓 #魚閃閃路演 #魚閃閃 #魚閃閃bling",
568 | "link": "https://www.youtube.com/watch?v=nmM-hLgJt7s"
569 | },
570 | {
571 | "title": "周杰倫 Jay Chou【黑色毛衣 Black Sweater】-Official Music Video",
572 | "link": "https://www.youtube.com/watch?v=bX33UI9ZPLk"
573 | },
574 | {
575 | "title": "高爾宣OSN ft.李浩瑋 Howard Lee-Drowning (Official Music Video)",
576 | "link": "https://www.youtube.com/watch?v=v32e9oWC29s"
577 | },
578 | {
579 | "title": "莫文蔚 Karen Mok【忽然之間 Suddenly】Official Music Video",
580 | "link": "https://www.youtube.com/watch?v=h1tNw1aFzSM"
581 | },
582 | {
583 | "title": "TVアニメ『Dr.STONE NEW WORLD』第1クールED<Where Do We Go?>ノンクレジット映像",
584 | "link": "https://www.youtube.com/watch?v=9B7TpqDgyE4"
585 | },
586 | {
587 | "title": "【Lara梁心頤】Where Do We Go (中文版) 官方Official Music Video",
588 | "link": "https://www.youtube.com/watch?v=2mh29oiBZTg"
589 | },
590 | {
591 | "title": "莎夏斯隆 Sasha Sloan / 與你的靈魂共舞 Dancing With Your Ghost (中字MV)",
592 | "link": "https://www.youtube.com/watch?v=79RLkH3T8hg"
593 | },
594 | {
595 | "title": "Belinda - Colorblind (Audio)",
596 | "link": "https://www.youtube.com/watch?v=Fl6KWh6DWYo"
597 | },
598 | {
599 | "title": "Mokita - colorblind (Lyrics)",
600 | "link": "https://www.youtube.com/watch?v=KWIpD1ZMqOg"
601 | },
602 | {
603 | "title": "Canyon City - \"Catch Fire\" (Lyric Video)",
604 | "link": "https://www.youtube.com/watch?v=Eq3aPKp9wFs"
605 | },
606 | {
607 | "title": "Gummy B - LOVE MYSELF",
608 | "link": "https://www.youtube.com/watch?v=C2hO8qV5c2c"
609 | },
610 | {
611 | "title": "【中英字幕】Ina-I wanted you 是你就好",
612 | "link": "https://www.youtube.com/watch?v=Vwl4orXWnTs"
613 | },
614 | {
615 | "title": "Paula DeAnda - Why Would I Ever [ lyric ]",
616 | "link": "https://www.youtube.com/watch?v=38JY19yV4Ro"
617 | },
618 | {
619 | "title": "MK - 我好喜歡妳但妳卻不知道 (prod. cobwxb)",
620 | "link": "https://www.youtube.com/watch?v=fOEnccaZuIM"
621 | },
622 | {
623 | "title": "艾蜜莉AMILI, 史蒂芬 SteeVen - 夢一場|純享版|EP7 BLOCK TO BLOCK 區域對決 (下)",
624 | "link": "https://www.youtube.com/watch?v=q8zlPvWQBoo"
625 | },
626 | {
627 | "title": "Talking To The Moon X PlayDate (Bruno Mars)",
628 | "link": "https://www.youtube.com/watch?v=WXIBwIcBR2Y"
629 | },
630 | {
631 | "title": "GAYLE - abcdefu (Official Music Video)",
632 | "link": "https://www.youtube.com/watch?v=NaFd8ucHLuo"
633 | },
634 | {
635 | "title": "Lukas Graham - 7 Years [Official Music Video]",
636 | "link": "https://www.youtube.com/watch?v=LHCob76kigA"
637 | },
638 | {
639 | "title": "Just So You Know",
640 | "link": "https://www.youtube.com/watch?v=R36xGZMoz5Q"
641 | },
642 | {
643 | "title": "The Script - Hall of Fame (Official Video) ft. will.i.am",
644 | "link": "https://www.youtube.com/watch?v=mk48xRzuNvA"
645 | },
646 | {
647 | "title": "劉大拿/Aioz - 罵醒我·2022(原唱:周湯豪)『Babe能不能抓住我,當我的心被搞亂了,當我又笨得要逃走。』【動態歌詞/Vietsub/Pinyin Lyrics】",
648 | "link": "https://www.youtube.com/watch?v=mp7p-48qp_4"
649 | },
650 | {
651 | "title": "Marz23 x ØZI【情勒 GASLIGHT】(Official Video)",
652 | "link": "https://www.youtube.com/watch?v=9K7igKasYL4"
653 | },
654 | {
655 | "title": "こはならむ 「リセットボタン」 Official Music Video",
656 | "link": "https://www.youtube.com/watch?v=EXI_uJwST8o"
657 | },
658 | {
659 | "title": "MK - 又再一次...妳讓我輸得徹底 (prod. cløud x jkei)",
660 | "link": "https://www.youtube.com/watch?v=o9AvdPfRdFE"
661 | },
662 | {
663 | "title": "柯有綸 Alan Kuo - 零",
664 | "link": "https://www.youtube.com/watch?v=kgDL9p0w2-k"
665 | },
666 | {
667 | "title": "范逸臣 Van Fan《Love Story》官方MV (Official Music Video)",
668 | "link": "https://www.youtube.com/watch?v=n1hkM-tCWJM"
669 | },
670 | {
671 | "title": "派偉俊 Patrick Brasca【Don't Wanna Lie】(ft. 8lak, Hosea) Official MV",
672 | "link": "https://www.youtube.com/watch?v=P9NVjak9vH4"
673 | },
674 | {
675 | "title": "Turn into Fireworks and Fall for You",
676 | "link": "https://www.youtube.com/watch?v=iD3b3tFbmHw"
677 | },
678 | {
679 | "title": "TRASH《終究還是因為愛 LOVE》Live in LA (Official Music Video)",
680 | "link": "https://www.youtube.com/watch?v=zPupYkCIMBU"
681 | },
682 | {
683 | "title": "Bu$Y & Ye!!ow , Paper Jim - 【戀曲2020 LOVE SONG 2020】Chapter 1 (Official Music Video)",
684 | "link": "https://www.youtube.com/watch?v=2oZr3uv_ddc"
685 | },
686 | {
687 | "title": "Bu$Y & Ye!!ow , Paper Jim - 【沒注意到你在流眼淚】Starring:鄭人碩、莫允雯(Official Music Video)",
688 | "link": "https://www.youtube.com/watch?v=asENVVLjAeo"
689 | },
690 | {
691 | "title": "TRASH 《離開台北 LEAVING TAIPEI》 Official Music Video",
692 | "link": "https://www.youtube.com/watch?v=T_AFMCpQgkI"
693 | },
694 | {
695 | "title": "Marz23 -【那種人 That Kind of Person】Live At Legacy 專輯演唱會",
696 | "link": "https://www.youtube.com/watch?v=H_e2LYU1a3w"
697 | },
698 | {
699 | "title": "Whales & ggnoaa - Paranoia [NCS Release]",
700 | "link": "https://www.youtube.com/watch?v=y_oYnDqYPtw"
701 | },
702 | {
703 | "title": "はなびら / 奥華子 full covered by 春茶",
704 | "link": "https://www.youtube.com/watch?v=QGcfH2Y2bSQ"
705 | },
706 | {
707 | "title": "【TRUE】「rebind」Music Video(TVアニメ『もののがたり』EDテーマ)",
708 | "link": "https://www.youtube.com/watch?v=4h7up5zbkac"
709 | },
710 | {
711 | "title": "有些 - 有声有社『我就算不舍也要趁早去果断 ,我们都留在美丽的经年 。』【動態歌詞Lyrics】",
712 | "link": "https://www.youtube.com/watch?v=GgbFhfrE5dY"
713 | },
714 | {
715 | "title": "【動態歌詞 Lyrics】喵了個咪─無人可偷 |冷門歌曲分享♪♪♪",
716 | "link": "https://www.youtube.com/watch?v=JWUZg1z-R-M"
717 | },
718 | {
719 | "title": "不舍-任然",
720 | "link": "https://www.youtube.com/watch?v=P5AoS6YSaco"
721 | },
722 | {
723 | "title": "莫宰羊 - 孤星淚 ft. Karencici * M/V",
724 | "link": "https://www.youtube.com/watch?v=111PWwyHZnI"
725 | },
726 | {
727 | "title": "有声有社 - 不多",
728 | "link": "https://www.youtube.com/watch?v=DiEanGsdp7Q"
729 | },
730 | {
731 | "title": "小賤 Dry (歌詞版)",
732 | "link": "https://www.youtube.com/watch?v=nH1vuPZEHwY"
733 | },
734 | {
735 | "title": "苗田雨 - 會不會想我【高音質|動態歌詞Lyrics】♫『你會怎樣想我 還是當作沒發生過,只是求你別吵醒了我。』",
736 | "link": "https://www.youtube.com/watch?v=oor4cwwTdaw"
737 | },
738 | {
739 | "title": "JiaJia家家【填空】-三立九點華劇「真愛趁現在」插曲",
740 | "link": "https://www.youtube.com/watch?v=9Y15es8OY0U"
741 | },
742 | {
743 | "title": "Marz23 ft.W.LIN -【Everything】Official Music Video",
744 | "link": "https://www.youtube.com/watch?v=u9tO9eyU6n0"
745 | },
746 | {
747 | "title": "Marz23 -【I HATE YOU】Official Music Video",
748 | "link": "https://www.youtube.com/watch?v=E_Wl23yvQjQ"
749 | },
750 | {
751 | "title": "王冕 - 勉為其難『如果不愛了就別勉為其難。』【動態歌詞Lyrics】",
752 | "link": "https://www.youtube.com/watch?v=WbpUBiUdnXM"
753 | },
754 | {
755 | "title": "FUCK IT",
756 | "link": "https://www.youtube.com/watch?v=6w8dIKv8pNs"
757 | },
758 | {
759 | "title": "吳霏 FEI -【起點 OUTSET】(feat. @ivylee1912 ) Official Music Video",
760 | "link": "https://www.youtube.com/watch?v=EsPZ0Ullb4c"
761 | },
762 | {
763 | "title": "Eric周興哲 × 單依純《愛我的時候 When You Loved Me》Official Music Video",
764 | "link": "https://www.youtube.com/watch?v=bG563p_moiE"
765 | },
766 | {
767 | "title": "Melo-D - Just Say Hello(《請先說你好》英文版)【動態歌詞/Vietsub Lyrics】",
768 | "link": "https://www.youtube.com/watch?v=O8rjNfYXq3I"
769 | },
770 | {
771 | "title": "Jesse McCartney - Just So You Know (Lyrics)",
772 | "link": "https://www.youtube.com/watch?v=NCBuE-_kB-k"
773 | },
774 | {
775 | "title": "Taylor Swift - Love Story",
776 | "link": "https://www.youtube.com/watch?v=8xg3vE8Ie_E"
777 | },
778 | {
779 | "title": "Marz23 & W.LIN \"Everything\" LIVE IN TAIPEI 2020 (Official Video)",
780 | "link": "https://www.youtube.com/watch?v=BHm6P3uTvTY"
781 | },
782 | {
783 | "title": "FY_Aoneone奉悅 - 低調女孩 (official audio)",
784 | "link": "https://www.youtube.com/watch?v=5DlMBmAzeQc"
785 | },
786 | {
787 | "title": "任舒瞳 - 對號入座「明知道你的簽名寫的不是為了我,而我卻自欺欺人的對號入座」【動態歌詞/pīn yīn gē cí】",
788 | "link": "https://www.youtube.com/watch?v=cIaRhKrWbnk"
789 | },
790 | {
791 | "title": "[Lyrics] Rosa Walton & Hallie Coggins - I Really Want to Stay at Your House (Cover by 任舒瞳) - DouYin",
792 | "link": "https://www.youtube.com/watch?v=6gvED2vDN4U"
793 | },
794 | {
795 | "title": "ROSA WALTON & HALLIE COGGINS - I REALLY WANT TO STAY AT YOUR HOUSE (LYRIC) AMV CYBERPUNK EDGERUNNERS",
796 | "link": "https://www.youtube.com/watch?v=q74fX9CnqtQ"
797 | },
798 | {
799 | "title": "蔡健雅 - Letting Go『I'm letting go 我终于舍得为你放开手,因为爱你爱到我心痛。』【動態歌詞】♪",
800 | "link": "https://www.youtube.com/watch?v=In0cTkWF9WA"
801 | },
802 | {
803 | "title": "蔡健雅 Tanya Chua - Letting Go 官方MV完整放映",
804 | "link": "https://www.youtube.com/watch?v=116OjLa1DwY"
805 | },
806 | {
807 | "title": "TRASH《希望你回來 I Don’t Wanna Say Goodbye》Live Session #4",
808 | "link": "https://www.youtube.com/watch?v=1ONloySyBwA"
809 | },
810 | {
811 | "title": "TRASH -《綻放》(Official Music Video)",
812 | "link": "https://www.youtube.com/watch?v=ywAEgYPAI1U"
813 | },
814 | {
815 | "title": "Breathe《喘息》- Lauv中文字幕∥ MattRouseMusic Cover",
816 | "link": "https://www.youtube.com/watch?v=qFDB57T_5BM"
817 | },
818 | {
819 | "title": "Rosie楊凱琳&余楓《怎麼還不愛 Why Not Love》Official Music Video",
820 | "link": "https://www.youtube.com/watch?v=3q6D0wMX_H0"
821 | },
822 | {
823 | "title": "高爾宣 OSN -【Why You Gonna Lie】|Official MV",
824 | "link": "https://www.youtube.com/watch?v=nEpF6ISYdM0"
825 | },
826 | {
827 | "title": "space x - 身後【動態歌詞】「在人潮擁擠的以後 你是否還能在我身後」♪",
828 | "link": "https://www.youtube.com/watch?v=to7w5XvTRVE"
829 | },
830 | {
831 | "title": "隨性 Random 《想你點煙》Official Music Video",
832 | "link": "https://www.youtube.com/watch?v=m60hjpNtq5k"
833 | },
834 | {
835 | "title": "告五人 Accusefive [ 唯一 The One And Only ] Official Music Video (三立/台視戲劇【戀愛是科學】插曲)",
836 | "link": "https://www.youtube.com/watch?v=vxucCfcMFCk"
837 | },
838 | {
839 | "title": "阿密特/張惠妹 - 血腥愛情故事(歌詞版)",
840 | "link": "https://www.youtube.com/watch?v=-YtsnlPvPt8"
841 | },
842 | {
843 | "title": "Cash Cash - Hero feat. Christina Perri [Official Audio]",
844 | "link": "https://www.youtube.com/watch?v=iafxqkKZacA"
845 | },
846 | {
847 | "title": "(輕電音)Lost Kings - Quit You 拒絕你",
848 | "link": "https://www.youtube.com/watch?v=_3Pez_j2w88"
849 | },
850 | {
851 | "title": "電影神話主題曲-無盡的愛(金喜善&成龍)",
852 | "link": "https://www.youtube.com/watch?v=BxmtNCoQNNI"
853 | },
854 | {
855 | "title": "【女性が歌う】灰色と青+菅田将暉/米津玄師(Covered by コバソロ & 春茶)",
856 | "link": "https://www.youtube.com/watch?v=9nCkUgTO5x4"
857 | },
858 | {
859 | "title": "ウォルピスカーター MV 『泥中に咲く』",
860 | "link": "https://www.youtube.com/watch?v=40dJS_LC6S8"
861 | },
862 | {
863 | "title": "一首好聽的日語歌——《カルデラ》黒木渚",
864 | "link": "https://www.youtube.com/watch?v=cXeo2yn22z0"
865 | },
866 | {
867 | "title": "Jay Park X 1MILLION / 'All I Wanna Do (K) (feat. Hoody & Loco)' [Choreography Version]",
868 | "link": "https://www.youtube.com/watch?v=lT7Q93fy1us"
869 | },
870 | {
871 | "title": "李杰明 W.M.L -【炙愛 feat. 陳忻玥 Vicky Chen】Fiery Love | Official MV",
872 | "link": "https://www.youtube.com/watch?v=1rBm0uSp73w"
873 | },
874 | {
875 | "title": "周杰倫 Jay Chou【說好不哭 Won't Cry (with 五月天阿信 Mayday Ashin)】Official MV",
876 | "link": "https://www.youtube.com/watch?v=HK7SPnGSxLM"
877 | },
878 | {
879 | "title": "李杰明 W.M.L x 陳忻玥 Vicky Chen【I'm Alive】Official MV",
880 | "link": "https://www.youtube.com/watch?v=dtVR0oi_N4U"
881 | },
882 | {
883 | "title": "Fiction",
884 | "link": "https://www.youtube.com/watch?v=Nqcj292A1ic"
885 | },
886 | {
887 | "title": "王傑 - 我忘了怎麼哭『我忘了怎麼哭 卻痛到深處』【動態歌詞Lyrics】",
888 | "link": "https://www.youtube.com/watch?v=dO1ZivuptZE"
889 | },
890 | {
891 | "title": "摩登兄弟劉宇寧 - 尋一個你 【電視劇《蒼蘭訣 Love Between Fairy and Devil》溫情主題曲】「縱天下負盡 不負你」♪【動態歌詞】♪",
892 | "link": "https://www.youtube.com/watch?v=bUZaZrce7Sg"
893 | },
894 | {
895 | "title": "【梭哈樂團ShowHand】《想回家》Official Lyrics Video",
896 | "link": "https://www.youtube.com/watch?v=JzRWcC34omY"
897 | },
898 | {
899 | "title": "Fifth Harmony - Worth It (Official Video) ft. Kid Ink",
900 | "link": "https://www.youtube.com/watch?v=YBHQbu5rbdQ"
901 | },
902 | {
903 | "title": "對不起,現在的我真的好想,逃離這一切...【中文翻譯】",
904 | "link": "https://www.youtube.com/watch?v=xhLYAQZbwbc"
905 | },
906 | {
907 | "title": "陳卓 Jon Chen 【愚人節 All Fool's Day】Official Music Video",
908 | "link": "https://www.youtube.com/watch?v=sKjaWbfx2No"
909 | },
910 | {
911 | "title": "張小伙, 粥粥zxr - 時間畫的線♪『某一種熟悉的味道被收藏』【動態歌詞Lyrics】",
912 | "link": "https://www.youtube.com/watch?v=wQWn-dTIfm0"
913 | },
914 | {
915 | "title": "VH (Vast & Hazy) 【與浪之間 Waves】 Official Music Video",
916 | "link": "https://www.youtube.com/watch?v=10DHUqSVu6I"
917 | },
918 | {
919 | "title": "GTO - ending 1 full ( _Last Piece_ ) by Kirari",
920 | "link": "https://www.youtube.com/watch?v=xIoV3hdRucY"
921 | },
922 | {
923 | "title": "回憶鬼冢老師的歌曲!【麻辣教師 GTO 片尾曲 - Last Piece】中日羅馬拼音 歌詞",
924 | "link": "https://www.youtube.com/watch?v=wRPmjIxYc74"
925 | },
926 | {
927 | "title": "See Tình (Cucak Remix DJ抖音版) - Hoàng Thùy Linh『叮叮当当 Tình tình tình tang tang tính。』【動態歌詞】♪",
928 | "link": "https://www.youtube.com/watch?v=E1PIqgTltVA"
929 | },
930 | {
931 | "title": "IN-K & 王忻辰 - 迷失幻境 (DJ版)「没来得及说抱歉,你已经不在身边」【動態歌詞/pīn yīn gē cí】",
932 | "link": "https://www.youtube.com/watch?v=TkaGkTb_Twg"
933 | },
934 | {
935 | "title": "直球 (โต๊ะริม (Melt)心動版) - yihuik苡慧『喜歡攢了好久 打出這一記直球,心動打敗害羞 想大聲 對妳說 ,陪我吹風的妳 比風溫柔』【動態歌詞】",
936 | "link": "https://www.youtube.com/watch?v=bVJoMiXOiFk"
937 | },
938 | {
939 | "title": "Yiruma - River Flows in You - Violin Cover",
940 | "link": "https://www.youtube.com/watch?v=KjJ_zKUt0KE"
941 | },
942 | {
943 | "title": "【歌词】张芸京 - 偏爱 《仙剑奇侠传三》插曲/原唱",
944 | "link": "https://www.youtube.com/watch?v=qlZ1s-NQthQ"
945 | },
946 | {
947 | "title": "彭席彥/Franky弗蘭奇 - 再見莫妮卡『月光溫柔纏綿 迷霧模糊你的臉,教唆蜜語甜言。』【動態歌詞Lyrics】",
948 | "link": "https://www.youtube.com/watch?v=zFZALG0Y5L0"
949 | },
950 | {
951 | "title": "Theseus 忒修斯 【半衰期】Feat. 許時 Official Music Video",
952 | "link": "https://www.youtube.com/watch?v=-6xZeVqpTXs"
953 | },
954 | {
955 | "title": "Control T 〈來自我自己〉Demo",
956 | "link": "https://www.youtube.com/watch?v=Fgc6ZIe88F0"
957 | },
958 | {
959 | "title": "Diana Wang 王詩安 - Make You Feel (Official Music Video)",
960 | "link": "https://www.youtube.com/watch?v=JxDVQI9885Q"
961 | },
962 | {
963 | "title": "Diana Wang (王詩安) - Poem (一步成詩) Official Music Video",
964 | "link": "https://www.youtube.com/watch?v=iE-buimT8KQ"
965 | },
966 | {
967 | "title": "Diana Wang (王詩安) - HOME (Official Music Video)",
968 | "link": "https://www.youtube.com/watch?v=mrEee4bhc7Y"
969 | },
970 | {
971 | "title": "【Ado】風のゆくえ(ウタ from ONE PIECE FILM RED)",
972 | "link": "https://www.youtube.com/watch?v=YO-rXgQKlF8"
973 | },
974 | {
975 | "title": "Faye詹雯婷 - 訣愛【電視劇《蒼蘭訣 Love Between Fairy and Devil》燃愛主題曲】「無處安放靈魂 只能降落」♪【動態歌詞】♪",
976 | "link": "https://www.youtube.com/watch?v=I4lonGT1PYM"
977 | },
978 | {
979 | "title": "Boku no Ita Jikan Instrumental OST/BGM - やわらかな光 (Humming)",
980 | "link": "https://www.youtube.com/watch?v=C8yG9D8lz6g"
981 | },
982 | {
983 | "title": "蕭亞軒 Elva Hsiao - 類似愛情 Similar to Love (官方完整版MV)",
984 | "link": "https://www.youtube.com/watch?v=nlejjTDgHBg"
985 | },
986 | {
987 | "title": "蕭亞軒 Elva Hsiao - 最熟悉的陌生人 The Most Familiar Stranger (官方完整版MV)",
988 | "link": "https://www.youtube.com/watch?v=C5mI0TqrJ-4"
989 | },
990 | {
991 | "title": "蕭亞軒 Elva Hsiao - U Make Me Wanna feat. Blue ( 官方完整版MV)",
992 | "link": "https://www.youtube.com/watch?v=hNqFD-cGkeo"
993 | },
994 | {
995 | "title": "周杰倫 Jay Chou【我是如此相信 I Truly Believe】(電影天火主題曲) Official MV",
996 | "link": "https://www.youtube.com/watch?v=TbFWYT9VGRk"
997 | },
998 | {
999 | "title": "倒影",
1000 | "link": "https://www.youtube.com/watch?v=XvHc_VEop7I"
1001 | },
1002 | {
1003 | "title": "粉色海洋",
1004 | "link": "https://www.youtube.com/watch?v=vEZCoe9GJFk"
1005 | },
1006 | {
1007 | "title": "錯過的煙火",
1008 | "link": "https://www.youtube.com/watch?v=wwUN9NWXcnY"
1009 | },
1010 | {
1011 | "title": "周杰倫-紅顏如霜 Lyrics 歌詞",
1012 | "link": "https://www.youtube.com/watch?v=zOC14ZNUyNY"
1013 | },
1014 | {
1015 | "title": "蕭秉治 Xiao Bing Chih [ 愛過你有多久就有多痛 Love Hurts ] Official Music Video",
1016 | "link": "https://www.youtube.com/watch?v=AoquFYC8-mk"
1017 | },
1018 | {
1019 | "title": "蕭秉治Xiao Bing Chih [ 毒藥 Addiction ] Official Music Video",
1020 | "link": "https://www.youtube.com/watch?v=rgTQYCo0WCM"
1021 | },
1022 | {
1023 | "title": "카더가든(Car the garden) - 상처는 아름다운 흔적이 되어 (환혼 OST) Alchemy of Souls OST Part 1",
1024 | "link": "https://www.youtube.com/watch?v=eiXE9zpZgQA"
1025 | },
1026 | {
1027 | "title": "周杰倫 Jay Chou【七里香 Qi-Li-Xiang】-Official Music Video",
1028 | "link": "https://www.youtube.com/watch?v=Bbp9ZaJD_eA"
1029 | },
1030 | {
1031 | "title": "心跳的證明 - 不是花火呀『你是我唯一想要的決定,每一次 再一次 你慢慢的靠近』【動態歌詞】",
1032 | "link": "https://www.youtube.com/watch?v=pzmKq-jdEAM"
1033 | },
1034 | {
1035 | "title": "小包Zerinn - 愛你「Ho Baby情話多說一點 想我就多看一眼」【動態歌詞/PinyinLyrics】♪",
1036 | "link": "https://www.youtube.com/watch?v=beY4NGKw6GA"
1037 | },
1038 | {
1039 | "title": "TANK [三國戀 Three Kingdom Love] Official Music Video",
1040 | "link": "https://www.youtube.com/watch?v=GggTls8KznY"
1041 | },
1042 | {
1043 | "title": "艾辰 - 三國戀(原唱:Tank)『在我離你遠去那一天,灰色的夢睡在我身邊,我早就該習慣沒有你的夜。』【動態歌詞/Vietsub/Pinyin Lyrics】",
1044 | "link": "https://www.youtube.com/watch?v=a07Xn012Kok"
1045 | },
1046 | {
1047 | "title": "一首好聽的日文歌--ただ声一つ(ロクデナシ)【中日字幕】",
1048 | "link": "https://www.youtube.com/watch?v=qmR8b6iCwjw"
1049 | },
1050 | {
1051 | "title": "Pink Sweat$ - At My Worst (Official Video)",
1052 | "link": "https://www.youtube.com/watch?v=8CEJoCr_9UI"
1053 | },
1054 | {
1055 | "title": "葛東琪 - 懸溺 | 抖音熱曲 | 高音質動態歌詞Lyrics",
1056 | "link": "https://www.youtube.com/watch?v=Bal2dSVM1N8"
1057 | },
1058 | {
1059 | "title": "Uu - 氣象站台『當天空突然斷了層刮起了風,卻突然想起為你撐過傘的人。』【動態歌詞Lyrics】",
1060 | "link": "https://www.youtube.com/watch?v=QyOTbSe1fjY"
1061 | },
1062 | {
1063 | "title": "|🔥抖音最火🔥 | 錦零 - 戀愛畫板 『愛情有紫色紅色藍色白色四種顏色 』【lyrics video】| Bảng Vẽ Tình Yêu - Cẩm Linh",
1064 | "link": "https://www.youtube.com/watch?v=8nrLA9CkOG0"
1065 | },
1066 | {
1067 | "title": "姚六一 - 霧裡【動態歌詞】「彩色的世界我在我的霧裡多麽清晰 他們黑白的心」♪",
1068 | "link": "https://www.youtube.com/watch?v=TbOhwtHtmF0"
1069 | },
1070 | {
1071 | "title": "小藍背心 - 我怕來者不是你(DJ版)『怕無歸期 怕會猶豫,怕來的不是你 怕沒有結局。』【動態歌詞/Vietsub/Pinyin Lyrics】",
1072 | "link": "https://www.youtube.com/watch?v=QMfG2IV9S4Y"
1073 | },
1074 | {
1075 | "title": "黃霄雲 - 星辰大海「穿過人海 別停下來 趁現在還有期待」【動態歌詞Lyrics】",
1076 | "link": "https://www.youtube.com/watch?v=6tk9jlKo8y4"
1077 | },
1078 | {
1079 | "title": "王以諾 - 致00後的預防針「如果你是零零後 大概也成熟了吧」【動態歌詞/PinyinLyrics】♪",
1080 | "link": "https://www.youtube.com/watch?v=8h38qyC0sx0"
1081 | },
1082 | {
1083 | "title": "海市蜃楼-三叔『So calm down梦里海市云霞 梦外羽化成她海上楼月镜中花』动态歌词lyrics 高音质",
1084 | "link": "https://www.youtube.com/watch?v=IvZgwqHyvuk"
1085 | },
1086 | {
1087 | "title": "隊長YoungCaptain - 哪裡都是你【動態歌詞】「你想要的是現在 而不是那遙遠的未來」♪",
1088 | "link": "https://www.youtube.com/watch?v=R46qc7jopF4"
1089 | },
1090 | {
1091 | "title": "程jiajia - 好想抱住你『我也可以把你當作從沒來過,被一筆帶過 想太多沒結果。』【動態歌詞/Vietsub/Pinyin Lyrics】",
1092 | "link": "https://www.youtube.com/watch?v=Iz5bJbWH7RA"
1093 | },
1094 | {
1095 | "title": "尹昔眠 - 落在生命裡的光『你是落在我世界裡的一束光,點點滴滴 都讓我嚮往。』【高音質|動態歌詞Lyrics】♫",
1096 | "link": "https://www.youtube.com/watch?v=F2nd69GiShc"
1097 | },
1098 | {
1099 | "title": "胖虎来唱歌了 - 爱丫爱丫 (Cover: by2)【動態歌詞/Lyrics Video】",
1100 | "link": "https://www.youtube.com/watch?v=D0jtEZqTNe0"
1101 | },
1102 | {
1103 | "title": "【抖音】等什麼君 - 赤伶「情字難落墨 她唱須以血來和」【動態歌詞】♪",
1104 | "link": "https://www.youtube.com/watch?v=IaqgR0e-ra0"
1105 | },
1106 | {
1107 | "title": "【戴上耳機♪一秒沉淪】愛上某個人之類的我無法做到,但是渴望被某人所愛,即使不變的昨天一直在繼續!",
1108 | "link": "https://www.youtube.com/watch?v=ePprLM8fA9c"
1109 | },
1110 | {
1111 | "title": "九九 Sophie Chen x 陳忻玥 Vicky Chen -【Fall in Love】Official MV",
1112 | "link": "https://www.youtube.com/watch?v=99OCenFFIQc"
1113 | },
1114 | {
1115 | "title": "Janji - Heroes Tonight (feat. Johnning) | Progressive House | NCS - Copyright Free Music",
1116 | "link": "https://www.youtube.com/watch?v=3nQNiWdeH2Q"
1117 | },
1118 | {
1119 | "title": "《孤勇者》(《英雄聯盟:雙城之戰》動畫劇集中文主題曲)陳奕迅 Eason Chan [Official MV]",
1120 | "link": "https://www.youtube.com/watch?v=Hlp8XD0R5qo"
1121 | },
1122 | {
1123 | "title": "九九 Sophie Chen -【500天】Official MV",
1124 | "link": "https://www.youtube.com/watch?v=B5ner2-oBGQ"
1125 | },
1126 | {
1127 | "title": "沒辦法成為你想要的",
1128 | "link": "https://www.youtube.com/watch?v=P19_1Pu2XeU"
1129 | },
1130 | {
1131 | "title": "TYSM - Normal No More (Lyrics) I don't wanna be normal no more (TikTok Song)",
1132 | "link": "https://www.youtube.com/watch?v=4azCDfMoA9Q"
1133 | },
1134 | {
1135 | "title": "[繁中/ENG] 酷龍 (클론/Clon) - 繞繞繞 (빙빙빙/Bing Bing Bing) | 中古韓流 KPop Oldies",
1136 | "link": "https://www.youtube.com/watch?v=m4vtI2uQ92k"
1137 | },
1138 | {
1139 | "title": "F.I.R. 飛兒樂團 [攻無不克Invincible ] Official Music Video (電影「獵殺T-34」中文推廣曲)",
1140 | "link": "https://www.youtube.com/watch?v=-K-HYOmYo90"
1141 | },
1142 | {
1143 | "title": "Ailee - 깨어나",
1144 | "link": "https://www.youtube.com/watch?v=_hy8FsPd_5o"
1145 | },
1146 | {
1147 | "title": "J. Cole - Crooked Smile (Video) ft. TLC",
1148 | "link": "https://www.youtube.com/watch?v=fzzMOMkjm8A"
1149 | },
1150 | {
1151 | "title": "J. Cole - Wet Dreamz",
1152 | "link": "https://www.youtube.com/watch?v=eCGV26aj-mM"
1153 | },
1154 | {
1155 | "title": "YOASOBI「夜に駆ける」 Official Music Video",
1156 | "link": "https://www.youtube.com/watch?v=x8VYWazR5mE"
1157 | },
1158 | {
1159 | "title": "理想混蛋 Bestards【愚者】Official Music Video",
1160 | "link": "https://www.youtube.com/watch?v=FYNNLjn-CuI"
1161 | },
1162 | {
1163 | "title": "小陸 VI - 寫完這首歌我就會放下你了 (Official Audio)",
1164 | "link": "https://www.youtube.com/watch?v=0KMqq10rTrM"
1165 | },
1166 | {
1167 | "title": "鑽石之心",
1168 | "link": "https://www.youtube.com/watch?v=pqO7M_TFczw"
1169 | },
1170 | {
1171 | "title": "F.I.R. 飛兒樂團 [ Someday We May Love ] 電影版 Music Video (電影《金錢男孩MONEYBOYS》主題曲)",
1172 | "link": "https://www.youtube.com/watch?v=ZiB9PE9ZWEg"
1173 | },
1174 | {
1175 | "title": "F.I.R. 飛兒樂團 - Lydia (official 官方完整版MV)",
1176 | "link": "https://www.youtube.com/watch?v=ZOHsd6Zk7DM"
1177 | },
1178 | {
1179 | "title": "F.I.R. 飛兒樂團 [ 錦繡夢 Splendid Dream ] Official Music Video",
1180 | "link": "https://www.youtube.com/watch?v=fcxNzaSQ6WM"
1181 | },
1182 | {
1183 | "title": "Miyagi - Небо (текст)",
1184 | "link": "https://www.youtube.com/watch?v=yzsVYTvdsSE"
1185 | },
1186 | {
1187 | "title": "Kaivaan - Escape (ft. Hikaru Station)",
1188 | "link": "https://www.youtube.com/watch?v=4CkZGcO3_18"
1189 | },
1190 | {
1191 | "title": "Walk off the Earth ft.D Smoke-Bet On Me『You should bet on me Like I'm Apple in the 90s』【中英lyrics】",
1192 | "link": "https://www.youtube.com/watch?v=uYSVvI6wT1Q"
1193 | },
1194 | {
1195 | "title": "【單曲】有時候你需要一首歌幫你吶喊",
1196 | "link": "https://www.youtube.com/watch?v=wHb-6P4OWXk"
1197 | },
1198 | {
1199 | "title": "恭喜你成功發現了寶藏!",
1200 | "link": "https://www.youtube.com/watch?v=fblZQ9AcHCg"
1201 | },
1202 | {
1203 | "title": "一首好聽的日語歌——《歌に形はないけれど》",
1204 | "link": "https://www.youtube.com/watch?v=id7I8rcaVnA"
1205 | },
1206 | {
1207 | "title": "敲好聽的日語歌——《black bird》ぼくのりりっくのぼうよみ",
1208 | "link": "https://www.youtube.com/watch?v=YQ6flK8ZuJM"
1209 | },
1210 | {
1211 | "title": "【戴上耳機♪一秒沉淪】那天遇上了你,從此改變了我!",
1212 | "link": "https://www.youtube.com/watch?v=2mBRwwNA8zw"
1213 | },
1214 | {
1215 | "title": "【動態歌詞】口是心非 - 夢然『在我最需要你的時候 於是愛恨交錯人消瘦』",
1216 | "link": "https://www.youtube.com/watch?v=-l3o71p3HRo"
1217 | },
1218 | {
1219 | "title": "買辣椒也用券 - 起風了 (新版)【動態歌詞Lyrics】",
1220 | "link": "https://www.youtube.com/watch?v=3tJUflhYIpo"
1221 | },
1222 | {
1223 | "title": "口是心非 (煙嗓版) - 半噸兄弟【超好無損音質】【4K】【動態歌詞】Miệng đến trái tim (Phiên bản giọng nói khói) -Half Tons Brothers",
1224 | "link": "https://www.youtube.com/watch?v=789FJzTmjsM"
1225 | },
1226 | {
1227 | "title": "Lexie Liu 刘柏辛《Manta》韩文翻唱|欧巴Studio x 幸运的Muz",
1228 | "link": "https://www.youtube.com/watch?v=riBc37EsqFs"
1229 | },
1230 | {
1231 | "title": "张惠妹《你是爱我的/나를 사랑해줘요》韩文版|欧巴Studio x 오늘맑음",
1232 | "link": "https://www.youtube.com/watch?v=I4ftvEEeg9Y"
1233 | },
1234 | {
1235 | "title": "华晨宇【好想爱这个世界啊/이 세상을 사랑하고 싶어】韩语翻唱|欧巴Studio_오빠스튜디오",
1236 | "link": "https://www.youtube.com/watch?v=4OzYF2bqdHA"
1237 | },
1238 | {
1239 | "title": "艾辰 - 錯位時空『我吹過你吹過的晚風,那我們算不算相擁。』【動態歌詞Lyrics】",
1240 | "link": "https://www.youtube.com/watch?v=mXf3Klcn-sM"
1241 | },
1242 | {
1243 | "title": "【韩文版】✨陪你看星星 - 陈子晴|COVER 아빈Kim Abin|OUBA MUSIC",
1244 | "link": "https://www.youtube.com/watch?v=ZskeF0KP4y8"
1245 | },
1246 | {
1247 | "title": "陳子晴 - 陪你看星星『想陪你翻山越嶺,想陪你追著日落看星星。』【動態歌詞Lyrics】",
1248 | "link": "https://www.youtube.com/watch?v=WIcXpNCXaLk"
1249 | },
1250 | {
1251 | "title": "陳忻玥 Vicky Chen -【Treasure】Official MV",
1252 | "link": "https://www.youtube.com/watch?v=Fmlcr4Jlx9I"
1253 | },
1254 | {
1255 | "title": "江南一夜",
1256 | "link": "https://www.youtube.com/watch?v=Qss9qbmCZ6o"
1257 | },
1258 | {
1259 | "title": "王澤科 - 告辭『我還要裝作若無其事的樣子...』【動態歌詞Lyrics】",
1260 | "link": "https://www.youtube.com/watch?v=BJaisxQbHdE"
1261 | },
1262 | {
1263 | "title": "space x - 墜落玫瑰『是否這世界太黑,只能用墜落玫瑰 I'm lost for you。』【動態Lyrics|高音質】♫",
1264 | "link": "https://www.youtube.com/watch?v=J-s_hOwkxMo"
1265 | },
1266 | {
1267 | "title": "蔡恩雨 Priscilla Abby《 不要讓我太喜歡你》官方 Official MV",
1268 | "link": "https://www.youtube.com/watch?v=UrJvkWzOyV0"
1269 | },
1270 | {
1271 | "title": "不加冰可乐 - 三妹『谈不上我有多难过, 只是觉得 有点不快乐』【動態歌詞Pinyin Lyrics】",
1272 | "link": "https://www.youtube.com/watch?v=DSG7U_8pH7Q"
1273 | },
1274 | {
1275 | "title": "樑爽涼爽 《根本你不懂得爱我/根本你不懂得愛我》『今天你笑不出』 動態歌詞",
1276 | "link": "https://www.youtube.com/watch?v=zE09-N1OKMw"
1277 | },
1278 | {
1279 | "title": "space x - 0321【動態歌詞】「在看不到的夜裡 我時刻在想你 你是否能聽清」♪",
1280 | "link": "https://www.youtube.com/watch?v=MBnU0k25O8I"
1281 | },
1282 | {
1283 | "title": "林俊傑 JJ Lin - 可惜沒如果 ( 歌詞/lyrics)",
1284 | "link": "https://www.youtube.com/watch?v=TRt4Y6c0ql0"
1285 | },
1286 | {
1287 | "title": "Greatest Strength",
1288 | "link": "https://www.youtube.com/watch?v=fyRaPGJJLwc"
1289 | },
1290 | {
1291 | "title": "【CC中日字幕】咒術迴戰 0 劇場版 ED 「逆夢」完整版 By King Gnu / Jujutsu Kaisen 0 Ending - Sakayume",
1292 | "link": "https://www.youtube.com/watch?v=j5pUc62hqkU"
1293 | },
1294 | {
1295 | "title": "TRASH【終究還是因為愛】Cover By 方晨《TC Studio》",
1296 | "link": "https://www.youtube.com/watch?v=F8h4fD7BnYE"
1297 | },
1298 | {
1299 | "title": "【梨泰院Class OST】Gaho - 開始 Beginning / Start Over【歌詞翻譯】",
1300 | "link": "https://www.youtube.com/watch?v=5229fIlU1FU"
1301 | },
1302 | {
1303 | "title": "任然 - 對不起沒關係『請你照顧好自己,相信我會忘記你。』【動態歌詞Lyrics】",
1304 | "link": "https://www.youtube.com/watch?v=HTw1ZVBOP7A"
1305 | },
1306 | {
1307 | "title": "【HD】孫藝軒 - 一不小心 [歌詞字幕][完整高清音質] ♫ Sun Yi Xuan - Accidentally",
1308 | "link": "https://www.youtube.com/watch?v=LTifgsAvGSQ"
1309 | },
1310 | {
1311 | "title": "Wake (Hillsong Young and Free) lyric video",
1312 | "link": "https://www.youtube.com/watch?v=io2WOQ-3aVs"
1313 | },
1314 | {
1315 | "title": "Kane Brown - Good as You (Official Music Video)",
1316 | "link": "https://www.youtube.com/watch?v=mS3TeZEp_PE"
1317 | },
1318 | {
1319 | "title": "林怡婕 - 習慣想你『也許是我還沒習慣身邊少了你,也許只是習慣想你 還不會暫停。』【動態歌詞/Vietsub/PInyin Lyrics】",
1320 | "link": "https://www.youtube.com/watch?v=i7-pG1r4KzQ"
1321 | },
1322 | {
1323 | "title": "血氧計 - 蒲公英「說你愛我,又墜入了星河 不由自主的搖擺著。」【Pinyin Lyrics】",
1324 | "link": "https://www.youtube.com/watch?v=N9r5RMnZ5nw"
1325 | },
1326 | {
1327 | "title": "【中日歌詞】國王排名 ED | Ranking of Kings ED | 王様ランキング ED |「Oz.」 By yama Full Ending《純粹中翻》",
1328 | "link": "https://www.youtube.com/watch?v=M9wx6duYx0Y"
1329 | },
1330 | {
1331 | "title": "Wanting 曲婉婷 - 我的歌声里 (You Exist In My Song) [Trad. Chinese] [Official Music Video]",
1332 | "link": "https://www.youtube.com/watch?v=w0dMz8RBG7g"
1333 | },
1334 | {
1335 | "title": "鞠婧祎 叹云兮 ( 芸汐传 片尾曲 )『别怨我不在身边 记住 我会在你的心里面 』 【动态歌词lyrics】 ♪MayMusicChannel♪",
1336 | "link": "https://www.youtube.com/watch?v=aGaqPKKJwOI"
1337 | },
1338 | {
1339 | "title": "TRUE「Sincerely」 MV Full Size 『ヴァイオレット・エヴァーガーデン』OP主題歌/\"violet-evergarden\" Opning Theme「Sincerely」",
1340 | "link": "https://www.youtube.com/watch?v=uwph0dv9E6U"
1341 | },
1342 | {
1343 | "title": "Free Loop by Daniel Powter Lyrics",
1344 | "link": "https://www.youtube.com/watch?v=AAPHPvMFo_Q"
1345 | },
1346 | {
1347 | "title": "Daniel Powter - Free Loop (Official Music Video)",
1348 | "link": "https://www.youtube.com/watch?v=vEY_mg2y-rg"
1349 | },
1350 | {
1351 | "title": "姚斯婷 -黃昏 【女聲版帶給你不一樣的聽覺盛宴】",
1352 | "link": "https://www.youtube.com/watch?v=KVbma4AT4iI"
1353 | },
1354 | {
1355 | "title": "周傳雄 Steve Chou - 黃昏",
1356 | "link": "https://www.youtube.com/watch?v=6ca_YHZvzls"
1357 | },
1358 | {
1359 | "title": "TRASH《超級英雄的約定 Super Hero》Live in LA (Official Music Video)",
1360 | "link": "https://www.youtube.com/watch?v=4EgTtcE3Lmc"
1361 | },
1362 | {
1363 | "title": "玖壹壹(Nine one one)-嫁給我吧 官方MV首播",
1364 | "link": "https://www.youtube.com/watch?v=UapMQdq0NB4"
1365 | },
1366 | {
1367 | "title": "TRASH《終究還是因為愛 LOVE》Official Music Video",
1368 | "link": "https://www.youtube.com/watch?v=fl1Wbd-ldMQ"
1369 | },
1370 | {
1371 | "title": "隊長YoungCaptain - 樓頂上的小斑鳩『沒能出現在你的眼前,我的悲傷被你藏在深夜。』【動態歌詞Lyrics】",
1372 | "link": "https://www.youtube.com/watch?v=HbgZsS-uDrE"
1373 | },
1374 | {
1375 | "title": "陳冰 - 一個人 “這個版本是否也會聽的你撕心裂肺”",
1376 | "link": "https://www.youtube.com/watch?v=-px4Jtug0JA"
1377 | },
1378 | {
1379 | "title": "周杰倫 Jay Chou【手寫的從前 Handwritten Past】Official MV",
1380 | "link": "https://www.youtube.com/watch?v=TMB6-YflpA4"
1381 | },
1382 | {
1383 | "title": "周杰倫 Jay Chou【對不起 Sorry】Official MV",
1384 | "link": "https://www.youtube.com/watch?v=N2DkKFxijv0"
1385 | },
1386 | {
1387 | "title": "羅志祥Show Lo-惜命命You are mine (Official HD MV)",
1388 | "link": "https://www.youtube.com/watch?v=dJ2rAZ7jozA"
1389 | },
1390 | {
1391 | "title": "王忻辰/蘇星婕 - 清空【動態歌詞】「是我愛的太蠢太過天真 才會把你的寂寞當作契合的靈魂」♪",
1392 | "link": "https://www.youtube.com/watch?v=U2URlwurXNw"
1393 | },
1394 | {
1395 | "title": "KeyKey - 零點『墻上的倒計時讓我們又回到零點,如果有時光機我想要重新來一遍。』【動態歌詞/Vietsub/Pinyin Lyrics】",
1396 | "link": "https://www.youtube.com/watch?v=L6hMvZGXzjY"
1397 | },
1398 | {
1399 | "title": "Kelly Clarkson - Because Of You (VIDEO)",
1400 | "link": "https://www.youtube.com/watch?v=Ra-Om7UMSJc"
1401 | },
1402 | {
1403 | "title": "[마룬파이브 신곡🌈] Beautiful Mistakes - Maroon 5, Megan Thee Stallion (female cover)",
1404 | "link": "https://www.youtube.com/watch?v=VB-itZhF3Js"
1405 | },
1406 | {
1407 | "title": "Maroon 5 - Beautiful Mistakes ft. Megan Thee Stallion (Official Music Video)",
1408 | "link": "https://www.youtube.com/watch?v=BSzSn-PRdtI"
1409 | },
1410 | {
1411 | "title": "周杰倫 Jay Chou【退後 A Step Back】-Official Music Video",
1412 | "link": "https://www.youtube.com/watch?v=0-4mm0e2h44"
1413 | },
1414 | {
1415 | "title": "yihuik苡慧 - 致你【動態歌詞】「若想念是凋謝的雲 乘著風也飄向你 降落在你耳邊低語」♪",
1416 | "link": "https://www.youtube.com/watch?v=zw9EVo6r5Gs"
1417 | },
1418 | {
1419 | "title": "Nostalgia trip back to childhood 🍧 Childhood songs",
1420 | "link": "https://www.youtube.com/watch?v=P64hxFjZ3Vg"
1421 | },
1422 | {
1423 | "title": "Gym Class Heroes: Stereo Hearts ft. Adam Levine [OFFICIAL VIDEO]",
1424 | "link": "https://www.youtube.com/watch?v=T3E9Wjbq44E"
1425 | },
1426 | {
1427 | "title": "Alan Walker, CORSAK & Huang Xiaoyun - Sad Sometimes (Lyrics)",
1428 | "link": "https://www.youtube.com/watch?v=O2q59LClA7Q"
1429 | },
1430 | {
1431 | "title": "胡梦周马吟吟《溯(Reverse)》“溯”的意思是逆流而上 我对你的爱也是 「躲进你的身体 进入温暖的你」#为歌而赞|纯享 ZJSTV #live",
1432 | "link": "https://www.youtube.com/watch?v=IN6_gECYOBI"
1433 | },
1434 | {
1435 | "title": "CORSAK - 溯(Reverse) Feat. 馬吟吟『Alan Walker 鼎力推薦的中國電音製作人!』【動態歌詞Lyrics】",
1436 | "link": "https://www.youtube.com/watch?v=lrDlTEbHw3g"
1437 | },
1438 | {
1439 | "title": "孫盛希 shi shi【恆溫】Official Music Video HD (華視偶像劇「巷弄裡的那家書店」插曲)",
1440 | "link": "https://www.youtube.com/watch?v=O381ioChc-I"
1441 | },
1442 | {
1443 | "title": "蔣小呢 - for ya『所有美好全部come for ya,我的愛也全部come for ya。』【動態歌詞Lyrics】",
1444 | "link": "https://www.youtube.com/watch?v=a42f6Oe_4P8"
1445 | },
1446 | {
1447 | "title": "茄子蛋EggPlantEgg - 閣愛妳一擺 Love You One More Time (Official Music Video)",
1448 | "link": "https://www.youtube.com/watch?v=PJJhHihvDpo"
1449 | },
1450 | {
1451 | "title": "戴羽彤 - 來遲【動態歌詞】「我這一次終究還是來得太遲 錯過了你 此後所有的故事」♪",
1452 | "link": "https://www.youtube.com/watch?v=4cjSifTaLhg"
1453 | },
1454 | {
1455 | "title": "Bater Official -[ Joker 2019](抖音2020火爆歌曲)",
1456 | "link": "https://www.youtube.com/watch?v=uqdHQElo0zc"
1457 | },
1458 | {
1459 | "title": "Zedd - I Want You To Know ft. Selena Gomez",
1460 | "link": "https://www.youtube.com/watch?v=X46t8ZFqUB4"
1461 | },
1462 | {
1463 | "title": "SLANDER - Love Is Gone ft. Dylan Matthew (Acoustic)",
1464 | "link": "https://www.youtube.com/watch?v=hCrtcVDgCGw"
1465 | },
1466 | {
1467 | "title": "中島美嘉 - 僕が死のうと思ったのは / THE FIRST TAKE",
1468 | "link": "https://www.youtube.com/watch?v=AabAbM_Lmuo"
1469 | },
1470 | {
1471 | "title": "Hyouka [Amv] No Friends",
1472 | "link": "https://www.youtube.com/watch?v=5nR1bFsfApA"
1473 | },
1474 | {
1475 | "title": "是七叔呢 - 半生雪【動態歌詞】「半生風雪 吹不散歲月留下的眼淚」♪",
1476 | "link": "https://www.youtube.com/watch?v=lAZc4uOsSxo"
1477 | },
1478 | {
1479 | "title": "Jujutsu Kaisen - Opening Full『Kaikai Kitan』by Eve",
1480 | "link": "https://www.youtube.com/watch?v=i1P-9IspBus"
1481 | },
1482 | {
1483 | "title": "OmgLoSteve - Too Late ft. Addie Nicole | ♫ Copyright Free Music",
1484 | "link": "https://www.youtube.com/watch?v=LGJc37IPQ-I"
1485 | },
1486 | {
1487 | "title": "Electro-Light - Symbolism | Trap | NCS - Copyright Free Music",
1488 | "link": "https://www.youtube.com/watch?v=__CRWE-L45k"
1489 | },
1490 | {
1491 | "title": "《2020年度抖音流行歌曲 MASHUP》| cover 高芸歆 | MxA Music #串燒",
1492 | "link": "https://www.youtube.com/watch?v=2JoNqy4Su2c"
1493 | },
1494 | {
1495 | "title": "Songs that bring back so many memories... I really really miss those days",
1496 | "link": "https://www.youtube.com/watch?v=Uca596RniwI"
1497 | },
1498 | {
1499 | "title": "Fly By Midnight x Zaeden - Settle Down (Official Video)",
1500 | "link": "https://www.youtube.com/watch?v=GG8JsZibPhA"
1501 | },
1502 | {
1503 | "title": "▽We Don't Talk Anymore《我們不再交談》 -Fly By Midnight (ft. Nicolette Mare & Nicole Medoro)cover中文字幕▽",
1504 | "link": "https://www.youtube.com/watch?v=hMLf9DhFH8Y"
1505 | },
1506 | {
1507 | "title": "黃鴻升 Alien Huang【忘了怎麼快樂 Forgotten happiness】Official Music Video HD",
1508 | "link": "https://www.youtube.com/watch?v=nOv5XzRYEOU"
1509 | },
1510 | {
1511 | "title": "【抖音合集】10首是七叔呢翻唱合集来了 Top 100 Tik Tok 顫音中文音樂2021 2021必聽 是七叔呢 Shi Qi Shu Ne 最受欢迎的10首歌曲2021年",
1512 | "link": "https://www.youtube.com/watch?v=7aSGmZ-CsBE"
1513 | },
1514 | {
1515 | "title": "謝和弦 R-chord - 那不是雪中紅 Snow Red (Official Music Video)",
1516 | "link": "https://www.youtube.com/watch?v=qZU63nWWS6M"
1517 | },
1518 | {
1519 | "title": "黃鴻升 Alien Huang 柯有倫 Alan Kuo 竇智孔 Bobby Dou 【扛得住 Carry On】Official Music Video",
1520 | "link": "https://www.youtube.com/watch?v=qFbnc9M9BFk"
1521 | },
1522 | {
1523 | "title": "是七叔呢 - 踏山河【動態歌詞】「長槍刺破雲霞 放下一生牽掛」♪",
1524 | "link": "https://www.youtube.com/watch?v=1v1CiLQXho8"
1525 | },
1526 | {
1527 | "title": "【高音質】J.Sheon-畫面太美不敢直視",
1528 | "link": "https://www.youtube.com/watch?v=DgzVTF-DBd8"
1529 | },
1530 | {
1531 | "title": "Kill The Game (Original Mix) - Round_2、贰万、早安 ♪ || 2022年最劲爆的抖音歌曲 | 最强抖音BGM | 抖音 | TikTok",
1532 | "link": "https://www.youtube.com/watch?v=D_imnJfPGFA"
1533 | },
1534 | {
1535 | "title": "Azora Chin 尤长靖 - 一颗星的夜( Official Music Video)",
1536 | "link": "https://www.youtube.com/watch?v=10f2UitzQS4"
1537 | },
1538 | {
1539 | "title": "纯享:等一下就回家《洄》浓厚中国风在线狙击 | 少年说唱企划 EP12 | New Generation Hip-Hop Project | iQiyi精选",
1540 | "link": "https://www.youtube.com/watch?v=efYii6-s2R0"
1541 | },
1542 | {
1543 | "title": "林俊傑 JJ Lin【只對你說 Sarang Heyo 사랑해요】官方完整版 MV",
1544 | "link": "https://www.youtube.com/watch?v=pYe3FP2HnGg"
1545 | },
1546 | {
1547 | "title": "九局下半重置版!!!MC Hotdog X 2Pac-九局下半(Remix)",
1548 | "link": "https://www.youtube.com/watch?v=FpKd00wd5T0"
1549 | },
1550 | {
1551 | "title": "Tizzy T ft. Person - Going Go 歌词版(原版竟然这么好听!)",
1552 | "link": "https://www.youtube.com/watch?v=ZE5r1b941RM"
1553 | },
1554 | {
1555 | "title": "纯享:Tizzy T《冲吧少年》输出热诚不息的“T式”音乐态度 | 少年说唱企划 EP11 | New Generation Hip-Hop Project | iQiyi精选",
1556 | "link": "https://www.youtube.com/watch?v=XhdSaYMJKug"
1557 | },
1558 | {
1559 | "title": "纯享:JBcob《我不会数绵羊只会数拍子》浪漫情歌旋律上头 | 少年说唱企划 EP11 | New Generation Hip-Hop Project | iQiyi精选",
1560 | "link": "https://www.youtube.com/watch?v=eeQfh4Z2agM"
1561 | },
1562 | {
1563 | "title": "纯享:VAVA《如果》讲述奋斗人生的真实写照 个中心酸感动赚人泪下 | 爆裂舞台 EP10 | Stage Boom | iQiyi精选",
1564 | "link": "https://www.youtube.com/watch?v=SCsGZIE5sBk"
1565 | },
1566 | {
1567 | "title": "纯享:Capper《纵容》上头hook开口即HitSong | 少年说唱企划 EP11 | New Generation Hip-Hop Project | iQiyi精选",
1568 | "link": "https://www.youtube.com/watch?v=GJQ7pA_mnZo"
1569 | },
1570 | {
1571 | "title": "【中英字幕】Dream it possible— Delacey 夢想成真",
1572 | "link": "https://www.youtube.com/watch?v=7yBMlZw99WU"
1573 | },
1574 | {
1575 | "title": "大籽 - 白月光與硃砂痣『白月光在照耀 你才想起她的好,硃砂痣久難消 你是否能知道。』【動態歌詞Lyrics】",
1576 | "link": "https://www.youtube.com/watch?v=wPef4yQVRn8"
1577 | },
1578 | {
1579 | "title": "MC/Hotdog - 九局下半『青春像是一場棒球比賽 三人出局』【動態歌詞Lyrics】",
1580 | "link": "https://www.youtube.com/watch?v=aRv3UUzj8U8"
1581 | },
1582 | {
1583 | "title": "【HD】【經典歌曲】JS-殺破狼 [最高音質]【2004熱歌榜】字幕版",
1584 | "link": "https://www.youtube.com/watch?v=-mC3tZESTSs"
1585 | },
1586 | {
1587 | "title": "鞠文嫻 - BINGBIAN病變 (女聲版) Feat. Deepain【動態歌詞Lyrics】",
1588 | "link": "https://www.youtube.com/watch?v=ZFw6rTEw1hA"
1589 | },
1590 | {
1591 | "title": "CG - 文愛「知道愛你 沒有結局,癡心妄想你會給我甜蜜。」動態歌詞版MV",
1592 | "link": "https://www.youtube.com/watch?v=TQ5w9KHHa9M"
1593 | },
1594 | {
1595 | "title": "PIZZALI【翼 WING】",
1596 | "link": "https://www.youtube.com/watch?v=SIcWXHk0Rfw"
1597 | },
1598 | {
1599 | "title": "SoMo - 50 Feet (lyrics)",
1600 | "link": "https://www.youtube.com/watch?v=G7F1eEKhvrs"
1601 | },
1602 | {
1603 | "title": "秋原依 - 錯季【動態歌詞】「春的顏色不走進秋季 有些愛情就經不起季節輪替」♪",
1604 | "link": "https://www.youtube.com/watch?v=zZmtt5g4tHs"
1605 | },
1606 | {
1607 | "title": "纯享:Lil Milk《爸爸让我回家但我输不了啊》致敬摇滚玩转旋律 | 少年说唱企划 EP08 | New Generation Hip-Hop Project | iQiyi精选",
1608 | "link": "https://www.youtube.com/watch?v=lMW-xEyANKc"
1609 | },
1610 | {
1611 | "title": "王謙 Goatak【What Can I】Official Music Video",
1612 | "link": "https://www.youtube.com/watch?v=nVrNWV_GeWs"
1613 | },
1614 | {
1615 | "title": "thehopend - 小海灘 (Live Version)",
1616 | "link": "https://www.youtube.com/watch?v=Gt01GXcgEHE"
1617 | },
1618 | {
1619 | "title": "【陰陽師Onmyoji】不知火主題曲「離島之歌」",
1620 | "link": "https://www.youtube.com/watch?v=Y3mcydB-D_0"
1621 | },
1622 | {
1623 | "title": "MY ALL / 浜崎あゆみ",
1624 | "link": "https://www.youtube.com/watch?v=fZsMkAAx9JI"
1625 | },
1626 | {
1627 | "title": "ラムジ - PLANET『我是一顆行星,不停地圍繞你轉動。』【中日動態歌詞Lyrics】",
1628 | "link": "https://www.youtube.com/watch?v=G5rBqeiZgP4"
1629 | },
1630 | {
1631 | "title": "鈴木瑛美子 / kIng Music Video(TVアニメ「キングダム」第2クールED)(3.30発売 1stアルバム「5 senses」収録)",
1632 | "link": "https://www.youtube.com/watch?v=RxH4aMnlGSk"
1633 | },
1634 | {
1635 | "title": "BiSH / TOMORROW [OFFiCiAL ViDEO]",
1636 | "link": "https://www.youtube.com/watch?v=0_5tgikzOJg"
1637 | },
1638 | {
1639 | "title": "YOASOBI「たぶん」Official Music Video",
1640 | "link": "https://www.youtube.com/watch?v=8iuLXODzL04"
1641 | },
1642 | {
1643 | "title": "纯享:等一下就回家《峻岑》仙侠风说唱带你行走江湖! | 少年说唱企划 EP06 | New Generation Hip-Hop Project | iQiyi精选",
1644 | "link": "https://www.youtube.com/watch?v=UtWUeRfa2mk"
1645 | },
1646 | {
1647 | "title": "《少年說唱企劃》纯享:歐陽潇楓 & 林志越Steven & COWBOY《NOBODY》 | 愛奇藝",
1648 | "link": "https://www.youtube.com/watch?v=e8l2gFVSJ0w"
1649 | },
1650 | {
1651 | "title": "《少年說唱企劃》純享:Capper & lil milk《芳心縱火案》 | 愛奇藝",
1652 | "link": "https://www.youtube.com/watch?v=wMf8qpgT4ig"
1653 | },
1654 | {
1655 | "title": "McLean - Broken - Explicit Version",
1656 | "link": "https://www.youtube.com/watch?v=jTp-PPy2-wU"
1657 | },
1658 | {
1659 | "title": "🎶🎶🎶 人間過客 - 喬洋 黃靜美【問天命人間過客怎系情愫遺憾落幾層浮屠】動態歌詞🎶🎶🎶",
1660 | "link": "https://www.youtube.com/watch?v=h-8GuK44Uqc"
1661 | },
1662 | {
1663 | "title": "《少年說唱企劃》純享:ksovii & 等一下就回家《天地在兜裡我是葉一片》 | 愛奇藝",
1664 | "link": "https://www.youtube.com/watch?v=MXfq8w8AbZo"
1665 | },
1666 | {
1667 | "title": "NINEONE 乃万 :风的颜色 🍃🍃🍃【 LYRIC VIDEO 】",
1668 | "link": "https://www.youtube.com/watch?v=Sbp0uFfKPoo"
1669 | },
1670 | {
1671 | "title": "[슈가송] 드디어 찾아낸 목소리의 주인공! 프리스타일x정희경 'Y'♪ 슈가맨3(SUGARMAN3) 7회",
1672 | "link": "https://www.youtube.com/watch?v=FlCtGXvDzaE"
1673 | },
1674 | {
1675 | "title": "[M/V] Free Style(프리스타일) - Y (Please Tell Me Why)",
1676 | "link": "https://www.youtube.com/watch?v=dYIT_jeUBKg"
1677 | },
1678 | {
1679 | "title": "小藍背心 - 目及皆是你『我戒不掉你 像戒不了呼吸,漫長的距離 我用思念來代替。』【動態歌詞/Vietsub/Pinyin Lyrics】",
1680 | "link": "https://www.youtube.com/watch?v=sUDd47mjkQE"
1681 | },
1682 | {
1683 | "title": "MindaRyn - Like Flames (\"That Time I Got Reincarnated as a Slime\" Opening Theme Song) | Music Video",
1684 | "link": "https://www.youtube.com/watch?v=q8TGietS5Q0"
1685 | },
1686 | {
1687 | "title": "DP龍豬/Swei水/Rays陳袁 - 風吹一夏『風吹過我的頭髮,淋著雨我就站在你家樓下。』【動態歌詞Lyrics】",
1688 | "link": "https://www.youtube.com/watch?v=R6JZzZTOdvA"
1689 | },
1690 | {
1691 | "title": "Aioz -【22秒】| Cover 7en | Pocats Studio",
1692 | "link": "https://www.youtube.com/watch?v=CNBRm9a6pu8"
1693 | },
1694 | {
1695 | "title": "XMASwu - 7%【動態歌詞】「你操縱我的時空 撲入我懷中」♪",
1696 | "link": "https://www.youtube.com/watch?v=08v_Ri81DlE"
1697 | },
1698 | {
1699 | "title": "我们打着光脚在风车下跑,手上的狗尾巴草摇啊摇 (feat. 艾兜)",
1700 | "link": "https://www.youtube.com/watch?v=3RZ-7gcgvRU"
1701 | },
1702 | {
1703 | "title": "Numb (Official Music Video) [4K UPGRADE] – Linkin Park",
1704 | "link": "https://www.youtube.com/watch?v=kXYiU_JCYtU"
1705 | },
1706 | {
1707 | "title": "王艷薇 Evangeline -【保存期限Expiration Date】|Official MV",
1708 | "link": "https://www.youtube.com/watch?v=H5wD24TqhJM"
1709 | },
1710 | {
1711 | "title": "Yen-j嚴爵【暫時的男朋友Temporary BF】MV官方完整版",
1712 | "link": "https://www.youtube.com/watch?v=88m2XdyGXRY"
1713 | },
1714 | {
1715 | "title": "Ember Island - Need You (Leonrun Remix)",
1716 | "link": "https://www.youtube.com/watch?v=SunjDtNBmJk"
1717 | },
1718 | {
1719 | "title": "節奏感超強的純音樂【十四期】到不了的地方叫做遠方",
1720 | "link": "https://www.youtube.com/watch?v=J7qtMG72RB8"
1721 | },
1722 | {
1723 | "title": "《潘多拉》完整版 -造物法則主题曲 (日文)",
1724 | "link": "https://www.youtube.com/watch?v=oCR62O7ijBg"
1725 | },
1726 | {
1727 | "title": "「Scarborough Fair」史卡博羅市集-山田タマル (中英字幕)",
1728 | "link": "https://www.youtube.com/watch?v=jqOtTy2xPn0"
1729 | },
1730 | {
1731 | "title": "猫 / DISH// (Covered by こぴ)",
1732 | "link": "https://www.youtube.com/watch?v=LOiiuvL2gP8"
1733 | },
1734 | {
1735 | "title": "DISH// (北村匠海) - 猫 / THE FIRST TAKE",
1736 | "link": "https://www.youtube.com/watch?v=gsT6eKsnT0M"
1737 | },
1738 | {
1739 | "title": "一首超好聽的日語歌——《I hate me》Lily.μ《一人度過無聊時間》",
1740 | "link": "https://www.youtube.com/watch?v=umlPqbpDHKk"
1741 | },
1742 | {
1743 | "title": "[MAD][来自风平浪静的明天Nagi no AsuKara] 光-爱花",
1744 | "link": "https://www.youtube.com/watch?v=pOu9beF0qwQ"
1745 | },
1746 | {
1747 | "title": "【歌ってみた】生きていたんだよな / Covered by 獅子神レオナ【あいみょん 】",
1748 | "link": "https://www.youtube.com/watch?v=IYMv_YKlvMQ"
1749 | },
1750 | {
1751 | "title": "《多首好聽的日文神曲 》Anime Music--6首 個人收藏 傷心 感傷 作業用 日文歌曲 【純音樂】[#02]",
1752 | "link": "https://www.youtube.com/watch?v=XpQy0vzKBcY"
1753 | },
1754 | {
1755 | "title": "【tk極推薦】雙笙 - 心做し「這樣的事我不懂啊,不要讓我獨自一人。」 [ High Quality Lyrics ][ 中日字幕 ] 虐心 GUMI Best Cover",
1756 | "link": "https://www.youtube.com/watch?v=omMpiWlthI4"
1757 | },
1758 | {
1759 | "title": "超好聽的日語歌曲——《君だったら》HAPPY BIRTHDAY",
1760 | "link": "https://www.youtube.com/watch?v=dpMVLrdzhuY"
1761 | },
1762 | {
1763 | "title": "吳克羣《愛太痛》Official 完整版 MV [HD]",
1764 | "link": "https://www.youtube.com/watch?v=LDQQJ-RkHrM"
1765 | },
1766 | {
1767 | "title": "DAOKO × 米津玄師『打上花火』MUSIC VIDEO",
1768 | "link": "https://www.youtube.com/watch?v=-tKVN2mAKRI"
1769 | },
1770 | {
1771 | "title": "紀儀羚 Kirki | 羚著吉他KI唱歌系列 - 愛,存在 [ 原唱 魏奇奇 ] ( 翻唱 Cover 自彈自唱 愛存在)",
1772 | "link": "https://www.youtube.com/watch?v=jzDd7AM_RsU"
1773 | },
1774 | {
1775 | "title": "未接來電 - 莫宰羊 Covered by 陳忻玥",
1776 | "link": "https://www.youtube.com/watch?v=m-aK4wuI8B8"
1777 | },
1778 | {
1779 | "title": "Marz23 Ft. 莫宰羊 & 頤原【最美的風景 Fight With The Demon】防疫版 stay home sessions",
1780 | "link": "https://www.youtube.com/watch?v=vS4tJyxPG2U"
1781 | },
1782 | {
1783 | "title": "王艷薇 Evangeline -【離開我的依賴 Leaving】|Official MV",
1784 | "link": "https://www.youtube.com/watch?v=p13tH7Etlzc"
1785 | },
1786 | {
1787 | "title": "武陵高中第63屆畢業歌《我的冰箱裡有企鵝》Official Music Video",
1788 | "link": "https://www.youtube.com/watch?v=DUR7jlt1Xlg"
1789 | },
1790 | {
1791 | "title": "【中日歌詞】愛にできることはまだあるかい (Is There Still Anything That Love Can Do?) -RADWIMPS|天氣之子OST",
1792 | "link": "https://www.youtube.com/watch?v=iQs-f88RBws"
1793 | },
1794 | {
1795 | "title": "劉大壯 - 我很好(正式版)『我很好,反正一直都是偶爾被需要。我很好,就算再冷我也只相信外套。』【動態歌詞Lyrics】",
1796 | "link": "https://www.youtube.com/watch?v=22owBmpwokA"
1797 | },
1798 | {
1799 | "title": "卓文萱 Genie Chuo&黃鴻升 Alien Huang【愛的主旋律】Official Music Video",
1800 | "link": "https://www.youtube.com/watch?v=jqdQUQqaDdU"
1801 | },
1802 | {
1803 | "title": "刘悦 - 那一首歌 『有没有一首歌会让你瞬间掉眼泪 有没有一句词会让你想喝下一杯 有没有一个和旋让你忘却了疲惫 有没有一个音色你想知道他是谁』【動態歌詞Lyrics】【说唱新时代】高清音質",
1804 | "link": "https://www.youtube.com/watch?v=s9jinFWkga4"
1805 | },
1806 | {
1807 | "title": "【官方正式版MV】會不會 - 劉大壯 | 這份愛 會不會 會不會讓你也好疲憊 |Official Music Video",
1808 | "link": "https://www.youtube.com/watch?v=L92TYQ3Uv34"
1809 | },
1810 | {
1811 | "title": "5th FGO Anniversary AMV |「躍動」-坂本真綾あ",
1812 | "link": "https://www.youtube.com/watch?v=InkLyMHXtS4"
1813 | },
1814 | {
1815 | "title": "【HD】雲雀 Hibari ASCA大倉明日香 艾梅洛閣下II世事件簿 魔眼蒐集列車 ED (中日字幕)",
1816 | "link": "https://www.youtube.com/watch?v=XwNDnhWT1z4"
1817 | },
1818 | {
1819 | "title": "「Prover-milet」見證者 絶対魔獣戦線バビロニア ED2 FGO巴比倫尼亞 ED2 (中日字幕)",
1820 | "link": "https://www.youtube.com/watch?v=xahEdP2eJs4"
1821 | },
1822 | {
1823 | "title": "[MV]炎 (Homura) Cover - LiSA 『Kimetsu no Yaiba The Movie : Mugen Train』 Cover by yurisa",
1824 | "link": "https://www.youtube.com/watch?v=TGcCO8owvgU"
1825 | },
1826 | {
1827 | "title": "[MV]雪の華 - 中島 美嘉(Nakashima Mika) Cover by yurisa",
1828 | "link": "https://www.youtube.com/watch?v=TAMyLwW9HW8"
1829 | },
1830 | {
1831 | "title": "TOP 10 MUSIC COVER by KOBASOLO",
1832 | "link": "https://www.youtube.com/watch?v=ZcQYk9NtpVo"
1833 | },
1834 | {
1835 | "title": "【女性が歌う】別の人の彼女になったよ / wacci(Covered by コバソロ & 相沢)",
1836 | "link": "https://www.youtube.com/watch?v=sEJKG60a1Zc"
1837 | },
1838 | {
1839 | "title": "蕭敬騰 背叛~清晰版@超級星光大道",
1840 | "link": "https://www.youtube.com/watch?v=0jB33fwLQO4"
1841 | },
1842 | {
1843 | "title": "Marz23 x 莫宰羊 -【最美的風景 Fight With The Demon】Official Music Video",
1844 | "link": "https://www.youtube.com/watch?v=f56eHwC8jEQ"
1845 | },
1846 | {
1847 | "title": "抖音 程jiajia - 山楂樹之戀(女声) ♬『我的山楂树之恋 永远站在你的身边』《動態歌詞Lyrics》",
1848 | "link": "https://www.youtube.com/watch?v=IFMcyb4yxBc"
1849 | },
1850 | {
1851 | "title": "謝和弦R-chord&陳彥允Ian【 親愛的女神 Dear Goddess 】演出Swagger:可可.柔柔.伊伊|萌寵:謝燙燙 Official Music Video",
1852 | "link": "https://www.youtube.com/watch?v=McjxMLDJa4Q"
1853 | },
1854 | {
1855 | "title": "R3HAB & 蔡依林 Jolin Tsai《Stars Align》Official Music Video",
1856 | "link": "https://www.youtube.com/watch?v=--giQqhWGdQ"
1857 | },
1858 | {
1859 | "title": "蔡依林 Jolin Tsai - 單身公害",
1860 | "link": "https://www.youtube.com/watch?v=to1slJyu3ow"
1861 | },
1862 | {
1863 | "title": "心做し REC映像【まじ娘】",
1864 | "link": "https://www.youtube.com/watch?v=QQPVQFyL0_Y"
1865 | },
1866 | {
1867 | "title": "《15强歌曲纯享》魏巡:《开门见山》 Super Boy2017【快男超女官方频道】",
1868 | "link": "https://www.youtube.com/watch?v=zWYGBu06G98"
1869 | },
1870 | {
1871 | "title": "茄子蛋EggPlantEgg - 愛情你比我想的閣較偉大 (Official Music Video)《當男人戀愛時》電影主題曲",
1872 | "link": "https://www.youtube.com/watch?v=0rp3pP2Xwhs"
1873 | },
1874 | {
1875 | "title": "命に嫌われている。/ カンザキイオリ(Covered by コバソロ & 相沢)",
1876 | "link": "https://www.youtube.com/watch?v=FR91CB5SBWU"
1877 | },
1878 | {
1879 | "title": "黃鴻升 Alien Huang【地球上最浪漫的一首歌】Official Music Video",
1880 | "link": "https://www.youtube.com/watch?v=bCB_nIdN86s"
1881 | },
1882 | {
1883 | "title": "怕胖團PAPUN BAND 《 魚 》Music Video",
1884 | "link": "https://www.youtube.com/watch?v=Dnz-BTz9eDU"
1885 | },
1886 | {
1887 | "title": "玖壹壹-夢醒時分Remix",
1888 | "link": "https://www.youtube.com/watch?v=ZXF4-mQijF4"
1889 | },
1890 | {
1891 | "title": "玖壹壹-再會中港路",
1892 | "link": "https://www.youtube.com/watch?v=lgLF1eMF-zI"
1893 | },
1894 | {
1895 | "title": "玖壹壹-妳不愛我(ft.洋蔥他爸)",
1896 | "link": "https://www.youtube.com/watch?v=Ou92wShJaAU"
1897 | },
1898 | {
1899 | "title": "玖壹壹-我的路",
1900 | "link": "https://www.youtube.com/watch?v=mNMH7SLGDOw"
1901 | },
1902 | {
1903 | "title": "Red Bull Vol. - E.SO Outta Body 線上演唱會",
1904 | "link": "https://www.youtube.com/watch?v=juBDM5f2N9E"
1905 | },
1906 | {
1907 | "title": "謝和弦 R-chord – 就是在講你喔 Talking about you (Official Music Video)",
1908 | "link": "https://www.youtube.com/watch?v=UOUWlicRSEI"
1909 | },
1910 | {
1911 | "title": "【纯享】单依纯 《你就不要想起我》,悲伤情歌唱到心碎 | 214小红书独爱之夜 | 阿肆/陈粒/达达乐队/黄龄/黄明昊/胡夏/靳海音/焦迈奇/梁博/李荣浩/毛不易 | 优酷 YOUKU",
1912 | "link": "https://www.youtube.com/watch?v=SRy1qDusFoU"
1913 | },
1914 | {
1915 | "title": "李浩瑋 Howard Lee【Crush On(Acoustic Version)】Audio Video(4K)",
1916 | "link": "https://www.youtube.com/watch?v=HgNZ5WYni5Y"
1917 | },
1918 | {
1919 | "title": "《阿拉斯加海湾》菲道尔 COVER BY 陈颖恩",
1920 | "link": "https://www.youtube.com/watch?v=JhIan9zvuyE"
1921 | },
1922 | {
1923 | "title": "采子 Cai Zi 「光害」 ’Shining Lights‘ Official MV'",
1924 | "link": "https://www.youtube.com/watch?v=l4pWgb-626A"
1925 | },
1926 | {
1927 | "title": "《約定的夢幻島》真人版電影推廣曲-正しく ない(Can't Be Right) 原唱:ずっと真夜中でいいのに 中日羅字幕",
1928 | "link": "https://www.youtube.com/watch?v=gdKrwTEbHOU"
1929 | },
1930 | {
1931 | "title": "傲七爷 - 是想你的声音啊「你快听滴答滴滴答滴滴答滴,是雨滴的声音」【動態歌詞/Lyrics Video】",
1932 | "link": "https://www.youtube.com/watch?v=TcFl0jQCJmg"
1933 | },
1934 | {
1935 | "title": "謝和弦 R-chord –【Let It Be】就讓她去 (Official Music Video)",
1936 | "link": "https://www.youtube.com/watch?v=ngNemwBrzcE"
1937 | },
1938 | {
1939 | "title": "艾辰 - 錯位時空「我吹過你吹過的晚風,那我們算不算 相擁」【動態歌詞/pīn yīn gē cí】",
1940 | "link": "https://www.youtube.com/watch?v=gC7pUSI5UeA"
1941 | },
1942 | {
1943 | "title": "周杰倫 Jay Chou【稻香 Rice Field】-Official Music Video",
1944 | "link": "https://www.youtube.com/watch?v=sHD_z90ZKV0"
1945 | },
1946 | {
1947 | "title": "雪二 - 漸冷『你能不能再愛我一遍,像以前 以前你都是熱烈。』【動態歌詞Lyrics】",
1948 | "link": "https://www.youtube.com/watch?v=Jq_-U23oJV4"
1949 | },
1950 | {
1951 | "title": "持修 根本不是我對手 歌詞",
1952 | "link": "https://www.youtube.com/watch?v=z2JjpCijgpk"
1953 | },
1954 | {
1955 | "title": "徐佳瑩 LaLa【到此為止 From Now On】Official Music Video",
1956 | "link": "https://www.youtube.com/watch?v=T7IK_5XCRiU"
1957 | },
1958 | {
1959 | "title": "謎路人Way of Puzzle - 只記得你曾經存在 [Official Music Video]",
1960 | "link": "https://www.youtube.com/watch?v=fRJohcv82oY"
1961 | },
1962 | {
1963 | "title": "艾怡良 Eve Ai《Forever Young》Official Music Video",
1964 | "link": "https://www.youtube.com/watch?v=rFj6azCUYrU"
1965 | },
1966 | {
1967 | "title": "ChihSiou 持修 [ 正想著你呢 ] Official Music Video",
1968 | "link": "https://www.youtube.com/watch?v=FBp4QhLqiKs"
1969 | },
1970 | {
1971 | "title": "「炎 -LiSA」鬼滅之刃:劇場版 無限列車篇主題曲 ED Full 【中日歌詞】",
1972 | "link": "https://www.youtube.com/watch?v=iTW1bv2eO9Y"
1973 | },
1974 | {
1975 | "title": "一首超好聽的英文歌 《Umbrella》開口即跪 一秒淪陷",
1976 | "link": "https://www.youtube.com/watch?v=CEE5ZRpF1ok"
1977 | },
1978 | {
1979 | "title": "[avex官方HD] 盧子杰 James Lu – 14 (Feat. 屁孩Ryan & 柯政宏) 官方歌詞版MV",
1980 | "link": "https://www.youtube.com/watch?v=U7jPKichHiQ"
1981 | },
1982 | {
1983 | "title": "珂拉琪 Collage/這該死的拘執佮愛",
1984 | "link": "https://www.youtube.com/watch?v=5h_mxY1At7E"
1985 | },
1986 | {
1987 | "title": "珂拉琪 Collage/萬千花蕊慈母悲哀",
1988 | "link": "https://www.youtube.com/watch?v=kkUWlcjmOew"
1989 | },
1990 | {
1991 | "title": "XMASwu - 故意 「我不是故意的,是真的想你了。」♪ Karendaidai ♪",
1992 | "link": "https://www.youtube.com/watch?v=8sNxaqiyP78"
1993 | },
1994 | {
1995 | "title": "周杰倫 - 爸.我回來了",
1996 | "link": "https://www.youtube.com/watch?v=0p6pNWxpCKw"
1997 | },
1998 | {
1999 | "title": "洛塵鞅_vvv-最後一頁『想把你抱进身体里面』【動態歌詞Lyrics】",
2000 | "link": "https://www.youtube.com/watch?v=dXZw0YfHJxU"
2001 | },
2002 | {
2003 | "title": "【Playlist】 Rapper说情话30首",
2004 | "link": "https://www.youtube.com/watch?v=ZTIZrdvESE4"
2005 | },
2006 | {
2007 | "title": "李佳隆 x 孟子坤 《世界末日》 ☄️☄️☄️ DOOMS DAY 【 OFFICIAL MV 】",
2008 | "link": "https://www.youtube.com/watch?v=wtz0I80V2mM"
2009 | },
2010 | {
2011 | "title": "Why You So Beautiful - TIAB",
2012 | "link": "https://www.youtube.com/watch?v=b2_wnedY2OY"
2013 | },
2014 | {
2015 | "title": "TYSON YOSHI & MADBOII - I Don't Give A Part II (Official Music Video)",
2016 | "link": "https://www.youtube.com/watch?v=rnRCVBU46S4"
2017 | },
2018 | {
2019 | "title": "❤【最怕rapper唱情歌 】1小时說唱情歌歌單|聽完的人都想戀愛|Chill Rap Playlist|高爾宣 OSN 派偉俊 Tyson Yoshi Marz23【無廣告高音質】",
2020 | "link": "https://www.youtube.com/watch?v=cKNJtwdH-KY"
2021 | },
2022 | {
2023 | "title": "華晨宇【好想愛這個世界啊】Cover(蔡恩雨 Priscilla Abby)",
2024 | "link": "https://www.youtube.com/watch?v=-vnfi9cGltA"
2025 | },
2026 | {
2027 | "title": "《中國新說唱2020》純享:BrantB白景屹&Kyra Z《冷血》",
2028 | "link": "https://www.youtube.com/watch?v=YrnLP9Dd-Pg"
2029 | },
2030 | {
2031 | "title": "飛鳥和蟬- 任然 Cover ( 蔡恩雨 Priscilla Abby)",
2032 | "link": "https://www.youtube.com/watch?v=1BBw4oyOMG0"
2033 | },
2034 | {
2035 | "title": "《中國新說唱2020》純享:王齊銘《義無反顧》 表達對母親的思念|愛奇藝",
2036 | "link": "https://www.youtube.com/watch?v=T6oSXtBAegA"
2037 | },
2038 | {
2039 | "title": "采子 Cai Zi 「美夢」 ’You Were My Dream ‘ Official MV",
2040 | "link": "https://www.youtube.com/watch?v=kqTu5Vy9Upg"
2041 | },
2042 | {
2043 | "title": "王以太|童言无忌",
2044 | "link": "https://www.youtube.com/watch?v=eEs0iNb2xug"
2045 | },
2046 | {
2047 | "title": "《中國新說唱2020》純享:KAFE HU《經濟艙》喜歡被簇擁的感覺|愛奇藝",
2048 | "link": "https://www.youtube.com/watch?v=X8COjmk4Jkg"
2049 | },
2050 | {
2051 | "title": "【 中国新说唱2019 】Key.L 刘聪 - Hey Kong",
2052 | "link": "https://www.youtube.com/watch?v=STODbJ_fDdw"
2053 | },
2054 | {
2055 | "title": "王靖雯不胖 - 不知所措【動態歌詞】「最燦爛的煙火總是先墜落 越是暖的經過反而越折磨」♪",
2056 | "link": "https://www.youtube.com/watch?v=PBRW0GY6bfY"
2057 | },
2058 | {
2059 | "title": "周杰倫 Jay Chou【最後的戰役 The Final Battle】Official MV",
2060 | "link": "https://www.youtube.com/watch?v=ZcShYmOhHM0"
2061 | },
2062 | {
2063 | "title": "《中國新說唱2020》純享:GALI《珍珠幻象》實名diss節目組?|愛奇藝",
2064 | "link": "https://www.youtube.com/watch?v=imZN5KhfFHA"
2065 | },
2066 | {
2067 | "title": "dance flow - 迷人的危险【为什麼最迷人的最危险 为什麼爱会让人变残缺】",
2068 | "link": "https://www.youtube.com/watch?v=04iSgtR7hqw"
2069 | },
2070 | {
2071 | "title": "PG One - \"Talk Too Much\" Official MV",
2072 | "link": "https://www.youtube.com/watch?v=tvx1tzB3Mpo"
2073 | },
2074 | {
2075 | "title": "《中國新說唱2020》純享:王齊銘《千翻兒》送给曾经迷茫掙扎過的野孩子",
2076 | "link": "https://www.youtube.com/watch?v=7QCB_EP18E0"
2077 | },
2078 | {
2079 | "title": "🍖王齐铭 WATCH ME 🍖《千翻儿》GO$H MUSIC [ OFFICIAL MUSIC VIDEO ]",
2080 | "link": "https://www.youtube.com/watch?v=4Xaxmoo4gJA"
2081 | },
2082 | {
2083 | "title": "李榮浩 Ronghao Li《麻雀 Sparrow》Official Music Video",
2084 | "link": "https://www.youtube.com/watch?v=2l4x_TvBKiw"
2085 | },
2086 | {
2087 | "title": "【麻雀】---李榮浩 (動態歌詞Lyrics) ♫你飛向了雪山之巔,我留在你回憶裏面,你成仙我替你留守人間,麻雀也有明天♫#高音質#",
2088 | "link": "https://www.youtube.com/watch?v=2oPqhqqSQQE"
2089 | },
2090 | {
2091 | "title": "李浩瑋 Howard Lee - 窩囊廢 Loser",
2092 | "link": "https://www.youtube.com/watch?v=XD9VYyEAws8"
2093 | },
2094 | {
2095 | "title": "Marz23 -【我不是饒舌歌手 Not A Rapper】Official Music Video",
2096 | "link": "https://www.youtube.com/watch?v=lR6zkQln6Ew"
2097 | },
2098 | {
2099 | "title": "あいみょん – さよならの今日に【OFFICIAL MUSIC VIDEO】",
2100 | "link": "https://www.youtube.com/watch?v=C1yP_GQ9s4E"
2101 | },
2102 | {
2103 | "title": "T. Shan - Protecta (Official Lyric Video)",
2104 | "link": "https://www.youtube.com/watch?v=2Tl78i8t6VM"
2105 | },
2106 | {
2107 | "title": "【女性が歌う】別の人の彼女になったよ/wacci (Covered by あさぎーにょ)",
2108 | "link": "https://www.youtube.com/watch?v=S4Vvy8h1CTA"
2109 | },
2110 | {
2111 | "title": "あいみょん『強がりました』×『偽コイ同盟』リリックムービー",
2112 | "link": "https://www.youtube.com/watch?v=_1WLfHWBRio"
2113 | },
2114 | {
2115 | "title": "あいみょん「どうせ死ぬなら」(Official Video)",
2116 | "link": "https://www.youtube.com/watch?v=Qetpdg4C1IY"
2117 | },
2118 | {
2119 | "title": "あいみょん - 君はロックを聴かない 【OFFICIAL MUSIC VIDEO】",
2120 | "link": "https://www.youtube.com/watch?v=ARwVe1MYAUA"
2121 | },
2122 | {
2123 | "title": "莫宰羊 - 未接來電 missed call * M/V ***",
2124 | "link": "https://www.youtube.com/watch?v=NXId3_EEGKY"
2125 | },
2126 | {
2127 | "title": "莫宰羊 - 健康快樂 Health & Happiness * M/V ***",
2128 | "link": "https://www.youtube.com/watch?v=SfehQq0wC84"
2129 | },
2130 | {
2131 | "title": "莫宰羊 - 國王 King (Cypher) ft. Asiaboy & Lizi & Gambler ***",
2132 | "link": "https://www.youtube.com/watch?v=GOfJsuGOZow"
2133 | },
2134 | {
2135 | "title": "ヨルシカ - 花に亡霊(OFFICIAL VIDEO)",
2136 | "link": "https://www.youtube.com/watch?v=9lVPAWLWtWc"
2137 | },
2138 | {
2139 | "title": "药水哥 - 药水歌「我出门总是带着五瓶药水,手中的卡牌不停切换到位」【動態歌詞/Lyrics Video】",
2140 | "link": "https://www.youtube.com/watch?v=Kx9y-moNx0c"
2141 | },
2142 | {
2143 | "title": "I Like You So Much, You’ll Know It (我多喜欢你, 你会知道 English) - A Love So Beautiful OST [VALERIE POLA]",
2144 | "link": "https://www.youtube.com/watch?v=UgiuRwn8JeI"
2145 | },
2146 | {
2147 | "title": "Counting Stars - OneRepublic | Alex Goot, Chrissy Costanza, KHS",
2148 | "link": "https://www.youtube.com/watch?v=cSLAO7zxS2M"
2149 | },
2150 | {
2151 | "title": "Maejor - Gone 「這樣告白很好聽」♪ Karendaidai ♪",
2152 | "link": "https://www.youtube.com/watch?v=an8MfhX0tIA"
2153 | },
2154 | {
2155 | "title": "Morrison馬仕釗- I Still Think About It (Official Music Video)",
2156 | "link": "https://www.youtube.com/watch?v=SEgVZLQ0m9g"
2157 | },
2158 | {
2159 | "title": "采子 Cai Zi 「油漆」 ’Paint‘ Official MV'",
2160 | "link": "https://www.youtube.com/watch?v=WQCBjvBD1Ik"
2161 | },
2162 | {
2163 | "title": "Morrison馬仕釗- Oh Ma California (Official Music Video)",
2164 | "link": "https://www.youtube.com/watch?v=hgwhCXs3JwQ"
2165 | },
2166 | {
2167 | "title": "謝和弦 R-chord -【一世人一個名】最新台語創作 官方音檔",
2168 | "link": "https://www.youtube.com/watch?v=vlTKpaTvTRA"
2169 | },
2170 | {
2171 | "title": "謝和弦 R-chord -【台灣的歌】Song of taiwan Feat.桑布伊 (Official Music Video)",
2172 | "link": "https://www.youtube.com/watch?v=HDZD-LICuV8"
2173 | },
2174 | {
2175 | "title": "Dramma MnMnMn tiktok song",
2176 | "link": "https://www.youtube.com/watch?v=LuQdLqTIVBw"
2177 | },
2178 | {
2179 | "title": "Marz23 -【陪你失敗Fail With You】ft. 寺二 (Official Video)",
2180 | "link": "https://www.youtube.com/watch?v=djSEDGoqUzo"
2181 | },
2182 | {
2183 | "title": "Mayday五月天 [ 好好 (想把你寫成一首歌) Song About You ] Official Music Video",
2184 | "link": "https://www.youtube.com/watch?v=HxIct0i-CcA"
2185 | },
2186 | {
2187 | "title": "CosmosPeople宇宙人 [ 如果我們還在一起 What If We ] Official Music Video",
2188 | "link": "https://www.youtube.com/watch?v=mBB_67OxXIo"
2189 | },
2190 | {
2191 | "title": "Mayday五月天 [ 我不願讓你一個人I Won't Let You Be Lonely ] Official Music Video - 末日版",
2192 | "link": "https://www.youtube.com/watch?v=38lcQsEMGrk"
2193 | },
2194 | {
2195 | "title": "Mayday五月天 [ 溫柔 ] Official Music Video",
2196 | "link": "https://www.youtube.com/watch?v=mtAc_bMYBsM"
2197 | },
2198 | {
2199 | "title": "《你深海般的藍色》William Black - Deep Blue Lyrics ft Monika Santucci 英繁中字🎶",
2200 | "link": "https://www.youtube.com/watch?v=ZPXbI92GBfo"
2201 | },
2202 | {
2203 | "title": "Justin Bieber - Sorry (PURPOSE : The Movement)",
2204 | "link": "https://www.youtube.com/watch?v=fRh_vgS2dFE"
2205 | },
2206 | {
2207 | "title": "[Vocal Cover] IN SILENCE by Janet Suhh (자넷서) - 사이코지만 괜찮아 It's Okay to Not Be Okay OST",
2208 | "link": "https://www.youtube.com/watch?v=j8Tk-b_Uz1k"
2209 | },
2210 | {
2211 | "title": "【動態歌詞】世界這麼大還是遇見你(清新的小女孩(中文版))—程響『世界這麼大還是遇見你 多少次瘋狂多少天真』",
2212 | "link": "https://www.youtube.com/watch?v=wRmedql89Ro"
2213 | },
2214 | {
2215 | "title": "顏人中- 好喜歡你【動態歌詞/Lyrics Video】",
2216 | "link": "https://www.youtube.com/watch?v=XXpH8ukCf3I"
2217 | },
2218 | {
2219 | "title": "程jiajia (程佳佳) - 我爱你【動態歌詞/Lyrics Video】",
2220 | "link": "https://www.youtube.com/watch?v=HGeHRyXBrnE"
2221 | },
2222 | {
2223 | "title": "暗裡著迷",
2224 | "link": "https://www.youtube.com/watch?v=InawYZVNwC4"
2225 | },
2226 | {
2227 | "title": "胡66 - 後來遇見他【動態歌詞/Lyrics Video】",
2228 | "link": "https://www.youtube.com/watch?v=g1-wpy5BL1U"
2229 | },
2230 | {
2231 | "title": "隔壁老樊 - 失樂【動態歌詞Lyrics】『你走的時候請你別帶走,我的快樂。』",
2232 | "link": "https://www.youtube.com/watch?v=CgUKT-XEI50"
2233 | },
2234 | {
2235 | "title": "【新版】F*yy Cover - 萬有引力【原唱:汪蘇瀧】【動態歌詞】♪",
2236 | "link": "https://www.youtube.com/watch?v=rUt5gnQjj04"
2237 | },
2238 | {
2239 | "title": "蜡笔小心 - MOM【動態歌詞/Lyrics Video】",
2240 | "link": "https://www.youtube.com/watch?v=othQVXxFd6I"
2241 | },
2242 | {
2243 | "title": "火羊瞌睡了 - 夏天的风【動態歌詞/Lyrics Video】",
2244 | "link": "https://www.youtube.com/watch?v=hN7hpdQWS1E"
2245 | },
2246 | {
2247 | "title": "Sketch Plane - Cam Kelley",
2248 | "link": "https://www.youtube.com/watch?v=Lndp_X-nar4"
2249 | },
2250 | {
2251 | "title": "Eric周興哲《其實你並沒那麼孤單 You Are Not Alone》Official Music Video",
2252 | "link": "https://www.youtube.com/watch?v=YB6g7HtJmvY"
2253 | },
2254 | {
2255 | "title": "TRASH《重感情的廢物 Heavyhearted Loser》Official Music Video",
2256 | "link": "https://www.youtube.com/watch?v=jM3HXNusWA0"
2257 | },
2258 | {
2259 | "title": "NARUTO - Sadness and Sorrow 哀と悲 - Ru's Piano",
2260 | "link": "https://www.youtube.com/watch?v=RLv-XocB6-I"
2261 | },
2262 | {
2263 | "title": "五月天 Mayday【倔強 Stubborn】Official Music Video",
2264 | "link": "https://www.youtube.com/watch?v=R2s-H_crYkc"
2265 | },
2266 | {
2267 | "title": "阿冗 - 與我無關【動態歌詞】「望眼欲穿 等不到你的晚安」♪",
2268 | "link": "https://www.youtube.com/watch?v=8tuzFSXeKI0"
2269 | },
2270 | {
2271 | "title": "Corki - 下墜Falling『喝醉後的夢裡,我往前 你退後。』【動態歌詞Lyrics】",
2272 | "link": "https://www.youtube.com/watch?v=-M4CUPBH5bg"
2273 | },
2274 | {
2275 | "title": "夢然 (Mira) - 少年 『我還是從前那個少年 沒有一絲絲改變』【動態歌詞】",
2276 | "link": "https://www.youtube.com/watch?v=LGzDEu7Sh5g"
2277 | },
2278 | {
2279 | "title": "[MV] K.will(케이윌) - Talk Love(말해! 뭐해?) l Descendants of the Sun 태양의 후예 OST",
2280 | "link": "https://www.youtube.com/watch?v=SdHQkkRc-hc"
2281 | },
2282 | {
2283 | "title": "瘦子E.SO【太陽 When The Cloudless Day Comes】Lyric Video",
2284 | "link": "https://www.youtube.com/watch?v=C8R7qkxno-4"
2285 | },
2286 | {
2287 | "title": "Twinbed - Trouble I'm in (Lyrics)",
2288 | "link": "https://www.youtube.com/watch?v=OvW63QsIxts"
2289 | },
2290 | {
2291 | "title": "TRASH《重感情的廢物 Heavyhearted Loser》Live Session #1",
2292 | "link": "https://www.youtube.com/watch?v=xAVcUwORtP0"
2293 | },
2294 | {
2295 | "title": "INHON胤宏 X HowZ【Burning】(Official Music Video )",
2296 | "link": "https://www.youtube.com/watch?v=2R666UEZ0kg"
2297 | },
2298 | {
2299 | "title": "J.Sheon - Off You Go 慢走不送 ft. 艾怡良 & Morrison馬仕釗 (Official Music Video)",
2300 | "link": "https://www.youtube.com/watch?v=7Y4k1fDIVjs"
2301 | },
2302 | {
2303 | "title": "aMEI張惠妹 feat. 艾怡良、徐佳瑩 [ 傲嬌Catfight ] Official Music Video",
2304 | "link": "https://www.youtube.com/watch?v=-x5odUXWjFk"
2305 | },
2306 | {
2307 | "title": "【高清繁中MV】LeeSsang - 不能分手的女人 不能離開的男人",
2308 | "link": "https://www.youtube.com/watch?v=B1OE45aXLH4"
2309 | },
2310 | {
2311 | "title": "【RU Cover Channel】2019年度最受歡迎十大歌曲",
2312 | "link": "https://www.youtube.com/watch?v=fwei8E6DcBA"
2313 | },
2314 | {
2315 | "title": "徐佳瑩 LaLa【尋人啟事】[HD]Official Music Video",
2316 | "link": "https://www.youtube.com/watch?v=TPzyzi-Jydc"
2317 | },
2318 | {
2319 | "title": "( 歌詞 ) 劉力揚 - 禮物",
2320 | "link": "https://www.youtube.com/watch?v=TnOHGv-UKL4"
2321 | },
2322 | {
2323 | "title": "東城衛x謝和弦 D C W&R Chord 夠愛歌詞",
2324 | "link": "https://www.youtube.com/watch?v=uujgulVxsRk"
2325 | },
2326 | {
2327 | "title": "Sound Of Walking Away X Divinity X Shelter (Music Video)",
2328 | "link": "https://www.youtube.com/watch?v=5aduiLwOb70"
2329 | },
2330 | {
2331 | "title": "SHY Martin - can I call you back? (Lyric Video)",
2332 | "link": "https://www.youtube.com/watch?v=hvHGIexi0Lo"
2333 | },
2334 | {
2335 | "title": "♫ Relaxing Piano Instrumental ♫ White Star Snow (Album: Alone In Fantasy)",
2336 | "link": "https://www.youtube.com/watch?v=skAXle_YVxo"
2337 | },
2338 | {
2339 | "title": "SoulJa×中村舞子 - What's your name - collaboration with 壇蜜",
2340 | "link": "https://www.youtube.com/watch?v=srAWwMnOYBE"
2341 | },
2342 | {
2343 | "title": "J.Sheon - Don't Ask 別問很可怕 (Official Music Video)",
2344 | "link": "https://www.youtube.com/watch?v=tRa3fOlnN7k"
2345 | },
2346 | {
2347 | "title": "Danny Avila - End Of The Night ‖抖音熱門卡點音樂 TIK TOK 【中英字幕Lyrics】",
2348 | "link": "https://www.youtube.com/watch?v=YF0uCC8Dqxc"
2349 | },
2350 | {
2351 | "title": "【抖音/tiktok】《Wonderful U》抖音上很受欢迎的英文歌曲『中文翻译』",
2352 | "link": "https://www.youtube.com/watch?v=zgMxEmfSo9k"
2353 | },
2354 | {
2355 | "title": "[Vietsub/Pinyin] Thất Phu Sơn Quỷ (匹夫山鬼) - Khô Dã Band (枯野乐队)",
2356 | "link": "https://www.youtube.com/watch?v=DKafjEII3MU"
2357 | },
2358 | {
2359 | "title": "夏婉安 - 習慣『最怕沒有結果的拉扯....』【動態歌詞Lyrics】",
2360 | "link": "https://www.youtube.com/watch?v=P2DRc-94INo"
2361 | }
2362 | ]
--------------------------------------------------------------------------------
/img/2023-10-25-10-00-59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-10-25-10-00-59.png
--------------------------------------------------------------------------------
/img/2023-10-25-10-01-21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-10-25-10-01-21.png
--------------------------------------------------------------------------------
/img/2023-10-25-10-03-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-10-25-10-03-47.png
--------------------------------------------------------------------------------
/img/2023-10-27-10-09-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-10-27-10-09-17.png
--------------------------------------------------------------------------------
/img/2023-11-02-10-00-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-11-02-10-00-32.png
--------------------------------------------------------------------------------
/img/2023-11-03-14-44-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-11-03-14-44-41.png
--------------------------------------------------------------------------------
/img/2023-12-08-16-03-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2023-12-08-16-03-28.png
--------------------------------------------------------------------------------
/img/2024-05-15-14-03-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2024-05-15-14-03-09.png
--------------------------------------------------------------------------------
/img/2024-05-17-15-08-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/img/2024-05-17-15-08-12.png
--------------------------------------------------------------------------------
/main.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | import uvicorn
4 | from fastapi import FastAPI
5 | from fastapi.responses import JSONResponse
6 | from fastapi.templating import Jinja2Templates
7 |
8 | from chatgpt_linebot.urls import line_app
9 |
10 | app = FastAPI()
11 |
12 | templates = Jinja2Templates(directory="templates")
13 |
14 | app.include_router(line_app)
15 |
16 |
17 | @app.get("/", response_class=JSONResponse)
18 | async def home() -> JSONResponse:
19 | """Home Page
20 |
21 | Returns:
22 | JSONResponse: Hello World!
23 | """
24 | message = {"stauts": "success", "message": "Hello World!"}
25 | return JSONResponse(content=message)
26 |
27 |
28 | if __name__ == "__main__":
29 | # Local WSGI: Uvicorn
30 | port = int(os.getenv("PORT", 8090))
31 | uvicorn.run(
32 | "main:app",
33 | host="0.0.0.0",
34 | port=port,
35 | workers=4,
36 | log_level="info",
37 | access_log=True,
38 | use_colors=True,
39 | reload=True,
40 | )
41 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.poetry]
2 | name = "chatgpt-line-bot"
3 | version = "0.1.0"
4 | description = ""
5 | authors = ["hs_junxiang "]
6 | readme = "README.md"
7 | # packages = [{include = "chatgpt_line_bot"}] # replit
8 |
9 | [tool.poetry.dependencies]
10 | python = "^3.8"
11 | uvicorn = "^0.23.2"
12 | fastapi = "^0.104.0"
13 | g4f = "*"
14 | line-bot-sdk = "^3.5.0"
15 | requests = "^2.31.0"
16 | bs4 = "^0.0.1"
17 | icrawler = "^0.6.7"
18 | python-dotenv = "^1.0.0"
19 | nest_asyncio = "*"
20 | pillow = "*"
21 | jinja2 = "*"
22 | lxml = "^5.2.2"
23 | serpapi = "^0.1.5"
24 | google-search-results = "^2.4.2"
25 | cloudscraper = "^1.2.71"
26 |
27 | [build-system]
28 | requires = ["poetry-core"]
29 | build-backend = "poetry.core.masonry.api"
30 |
--------------------------------------------------------------------------------
/static/images/2025-01-02-10-18-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/static/images/2025-01-02-10-18-10.png
--------------------------------------------------------------------------------
/static/images/2025-02-11-16-16-27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/static/images/2025-02-11-16-16-27.png
--------------------------------------------------------------------------------
/static/images/2025-02-11-16-26-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/static/images/2025-02-11-16-26-05.png
--------------------------------------------------------------------------------
/static/images/2025-02-11-17-27-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lin-jun-xiang/chatgpt-line-bot/85b0f304c4368a42ded5fffa752cb4e2764598cb/static/images/2025-02-11-17-27-24.png
--------------------------------------------------------------------------------